20120615_침해사고 웹로그 분석2

Download Report

Transcript 20120615_침해사고 웹로그 분석2

교육자료
▶ 이글루컨소시엄(2012) -> 16.내부교육 -> 0615
-
Logparser 2.2.msi
LPS.zip
웹로그.zip
침해사고 웹로그 분석 2.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 이상 필요함
2. 로그 Format 분석
▶NCSA Log Format
NCSA 계열 웹 서버에서 사용하는 로그 형식
- CLF(Common Logfile Format)라고도 함
- 웹 서버 벤더들이 표준으로 채용하고 있음
- 일반적인 Apache 웹 서버의 로그 형식
-
2. 로그 Format 분석
▶NCSA Log Format Fields
Apache http.conf
Logparser
Description
%h
RemoteHostName
%l
-
%u
UserName
인증에 사용되는 사용자 정보(계정 등)
%f
DateTime
웹 페이지를 요청한 날짜와 시간정보
\"%r\"
Request
%>s
StatusCode
%b
BytesSent
\"%{Referer}i\"
Referer
\"%{User-agent}i\"
User-Agent
클라이언트의 IP주소
로그에서 마이너스 기호(-)를 나타내며, 특별한 정보가 없는 경우
클라이언트가 요청한 HTTP 메소드, URI, 파라미터, HTTP 버전
HTTP 응답코드
서버가 클라이언트에서 전송한 bytes 용량
경유지 정보
클라이언트의 웹 브라우저 정보
3. 로그 분석 실습
▶ HTTP Status 에러 코드 쿼리
- LPS -> Ctrl + N(새로운 query tab 생성)
- HTTP Status Code가 200 ~ 500 중에서 클라이언트가 접근한 리소스중 php 문자가 포
함된 로그
SELECT
RemoteHostname, /* 클라이언트 IP*/
DateTime,
/* 웹페이지를 요청한 날짜, 시간 */
Request,
/* 클라이언트가 요청한 HTTP 메소드, URI, 파라미터, HTTP 버전 */
StatusCode,
/* HTTP 응답 코드 */
COUNT(*) AS Total
INTO '[OUTFILEPATH]\HTTP_Status.csv'
/* 쿼리 결과 저장파일 */
FROM '[LOGFILEPATH]'
/* 분석하고자 하는 로그파일 위치 */
WHERE StatusCode <= 500
/* HTTP code 200 ~ 500까지 */
AND (Request LIKE ‘%php%')
/* php 문자가 들어가는 리소스 */
GROUP BY RemoteHostName, DateTime, Request, StatusCode
3. 로그 분석 실습
3. 로그 분석 실습
3. 로그 분석 실습
▶ NCSA vs IISW3C
NCSA
IISW3C
3. 로그 분석 실습
▶ HTTP 메소드 추출 쿼리
-
GET , POST, PUT 등
SELECT
RemoteHostname,
DateTime,
Request,
StatusCode,
COUNT(*) AS Total
INTO '[OUTFILEPATH]\HTTP_Status.csv'
FROM '[LOGFILEPATH]'
WHERE StatusCode <= 500
/* HTTP code 200 ~ 500까지 */
AND Request LIKE ‘%php%‘ AND Request LIKE ‘POST%’
/* php, POST */
GROUP BY RemoteHostName, DateTime, Request, StatusCode
3. 로그 분석 실습
▶ HTTP 메소드 추출 쿼리
3. 로그 분석 실습
▶ 파라메터 쿼리 추출
-
? 이후로 구분되는 파라메터
SELECT
RemoteHostname,
DateTime,
Request,
StatusCode,
COUNT(*) AS Total
INTO '[OUTFILEPATH]\HTTP_Status.csv'
FROM '[LOGFILEPATH]'
WHERE StatusCode <= 500
/* HTTP code 200 ~ 500까지 */
AND Request LIKE ‘%php%‘ AND Request LIKE ‘%?%’
/* php, 파라메터 */
GROUP BY RemoteHostName, DateTime, Request, StatusCode
3. 로그 분석 실습
▶ URI 쿼리 추출
3. 로그 분석 실습
▶ LPS Batch Manager
-
여러 개의 쿼리문을 한번에 실행
3. 로그 분석 실습
▶ LPS Batch Manager
실행
3. 로그 분석 실습
▶ LPS Batch Manager
3. 로그 분석 실습
▶UTF-8 Decoding 함수 – UNESCAPE()
SELECT
RemoteHostname,
DateTime,
UNESCAPE(Request),
StatusCode,
COUNT(*) AS Total
INTO '[OUTFILEPATH]\HTTP_Status.csv'
FROM '[LOGFILEPATH]'
WHERE StatusCode <= 500
/* HTTP code 200 ~ 500까지 */
AND Request LIKE ‘%php%‘ AND Request LIKE ‘%?%’
/* php, 파라메터 */
GROUP BY RemoteHostName, DateTime, Request, StatusCode
3. 로그 분석 실습
▶UTF-8 Decoding 함수 – UNESCAPE() 사용전
3. 로그 분석 실습
▶UTF-8 Decoding 함수 – UNESCAPE() 사용후
3. 로그 분석 실습
▶ Logparser 관련 사이트
-
http://technet.microsoft.com/en-us/library/ee692660.aspx
http://logparserplus.com/Examples
http://mlichtenberg.wordpress.com/2011/02/03/log-parserrocks-more-than-50-examples/
4. 전세계 웹 서버 현황
▶ 웹 서버 시장 현황
감사합니다