Firewalking je technika, která umožňuje sbírat informace o pravidlech firewallu, případně o otevřených portech systému za firewallem. Představte si situaci, kdy znáte počet přeskoků mezi Vámi a firewallem. Pak postupně vytváříte IP pakety s TTL o jedna větší, než je zjištěný počet přeskoků a adresujete systémy za firewallem pomocí zvolených portů. Firewall IP paket buď zahodí a nebo propustí, ale v zápětí mu vyexpiruje TTL. Pokud se vrátila ICMP zpráva o vypršení TTL, pak známe původní IP paket a máme kompletní informaci o TCP/UDP portu, který je na firewallu povolen.

Pokud byste si tuto techniku chtěli vyzkoušet, navštivte náš hacking kurz 0x1 Nmap skenování počítačů na síti, kde si vyzkoušíte práci s nástrojem firewalk. Následující příklady demonstrují jeho použití.

Identifikujeme firewall

Předpokládejme, že jsme na interní síti a máme adresu 10.10.0.2. Adresa webserveru, který budeme testovat má IP adresu 10.80.0.1. Použijeme nástroj traceroute a pokusíme se zjistit, jak je od nás webserver 10.80.0.1 daleko.

Z výpisu vidíme, že první a poslední systém, který mezi námi a webserverem 10.80.0.1 odpověděl, je systém s IP adresou 10.10.0.6. Další odpovědi nedorazily nebo jsou blokovány. Z toho můžeme usoudit, že prvek 10.10.0.6 nebo jeho soused je firewall.

Studenti hacking kurzů hackerlabu vědí, že linuxová varianta traceroute používá kombinaci IP_TTL s transportním protokolem UDP a inkrementuje cílové UDP porty v každé žádosti. Náš test selhal pravděpodobně tím, že na firewall přišel UDP paket se zakázaným cílovým portem. Existuje metoda, která umožňí propočítat a nastavit první IP paket s UDP portem podle potřeb, ale jsme lenivý a vyzkoušíme raději traceroute s variantou dotazu TCP na port 80, která musí v případě webserveru projít. Z následujícího výpisu máme jasno, prvek s IP adresou 10.10.0.6 je skutečně firewall, protože cílový webserver je ihned za ním.

Nástroj firewalk

Nyní přišel čas na test nástroje firewalk, seznámíme se nejdříve s jeho nápovědou, abychom znali syntaxi zadávání parametrů.

Z nápovědy vidíme, že za volitelnými přepínači následuje IP adresa firewallu (target_gateway) a pak IP adresa cíle (metric). Pokusíme se detekovat otevřené TCP porty na firewallu (10.10.0.6) a adresujeme cílový webserver (10.80.0.1). Pakety pro první detekci přeskoků a stanovení TTL+1 budou používat protokol TCP s portem 80 (-p tcp -d 80) a z edukativních důvodu omezíme počet zkoumaných portů při průchodu firewallem (-S 20,21,22,80,443,8080). Poslední parameter (-n) vypíná překlad doménových jmen. Nyní můžeme spustit nástroj firewalk.

Všimněte si hlášení „Binding host reached“, to znamená, že si nástroj ošahal zvolený firewall a přistupuje k mapování portů. Výstup nástroje firewalk ukazuje, že na firewallu jsou otevřeny TCP porty 22 a 80. U výpisu otevřených portů je v závorce skryta důležitá informace. Pokud je u otevřeného portu napsáno listen, tak původní paket dorazil až na port adresovaného serveru, kde poslouchá služba. V případě, že je v závorce napsáno expired, znamená to, že firewall komunikaci propustil, ale paket expiroval po cestě k cíli.

Závěr

Ukázali jsme si techniku firewalkingu a použití nástroje firewalk. Více informací naleznete na stránkách projektu firewalk a v dokumentu

To je pro dnešek vše. Zvažujete-li cestu etického hackera od začátku, rád uvidím na hacking kurzech.