Hlavní navigace

Sbíráme otisky: pasivní p0f

Petr Krčmář

Dnes dokončíme náš seriál tím, že si představíme zástupce software, který provádí pasivní fingerprinting. Seznamte se s kvalitním skenerem p0f.

Co p0f umí?

Pasivní fingerprint jsme si už popisovali. Jeho výhodou je zejména nulová možnost odhalení a rychlost. Dalším pozitivem je bezproblémový průchod přes všemožné firewally a NAT. Pokud projde standardní spojení (řekněme klasický http protokol), projde i p0f.

Nevýhodou je samozřejmě nižší přesnost informací, které získáme. Přece jen má skener mnohem méně informací a musí vycházet z toho, co mu vzdálený počítač sám řekne. Na druhou stranu ale může druhá strana pokusy o scan detekovat a mařit, takže Nmap prostě neuspěje. V tu chvíli je čas právě na p0f.

p0f (domovská stránka) je ovšem víc než jen obyčejný sběrač otisků, ale i v tomto módu toho umí skutečně hodně. Umí skenovat stroje, které:

  • se připojují k vám (SYN mód)
  • kontaktujete vy (SYN+ACK mód)
  • se vám nedaří kontaktovat (RST+ mód)
  • spolu komunikují a vy je sledujete

Jak jsem naznačil, umí toho ovšem ještě mnohem víc a dokáže detekovat další prvky na síti:

  • firewally, NAT
  • přítomnost traffic shapingu
  • vzdálenost počítače na druhé straně
  • další prvky jako DSL, OC3 atd.

Při všech těchto detekcích nevytváří žádný tok navíc, samostatně prostě neodesílá jediný paket. Veškerá detekce tedy probíhá na úrovni odposlouchávání komunikace. I na tu je možno aplikovat mnoho známých detekčních metod.

Jak se to používá?

Velmi jednoduše. Pro základní použití stačí jako root spustit program bez parametrů a pak se libovolným způsobem připojovat ke vzdáleným strojům. Ping nestačí, protože při něm nedochází k handshake a navázání plného TCP spojení. Klidně ale můžete do prohlížeče zadat nějakou pěknou adresu.

Abyste pochopili, jak funguje handshake (čili potřesení rukou), zopakujeme si celý postup:

  1. Volající nejprve pošle volanému paket s nasteveným SYN flagem a informací o vlastní hodnotě ISN.
  2. Volaný zpět odpoví druhým paketem s flagy SYN a ACK a opět s vlastním ISN.
  3. Poslední paket pošle opět volající, nastaví mu ACK a povrdí ISN volaného tím, že jej zvýší o jedna.

Tím proběhlo potřesení rukou, oba stroje provedly celou sekvenci správně a může se vesele komunikovat. Už při tomto procesu jsme dostali paket z druhé strany a můžeme jej prozkoumat.

V případě, že do prohlížeče napíšete www.root.cz, se například od p0f dozvíte toto:

# p0f

p0f - passive os fingerprinting utility, version 2.0.4
(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>
p0f: listening (SYN) on 'eth0', 223 sigs (12 generic), rule: 'all'.
192.168.1.1:33990 - Linux 2.4/2.6 (up: 961 hrs)
  -> 81.31.5.18:80 (distance 13, link: ethernet/modem)
192.168.1.1:33998 - Linux 2.4/2.6 (up: 2541 hrs)
  -> 81.31.5.12:80 (distance 13, link: ethernet/modem) 

Vidíte, že došlo ke spojení na stroj s Linuxem (překvapivě) na adrese 81.31.5.18, což je stroj, který se stará o posílání obsahu našeho serveru. Druhý počítač patří službě NAVRCHOLU.cz a načítá se z něj neviditelný obrázek, který nám pomáhá vytvářet statistiky. Vidíte, že se tak můžete dozvědět řadu zajímavých informací a sledovat komunikaci.

V případě, že chcete rozšířit výpisy nebo je pozměnit, můžete použít některý z parametrů. Popíšeme si jen ty nejdůležitější:

  • r – překládá IP adresy na doménové názvy
  • M – spustí detekci maškarády
  • A – použije SYN+ACK mód
  • R – použije RST/RST+ACK mód
  • p – přepne kartu do promiscuous módu .-)
  • d – beží na pozadí jako démon
  • l – výpis jen na jednu řádku (užitečné pro další zpracování)

Ještě se zastavím u parametru p. Jak jsem napsal, přepne kartu do promiscuous módu. To znamená, že přes příslušné rozhraní pak k systému projde veškerá komunikace, která proletí kolem. Pokud máte na síti HUB nebo se vám podaří „ukecat” switch tak, aby propouštěl i cizí pakety, můžete sledovat veškerý provoz a zjišťovat informace o všem, co komunikuje.

Další výpisy

Nechal jsem p0f otestovat další stroje na síti, abyste viděli, jak to chodí:

192.168.1.1:1078 - Windows 2000 SP2+, XP SP1 (seldom 98 4.10.2222)
  -> 192.168.1.4:139 (distance 0, link: ethernet/modem)

192.168.1.1:2053 - FreeBSD 4.7-5.2 (or MacOS X 10.2-10.3) (1) (up: 1284 hrs)
  -> 192.168.1.57:80 (distance 0, link: ethernet/modem) 

Závěrem

Jak vidíte, dokáže i pasivní fingerprinting přijít na spoustu informací a pomoci vám zorientovat se ve vlastní nebo cizí síti. Hledání maškarády se může hodit zejména ve chvíli, kdy potřebujete zjistit, zda si ve vaší síti nikdo nehraje nebo nepřipojuje něco, co by něměl. Můžete tak objevit třeba nějaký BarákNet připojený přes vaši firemní WiFinu. Ale o tom až někdy jindy.

Našli jste v článku chybu?