fingerprinting(p0f)
■ Package Description
네트워크 상에 흐르는 패킷을 덤프하여, 분석하는 과정에서 해당 IP를 추적하다 보면 IP에서
운영하는 서비스는 어떠한 시스템 에서 운영하고 있는지에 대한 정보를 파악해야 하는 경우가
발생한다. 이럴 때 사용하는 것 이 Fingerprint이다.
모의해킹이나, 해커가 공격하기 전에 정보를 수집하는 단계에서 많이 사용되며
Fingerprint를 검색해 보면 본래의 뜻은 '지문'이다. 하지만 여기서의 의미는
네트워크상에 흐르는 패킷의 특징적인 정보들을 추출해 내는 것 을 의미한다.
- 바닐라 TCP 연결의 양 끝점에서 운영 체제와 소프트웨어를 매우 확장 가능하고 매우 빠르게 식별합니다. 특히 NMap 프로브가 차단되거나 너무 느리거나 신뢰할 수 없거나 단순히 경보를 설정하는 설정에서는 더욱 그렇습니다.
- 시스템 가동 시간 및 네트워크 연결, 거리 (NAT 또는 패킷 필터 뒤의 토폴로지 포함), 사용자 언어 기본 설정 등을 측정합니다.
- 연결 공유 / NAT,로드 균형 조정 및 응용 프로그램 수준 프록 싱 설정의 자동화 된 탐지
- X-Mailer 또는 User-Agent와 같은 선언문을 위조하는 클라이언트 및 서버 검색
[사용방법]
syntax : p0f -i <interface name> -p
# p0f -i eth0 -p
# p0f -i eth0 -p -o /tmp/p0f.log
참조 사이트
http://lcamtuf.coredump.cx/p0f3/
https://www.youtube.com/watch?v=0I1D5SsMbOU
■ OPTIONS
# p0f -h
# p0f -h--- p0f 3.06b by Michal Zalewski <lcamtuf@coredump.cx> --- ./p0f: invalid option -- 'h' Usage: p0f [ ...options... ] [ 'filter rule' ] Network interface options: -i iface - listen on the specified network interface -r file - read offline pcap data from a given file -p - put the listening interface in promiscuous mode -L - list all available interfaces
Operating mode and output settings: -f file - read fingerprint database from 'file' (p0f.fp) -o file - write information to the specified log file -s name - answer to API queries at a named unix socket -u user - switch to the specified unprivileged account and chroot -d - fork into background (requires -o or -s) Performance-related options: -S limit - limit number of parallel API connections (20) -t c,h - set connection / host cache age limits (30s,120m) -m c,h - cap the number of active connections / hosts (1000,10000) Optional filter expressions (man tcpdump) can be specified in the command line to prevent p0f from looking at incidental network traffic. Problems? You can reach the author at <lcamtuf@coredump.cx>. |
[EX] 사용 예제
# p0f -i eth0 -p -o /tmp/p0f.log --- p0f 3.07b by Michal Zalewski <lcamtuf@coredump.cx> --- [+] Closed 1 file descriptor. [+] Loaded 320 signatures from 'p0f.fp'. [+] Intercepting traffic on interface 'eth0'. [+] Default packet filtering configured [+VLAN]. [+] Log file '/tmp/p0f.log' opened for writing. [+] Entered main event loop. .-[ 192.168.1.15/35834 -> 173.246.39.185/873 (syn) ]- | | client = 192.168.1.15/35834 | os = Linux 2.2.x-3.x | dist = 0 | params = generic | raw_sig = 4:64+0:0:1460:mss*20,10:mss,sok,ts,nop,ws:df,id+:0 |
- i 네트워크 인터페이스 지정
- p 무차별 모드
- o 결과를 파일로 저장
[실습] 네트워크 스니핑
@Kali Linux
터미널 및 브라우저 실행
[그림 1-1 사전준비단계]
인터페이스 검색
# p0f -L (that is not 0 or o that is number zero)
--- p0f 3.07b by Michal Zalewski <lcamtuf@coredump.cx> --- -- Available interfaces -- 0: Name : eth0 Description : - IP address : 192.168.10.50 1: Name : eth1 Description : - IP address : 192.168.20.50 2: Name : any Description : Pseudo-device that captures on all interfaces IP address : (none) 3: Name : lo Description : - IP address : 127.0.0.1 |
유효한 인터페이스 eth0 이라는걸 알 수 있다.
p0f 툴 실행(Listening 상태)
syntax : p0f -i <interface name> -p(promiscious)
# p0f -i eth0 -p(eth0 인터페이스 지정)
--- p0f 3.07b by Michal Zalewski <lcamtuf@coredump.cx> --- [+] Closed 1 file descriptor. [+] Loaded 320 signatures from 'p0f.fp'. [+] Intercepting traffic on interface 'eth0'. [+] Default packet filtering configured [+VLAN]. [+] Entered main event loop.
|
이제 브라우저를 통해 트래픽이 발생하면 p0f에 출력 됩니다.
브라우저 실행 후 p0f 터미널 확인
http:www.daum.net
root@kali:~# p0f -i eth0 -p --- p0f 3.07b by Michal Zalewski <lcamtuf@coredump.cx> --- [+] Closed 1 file descriptor. [+] Loaded 320 signatures from 'p0f.fp'. [+] Intercepting traffic on interface 'eth0'. [+] Default packet filtering configured [+VLAN]. [+] Entered main event loop. .-[ 192.168.10.50/45336 -> 183.110.25.181/80 (syn) ]- | | client = 192.168.10.50/45336 | os = Linux 3.11 and newer | dist = 0 | params = none | raw_sig = 4:64+0:0:1460:mss*20,7:mss,sok,ts,nop,ws:df,id+:0 | `---- .-[ 192.168.10.50/45336 -> 183.110.25.181/80 (mtu) ]- | | client = 192.168.10.50/45336 | link = Ethernet or modem | raw_mtu = 1500 | `---- ..................(중략)........................................... .-[ 192.168.10.50/43574 -> 103.27.148.70/80 (syn+ack) ]- | | server = 103.27.148.70/80 | os = ??? | dist = 0 | params = none | raw_sig = 4:128+0:0:1460:mss*44,0:mss::0 | `---- .-[ 192.168.10.50/43574 -> 103.27.148.70/80 (mtu) ]- | | server = 103.27.148.70/80 | link = Ethernet or modem | raw_mtu = 1500 | `---- .-[ 192.168.10.50/57896 -> 180.70.134.139/80 (mtu) ]- | | server = 180.70.134.139/80 | link = Ethernet or modem | raw_mtu = 1500 | `---- .-[ 192.168.10.50/36824 -> 183.110.25.168/80 (http request) ]- | | client = 192.168.10.50/36824 | app = Firefox 10.x or newer | lang = English | params = none | raw_sig = 1:Host,User-Agent,Accept=[image/png,image/*;q=0.8,*/*;q=0.5],Accept-Language=[en-US,en;q=0.5],Accept-Encoding=[gzip, deflate],?Referer,Connection=[keep-alive]:Accept-Charset,Keep-Alive:Mozilla/5.0 (X11; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0 Iceweasel/43.0.4 | `---- |
트래픽 확인 결과 많은 패킷이 출력되었다.
source ip 와 destination IP 를 확인할 수 있고
서버의 IP및 사용된 포트, 서비스에 대한 OS를 확인할 수 있고
디바이스의 가동시간 과 연결 방식 등 여러가지 정보를 출력한다.
통상적으로 해킹을 하기 전 footprint 단계에서 타겟 서비스의 정보를 파악하기 위해 사용하며
mitm 및 ssl 스트립과 함께 사용하면 더 많은 정보를 얻을 수 있다.
출발지 ip의 포트가 변하는걸 확인 할 수 있는데
-p 옵션을 지정하면 자신의 주소값을 무시하고 모든 패킷을 받아들이는 상태로 동작한다.
[그림 1-2 출처: 안랩]
[참고] footprint
공격대상 범위를 정하고 해당 대상의 정보를 모으는 방법
[참고] nmap 과의 차이점
nmap은 Active 한 것이고
p0f는 passive OS fingerprinting으로 수동적인 스니핑 툴 이다.
passive한 경우 추가 또는 비정상적 트래픽을 생성하지 않는 것이 특징이다. 즉
정상적인 통신을 하면서 타겟 시스템의 OS를 확인할 수 있다.
파일로 저장하기 (# p0f -i eth0 -p -o /root/바탕화면/daum.log)
[그림 1-3 Listening상태로 기동중인 상태]
'Learning > └Kali Linux' 카테고리의 다른 글
[Forensics Tools] pdfid (0) | 2017.01.11 |
---|---|
[Forensics Tools] pdf-parser (0) | 2017.01.11 |
[Forensics Tools] iPhone Backup Analyzer (0) | 2017.01.11 |
[Forensics Tools] Guymager (0) | 2017.01.11 |