20120521_침해사고 웹로그 분석

Download Report

Transcript 20120521_침해사고 웹로그 분석

교육자료
▶ 이글루컨소시엄(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
Field
Date
Time
Client IP Address
User Name
Service Name
Server Name
Server IP Address
Server Port
Method
URI Stem
URI Query
Protocol Status
Win32® Status
Bytes Sent
Bytes Received
Time Taken
Protocol Version
Host
User Agent
Cookie
Referrer
Appears As
date
time
c-ip
cs-username
s-sitename
s-computername
s-ip
s-port
cs-method
cs-uri-stem
cs-uri-query
sc-status
sc-win32-status
sc-bytes
cs-bytes
time-taken
cs-version
cs-host
cs(User-Agent)
cs(Cookie)
cs(Referer)
Description
작업이 발생한 날짜
작업이 발생한 시간(UTC 기본)
서버에 액세스한 클라이언트의 IP
서버에 액세스한 인증된 사용자 이름
클라이언트가 액세스한 인터넷 서비스 및 인스턴스 번호
로그 항목을 생성한 서버의 이름
로그 항목을 생성한 서버의 IP
클라이언트가 연결된 포트 번호
클라이언트가 수행하려고 시도한 작업(예: GET, POST 메소드)
클라이언트가 액세스한 리소스(예: Default.htm)
클라이언트가 수행하려고 시도한 쿼리(있는 경우)
작업 상태(HTTP 200, 400 code 등)
작업 상태(Microsoft Windows에서 사용되는 용어)
서버가 보낸 바이트 수
서버가 받은 바이트 수
작업베 걸린 시간(밀리초 단위)
클라이언트가 사용한 프로토콜 버전(HTTP 1.0, 1.1)
호스트 헤더의 내용
클라이언트에서 사용한 브라우저
보내거나 받은 쿠키의 내용
사용자가 방문한 이전사이트
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. 로그 분석 실습
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