12.1 본문
- Initial packet size (16 bits)
- Initial TTL (8 bits)
- Window size (16 bits)
- Max segment size (16 bits)
- Window scaling value (8 bits)
- "don't fragment" flag (1 bit)
- "sackOK" flag (1 bit)
- "nop" flag (1 bit)
패킷정보로 원격지 시스템의 운영체제를 추정한다 - p0f
패킷 분석을 하는 과정에서 IP 를 추적하다 보면, 이 IP 에서 운영하는 서비스는 어떤 시스템하에서 운영하는지 정보를 알아야 하는 경우가 있다. 분석하는 과정에서 운영체제 정보가 도움이 된다면 말이다.
이럴때 사용할 수 있는것이 Fingerprint 방식이다. 이 단어의 뜻만 보면 '지문'이라는 것이다. 즉, 네트워크 상에서 갖는 각 특성, 지문이라고 할 수 있는 이 정보들을 이용하여 정보들을 추측하는 것이다.
어떻게 이런것이 가능할까? 운영체제 마다 네트워크 통신 과정에서 사용되는 각 값들이 약간씩 차이를 가지고 있고, 바로 이런 정보를 이용하는 것이다. TCP/IP Fingerprinting 의 경우 다음의 값들이 이용된다:
즉, 이런 정보가 사전 정의된 정보를 이용하여 추정할 수 가 있는 것이다. 여러가지 도구들이 있는데, 대표적인 것은 스캐너로 많이 이용하는 nmap 도 있다. 오늘은 p0f 라는 도구를 소개할 것이다. 다운로드는 다음의 경로에서 할 수 있다: (윈도우 환경에서도 cygwin 을 이용하면 사용 가능하다)
사용방법은 간단하다. 기본적으로 옵션없이 실행하면, 기본 인터페이스에서 흐르는 트래픽을 검증하여 보여준다. 이렇게 되면 너무나 많은 정보가 나타나므로 필터를 사용하여 제한을 할 수가 있다. 이 필터는 tcpdump 에서 사용하는 스타일의 것과 같다 ( 와이어샤크에서는 출력필터가 아닌 캡쳐 필터와 같다)
아래 옵션은 인터페이스 eth0 에서 호스트 주소가 192.168.115.5 번으로 필터를 한 것이다.
# p0f -i eth0 ip host 192.168.115.5
p0f - passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>
p0f: listening (SYN) on 'eth0', 262 sigs (14 generic, cksum 0F1F5CA2), rule: 'ip'.
192.168.115.5:3464 - Windows 2000 SP4, XP SP1+
-> 192.168.115.3:22 (distance 0, link: ethernet/modem)
해당 IP 의 운영체제가 윈도우 2000 SP4 또는 XP SP1 이상이라고 표시를 하였다. 이렇게 탐지된 정보는 아래와 같은 룰이 있기 때문이다.
65535:128:1:48:M*,N,N,S:.:Windows:2000 SP4, XP SP1+
각 의미는 무엇일까? p0f 를 설치한 파일에 이런 Fingerprint 정보가 있는데, 파일을 열어보면 아래와 같이 포맷형태를 볼 수 있다. ( /etc/p0f 에서 p0fa.fp , p0f.fp , p0fr.fp 파일을 볼 수 있다)
# Fingerprint entry format:
#
# wwww:ttt:D:ss:OOO...:QQ:OS:Details
#
# wwww - window size (can be * or %nnn or Sxx or Txx)
# "Snn" (multiple of MSS) and "Tnn" (multiple of MTU) are allowed.
# ttt - initial TTL
# D - don't fragment bit (0 - not set, 1 - set)
# ss - overall SYN packet size (* has a special meaning)
# OOO - option value and order specification (see below)
# QQ - quirks list (see below)
# OS - OS genre (Linux, Solaris, Windows)
# details - OS description (2.0.27 on x86, etc)
즉, 위 정보를 요약해 보면 윈도우 사이즈는 65535 이고, TTL 값은 128 Framgement 값이 셋팅되어 있고 SYN 패킷 사이즈는 48 바이트라는 것이다. 막상 각 포맷을 알아보면 이렇게 간단하다.
탐지된 패킷을 세부적으로 한번 살펴보자.
80 번포트로 전달된 SYN 패킷이고 패킷길이, TTL, Fragment 값등을 보면 사전에 정의된 룰 파일과 동일하다.
운영체제마다 다른 이전 정보들만 알 수 있다면 대략적으로 추정이 가능하다는 것이다. 하지만, 이 정보만으로 100% 추정할 수는 없다. 그렇기 때문에 이 정보만을 믿고 확신해서는 안된다. 그래도 큰 관점에서 윈도우나, 리눅스 등 넓은 관점에서는 대략 생각해 볼 수 있다.
다음은 윈도우 7에서 탐지된 정보이다. 하지만, p0f 에서 탐지되는 것은 Windows XP/2000 이다.
192.168.0.220:50879 - Windows XP/2000 (RFC1323+, w+, tstamp-) [GENERIC]
Signature: [8192:128:1:52:M1460,N,W8,N,N,S:.:Windows:?]
-> 192.168.0.223:23 (distance 0, link: ethernet/modem)
192.168.0.220:50879 - Windows XP/2000 (RFC1323+, w+, tstamp-) [GENERIC]
Signature: [8192:128:1:52:M1460,N,W8,N,N,S:.:Windows:?]
-> 192.168.0.223:23 (distance 0, link: ethernet/modem)
192.168.0.220:50879 - Windows 2000 SP2+, XP SP1+ (seldom 98)
-> 192.168.0.223:23 (distance 0, link: ethernet/modem)
어떤식으로 TCP/IP Fingerprinting 이 되는지 대략 이해는 되었을 것이라 믿는다. 이런 정보를 활용하면 네트워크 포렌직을 하는데 도움이 될 것이다.
포트스캔 유형
http://isstory83.tistory.com/14
Burp Suite와 firefox proxy
GET, POST 공격의 필터링은 서버에서 하는 것이 좋다
브라우저단에서 javascript로 check하는 것은 전달해야하고 소스가 공개됌(?) 서버단에서는 코드 공개될 상황 없음
하지만 서버 과부하 때문에 javascript로 check를 많이 함(?)
'Study > KITRI' 카테고리의 다른 글
12.12-14 오버플로우 (0) | 2017.06.11 |
---|---|
Oracle DB 기본 (0) | 2017.06.11 |
무선 해킹 (0) | 2017.06.11 |
칼리 한글세팅 (0) | 2017.06.11 |
11.24-25 (0) | 2017.06.11 |