250 likes | 600 Views
침해사고 Web Log 분석. 교육자료 . ▶ 이글루컨소시엄 (2012) -> 16. 내부교육 -> 0521 Logparser 2.2.msi LPS.zip 천안로그 . zip 침해사고 웹로그 분석 . pptx .net framework 4.0( .net framework 미설치 PC). 1. 로그 분석 준비. ▶ 로그 분석 도구 1 Log parser 2.2 마이크로소프트에서 제공하는 SQL 기반의 로그분석 유틸리티
E N D
교육자료 ▶ 이글루컨소시엄(2012) -> 16.내부교육 -> 0521 • Logparser 2.2.msi • LPS.zip • 천안로그.zip • 침해사고 웹로그 분석.pptx • .net framework 4.0(.net framework 미설치PC)
1. 로그 분석 준비 ▶ 로그 분석 도구 1 • Log parser 2.2 • 마이크로소프트에서 제공하는 SQL 기반의 로그분석 유틸리티 • IIS Log File Input Formats( IISW3C, IIS, BIN, IISODBC, HTTPER, URLSCAN) • Generic Text File Input Formats(CSV, TSV, XML, W3C, NCSA, TEXTLINE, TEXTWORD) • System Information Input Formats(EVT, FS, REG, ADS) • Special-pupose Input Formats(NETMON, ETW, COM)
1. 로그 분석 준비 ▶ 로그 분석 도구 2 • Log parser Studio(LPS) • 마이크로소프트에서 제공하는 GUI 기반의 Log parser SQL query 관리 프로그램 • .Net Framework 3.5 이상 필요함
1. 로그 분석 준비 ▶ Log parser Studio
1. 로그 분석 준비 ▶ Log parser Studio
1. 로그 분석 준비 ▶ Log parser Studio 환경설정 • 로그 query 결과 저장 • Option > Preferences > Default Output Path
1. 로그 분석 준비 ▶ Log parser Studio 환경설정 • 분석할 로그 파일 위치 • Log File Manager 실행
2. 로그 Format 분석 ▶IISW3C(W3C 확장 로깅) • Microsoft Internet Information Server (IIS) 4.0, 5.0, 6.0 and 7.0 • 대부분의 IIS에서 사용하는 로그 포맷
2. 로그 Format 분석 ▶IISW3C – Fields
3. 로그 분석 실습 ▶ 천안시립예술단 홈페이지 악성파일 삽입 침해사고
3. 로그 분석 실습 ▶로그 확보 • 침해사고 인지 : 2012년 5월 2일 • 악성파일 수정 날짜 : 2012년 2월 29일 • Zone-h 침해사고 이력 : 2011년 11월 7일 • 2011.9.30 ~ 2012.2.22(126일) • 2012.2.28 ~ 2012.35(7일) • 133개 파일 505MB
3. 로그 분석 실습 ▶ HTTP Status 에러 코드 쿼리 - LPS-> Ctrl + N(새로운 query tab 생성) - HTTP Status Code가 200 ~ 500 중에서 클라이언트가 접근한 리소스중asp 문자가 포함된 로그 SELECT TO_TIMESTAMP( date, time ) as sTimeStamp, /* date, time 2개의 필드를 하나로 합침. */ c-ip as Source, /* 클라이언트 IP */ s-ip as Server, /* 서버 IP */ s-port as server_port, /* 서버 port */ cs-method, /*HTTP GET, POST 등의 메소드*/ cs-uri-stem as Uri, /* 클라이언트가 엑세스한 리소스 */ cs-uri-query, /* 클라이언트가 수행하려고 시도한 쿼리 */ sc-status as HttpStatus, /* HTTP Status code */ COUNT(*) AS Total INTO '[OUTFILEPATH]\HTTP_Status.csv' /* 쿼리 결과 저장파일 */ FROM '[LOGFILEPATH]' /* 분석하고자 하는 로그파일 위치 */ WHERE HttpStatus <= 500 /* HTTP code 200 ~ 500까지 */ AND (cs-uri-stem LIKE '%asp%') /* asp 문자가 들어가는 리소스 */ GROUP BY sTimeStamp, Source, Server, server_port, cs-method, Uri, cs-uri-query, HttpStatus
3. 로그 분석 실습 ▶ HTTP Method 분석 • .CSV 결과를 필터설정 후 cs-method에서 해킹시도로 의심되는 메소드를 확인. • PUT 메소드 취약점을 이용해 웹쉘 업로드를 확인 • 2012-2-28 21:49(UTC+9) 해킹 성공을 알 수 있음
3. 로그 분석 실습 ▶ 해킹 관련 IP가 접근한 모든 리소스 쿼리 SELECT cs-uri-stem, COUNT(cs-uri-stem) as requestcount INTO '[OUTFILEPATH]\58.97.176.163.csv' FROM '[LOGFILEPATH]' WHERE c-ip = '58.97.176.163' /* 해킹 관련 IP */ GROUP BY cs-uri-stem ORDER BY count(cs-uri-stem) desc
3. 로그 분석 실습 ▶ 해킹 관련 IP가 접근한 모든 리소스 쿼리 결과
3. 로그 분석 실습 ▶웹쉘 행위 분석 1 • URI 필드에서 /POWER.asp;.jpg필터 적용
3. 로그 분석 실습 ▶ 웹쉘 행위 분석 2 • URI 필드에서 /Umer.asp;.jpg필터 적용
3. 로그 분석 실습 ▶ 웹쉘 행위 분석 3 • URI 필드에서 /shell.asp;jack.asp;.jpg필터 적용
3. 로그 분석 실습 ▶ asp 웹쉘 이외의 웹쉘 쿼리 • .cer, .asa, .cdx, .hta SELECT TO_TIMESTAMP( date, time ) as sTimeStamp, /* date, time 2개의 필드를 하나로 합침. */ c-ip as Source, /* 클라이언트 IP */ s-ip as Server, /* 서버 IP */ s-port as server_port, /* 서버 port */ cs-method, /*HTTP GET, POST 등의 메소드*/ cs-uri-stem as Uri, /* 클라이언트가 엑세스한 리소스 */ cs-uri-query, /* 클라이언트가 수행하려고 시도한 쿼리 */ sc-status as HttpStatus, /* HTTP Status code */ COUNT(*) AS Total INTO '[OUTFILEPATH]\HTTP_Status.csv' /* 쿼리 결과 저장파일 */ FROM '[LOGFILEPATH]' /* 분석하고자 하는 로그파일 위치 */ WHERE HttpStatus <= 500 /* HTTP code 200 ~ 500까지 */ AND (cs-uri-stem LIKE '%.cer%‘ OR cs-uri-stem LIKE '%.asa%‘ OR cs-uri-stem LIKE '%.cdx%‘ OR cs-uri-stem LIKE '%.hta%‘ ) GROUP BY sTimeStamp, Source, Server, server_port, cs-method, Uri, cs-uri-query, HttpStatus
3. 로그 분석 실습 ▶ SQL Injection 해킹시도 쿼리특징 1. GET 메소드 - GET /login.asp?id=admin&pass=1234 - URL에 데이터를 포함해서 전송 - SQL Injection 관련 문자로 로그 분석 가능 2. POST 메소드 - POST /login.asp - id=admin, pass=1234 데이터가 HTTP body에 포함되서 전송되어 데이터 부분이 로그에 안남음 - HTTP 500 에러 로그와 특정 URL에 대한 지속적인 요 청 횟수로 공격 추측
3. 로그 분석 실습 ▶ SQL Injection 해킹시도 로그 추출 쿼리 1. GET 메소드 -where cs-uri-query LIKE ‘%SQL Injection%’ 2. POST 메소드 - SELECT DISTINCT date, cs-uri-stem, c-ip, Count(*) AS Hits FROM '[LOGFILEPATH]' WHERE cs-uri-stem LIKE '%asp%' GROUP BY date, c-ip, cs-uri-stem HAVING Hits>50 ORDER BY Hits DESC