Ostatnio potrzebowałem czegoś takiego u siebie, więc przy okazji zrobiłem paczkę - może komuś się przyda.
Nad ranem powinien być w
testing.
p0f to prosty i skuteczny program, wykrywający system operacyjny zdalnego hosta w sposób pasywny, a więc - w przeciwieństwie do aktywnych narzędzi (jak np. nmap) - nie generuje żadnego podejrzanego ruchu w sieci. Wykrywanie polega na analizie tzw. fingerprints - czyli charakterystycznych dla danego OS-a bitów w pakietach ACK generowanych przez delikwenta.
Jest też w stanie wykryć OS na podstawie analizy pakietów SYN+ACK lub RST generowanych przez interesującego nas hosta, przy czym ta opcja jest w fazie testów i skuteczność jej działania nie jest powalająca.
Program może analizować pakiety z pliku zapisanego przez tcpdump.
Wynik generowany jest bezpośrednio na standardowe wyjście lub do pliku.
Przykłady p0f w akcji:
# p0f -i eth1 'host 172.16.10.1'
p0f - passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>
p0f: listening (SYN) on 'eth1', 262 sigs (14 generic, cksum 0F1F5CA2), rule: 'host 172.16.10.1'.
172.16.10.1:1300 - Windows 2000 SP4, XP SP1+
-> 172.16.10.30:80 (distance 0, link: ethernet/modem)
# p0f -i eth1 'host 172.16.10.201'
p0f - passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>
p0f: listening (SYN) on 'eth1', 262 sigs (14 generic, cksum 0F1F5CA2), rule: 'host 172.16.10.201'.
172.16.10.201:1134 - Linux 2.4-2.6 (up: 20 hrs)
-> 212.77.100.101:80 (distance 0, link: ethernet/modem)
172.16.10.201:1135 - Linux 2.4-2.6 (up: 20 hrs)
-> 212.77.100.101:80 (distance 0, link: ethernet/modem)
+++ Exiting on signal 2 +++
[+] Average packet ratio: 4.00 per minute.
Strona domowa projektu
W paczce (oprócz "podstawowego" programu
p0f) znajdują się również: skrypt do tworzenia w miarę przejrzystych raportów na podstawie wyjścia generowanego przez p0f oraz programiki do wysyłania pakietów ACK i SYN na konkretny adres i port w celu uzyskania w odpowiedzi pakietów, na podstawie których p0f może zidentyfikować OS - chociaż w takim przypadku nie jest to już wykrywanie pasywne.
Do
testing wrzuciłem też paczkę z manualem do tego -
p0f-man.
Życzę dobrej zabawy