Obsah 1 Úvod...4 1.1 lockdown...4 1.2 Vaše ochrana...4 2 Nmap - první seznámení...5 2.1 O projektu nmap...5 2.2 Manuálové stránky...5 2.3 Klasifikace přepínačů...5 2.4 Výstup do souboru (-oa, -on, -ox, -og)...6 2.5 Potlačení DNS překladu (-n)...6 3 Host discovery - ping probes...6 3.1 Jak přeskočit host discovery (-Pn)...6 3.2 Ping probes bez port skenu (-sn, -sp)...8 3.2.1 Zkoumání s volbou --packet-trace...8 3.3 Definujeme vlastní Ping probe...9 3.4 List sken (-sl) pasivní host discovery přes DNS...9 4 TCP port skeny...10 4.1 Rozsahy portů...10 4.2 TCP SYN scan(-ss)...11 4.3 TCP connect scan (-st)...12 5 Scénáře s firewallem...13 5.1 Mapujeme síť (--traceroute)...13 5.1.1 Traceroute pod lupou...15 5.1.2 Extra úkol...15 5.2 Detekce stavového firewallu...16 5.2.1 TCP ACK sken (-sa) - nestavový firewall...16 5.2.1.1 Pod lupou...17 5.2.2 TCP ACK sken (-sa) - stavový firewall...18 5.2.2.1 Ohodnocení stavu portu (--reason)...18 5.3 TCP skeny FIN, XMAS, NULL a Maimon...19 5.3.1 TCP FIN sken (-sf)...19 5.3.2 TCP Xmas sken (-sx)...20 5.3.3 TCP NULL sken (-sn)...21 5.3.4 TCP Maimon sken (-sm)...22 5.3.5 Vlastní TCP příznaky (--scanflags)...23 5.3.6 TCP Window Size sken (-sw)...24 6 Pokročilé skenovací techniky...25 Petr Juhaňák, lockdown 2013 - Všechna práva vyhrazena, určeno pouze pro osobní potřebu. 2
6.1 FTP bounce sken (-b)...25 6.2 Idle sken (-si)...26 6.2.1 Predikce hodnot id v IP paketech...26 6.2.2 Prostředník (zombie)...26 6.2.3 Podvrh IP adres...27 7 UDP port sken...29 7.1 Primitivní UDP sken (-su)...29 7.2 UDP sken s detekcí služeb (-suv)...32 8 Detekce verzí služeb (-sv)...33 8.1 Intenzita detekce (--version-intensity)...34 8.2 Sledování dotazů (--version-trace)...35 8.3 Databáze dotazů pro detekci služeb...36 8.3.1 Definice dotazů - probes...36 8.3.2 TCP NULL...36 8.3.3 TCP GenericLines...37 8.3.4 TCP GetRequest...37 9 Detekce OS (-O)...38 9.1 OS detekce s port skenem...38 9.2 Verbose mód (-v)...39 9.3 Všechny testy v jednom - přepínač (-A)...40 10 Nmap Scripting Engine (NSE)...41 10.1 Nápověda ke skriptům...41 10.2 Spuštění skriptu...42 11 Závěr...43 12 Příloha 1 Nmap reference...44 Petr Juhaňák, lockdown 2013 - Všechna práva vyhrazena, určeno pouze pro osobní potřebu. 3
1 Úvod Vítejte v hackerlabu. Tento výukový materiál slouží studentům jako pracovní sešit, který využijete během kurzu jako referenční příručku. 1.1 lockdown Působíme od roku 2013 pod značkou lockdown se zaměřením na penetrační testování a bezpečnost databází Oracle. Více informací naleznete na našem webu www.lockdown.cz. Přehled aktuálních hacking kurzů naleznete na www.hackerlab.cz. 1.2 Vaše ochrana Získané znalosti z kurzu etického hackingu můžete aplikovat jen na systémech, které přímo vlastníte (případně s písemným souhlasem jejich vlastníka). I dobrý úmysl Vás může přivést do nepříjemné situace. Uvědomte si prosím, že každá komunikace vytváří na síti záznam a překonání i sebemenší obrany může být považováno za trestný čin. Hackerlab je bezpečné prostředí právě pro tyto experimenty. Petr Juhaňák, lockdown 2013 - Všechna práva vyhrazena, určeno pouze pro osobní potřebu. 4
2 Nmap - první seznámení Pokuste se interpretovat výsledek následujícího výpisu. root@bt:~# nmap 192.168.0.1 Starting Nmap 6.25 ( http://nmap.org ) at 2013-04-13 22:51 CEST Nmap scan report for ns.hacker.lab (192.168.0.1) Host is up (0.024s latency). Not shown: 998 closed ports 53/tcp open domain MAC Address: 00:50:B6:07:30:CF (Good WAY IND. CO.) Nmap done: 1 IP address (1 host up) scanned in 1.20 seconds 2.1 O projektu nmap Nmap je opensource projekt pod licencí GNU. Online dokumentaci najdete na webu http://nmap.org/docs. 2.2 Manuálové stránky man nmap 2.3 Klasifikace přepínačů Nmap má příliš mnoho voleb, pokusíme se v nich najít určitý řád. Můžete si zapamatovat, že počáteční písmeno popisuje akci. Je-li přepínač tvořen dvěma písmeny, pak druhé písmeno značí podtyp akce stejné kategorie. Například: -P* pro ping skeny (host discovery), následuje typ ping probe (-PS, -PA). -s* pro skenovací techniky portů, následuje typ skenu (-ss, -st, -su) -o* definuje formát výstupu (-oa, -og, -ox) -i* souvisí se vstupem nebo jeho pořadím (vstup je pro Nmap vždy cílové zařízení, tj. IP adresa nebo doménové jméno, které se následně přeloží na IP adresu za pomocí DNS serveru nebo jiné služby) Petr Juhaňák, lockdown 2013 - Všechna práva vyhrazena, určeno pouze pro osobní potřebu. 5
2.4 Výstup do souboru (-oa, -on, -ox, -og) Prozkoumejte následující přepínače a obsah vygenerovaných souborů. -on normální -ox XML -os s <ript kiddi3 -og grepovací -oa všechny formáty <prefix_nazvu_souboru> Příklad volání nmap 192.168.0.1 -oa nazev-souboru 2.5 Potlačení DNS překladu (-n) nmap 192.168.0.1 -n Starting Nmap 6.25 ( http://nmap.org ) at 2013-04-15 23:46 CEST Nmap scan report for 192.168.0.1 Host is up (0.041s latency). Not shown: 998 closed ports 53/tcp open domain MAC Address: 00:50:B6:07:30:CF (Good WAY IND. CO.) Nmap done: 1 IP address (1 host up) scanned in 1.20 seconds 3 Host discovery - ping probes Pod pojmem host discovery rozumíme nalezení aktivního zařízení na síti (resp. IP adresy). Pokusy, které vedou k odhalení takového zařízení, se označují jako ping probes. Cílem host discovery je odpověď, zda je zařízení online (host up) offline (host down). 3.1 Jak přeskočit host discovery (-Pn) Nmap bez dalších voleb provádí vždy nejdříve host discovery a pro aktivní IP adresy následně skenuje porty. Pokud selže host discovery, port sken se nespustí. Chceme-li toto chování potlačit a skenovat porty bez host discovery, použijeme přepínač -Pn. Petr Juhaňák, lockdown 2013 - Všechna práva vyhrazena, určeno pouze pro osobní potřebu. 6
nmap -ss 10.10.0.8 -p 22 -n -Pn --packet-trace Starting Nmap 6.25 ( http://nmap.org ) at 2013-04-16 21:47 CEST SENT (0.0810s) TCP 192.168.0.14:44848 > 10.10.0.8:22 S ttl=53 id=22681 iplen=44 seq=1537361258 win=1024 <mss 1460> RCVD (0.0893s) TCP 10.10.0.8:22 > 192.168.0.14:44848 SA ttl=63 id=28 iplen=44 seq=2085193268 win=5840 <mss 1460> Nmap scan report for 10.10.0.8 Host is up (0.0084s latency). Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds 4.3 TCP connect scan (-st) nmap -st 10.10.0.8 Starting Nmap 6.25 ( http://nmap.org ) at 2013-04-19 09:46 CEST Nmap scan report for 10.10.0.8 Host is up (0.086s latency). Not shown: 997 closed ports 111/tcp open rpcbind 6000/tcp open X11 Nmap done: 1 IP address (1 host up) scanned in 14.08 seconds Prozkoumáme sken podrobněji s volbou packet-trace. nmap -st 10.10.0.8 -p 22 -n -Pn --packet-trace Starting Nmap 6.25 ( http://nmap.org ) at 2013-04-19 09:50 CEST CONN (0.0594s) TCP localhost > 10.10.0.8:22 => Operation now in progress Nmap scan report for 10.10.0.8 Host is up (0.0040s latency). Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds Petr Juhaňák, lockdown 2013 - Všechna práva vyhrazena, určeno pouze pro osobní potřebu. 12
5.3.3 TCP NULL sken (-sn) Všechny příznaky u TCP segmentu jsou vypnuty. nmap -sn 10.22.0.80 Starting Nmap 6.25 ( http://nmap.org ) at 2013-04-27 23:35 CEST Nmap scan report for webcenter.corp.org (10.22.0.80) Host is up (0.080s latency). All 1000 scanned ports on webcenter.corp.org (10.22.0.80) are open filtered Nmap done: 1 IP address (1 host up) scanned in 11.57 seconds Vidíme dva odeslané TCP segmenty. nmap -sn 10.22.0.80 -p80 -n -Pn --packet-trace --reason Starting Nmap 6.25 ( http://nmap.org ) at 2013-05-07 21:44 CEST SENT (0.0885s) TCP 192.168.0.14:36479 > 10.22.0.80:80 ttl=47 id=12473 iplen=40 seq=1465450659 win=1024 SENT (1.0903s) TCP 192.168.0.14:36480 > 10.22.0.80:80 ttl=56 id=64571 iplen=40 seq=1465385122 win=1024 Nmap scan report for 10.22.0.80 Host is up, received user-set. REASON 80/tcp open filtered http no-response Nmap done: 1 IP address (1 host up) scanned in 2.09 seconds V síťovém filtru wireshark si můžeme ověřit, že příznaky (flags) jsou nulové. Internet Protocol Version 4, Src: 192.168.0.14 (192.168.0.14), Dst: 10.22.0.80 (10.22.0.80) Transmission Control Protocol, Src Port: 40312 (40312), Dst Port: 80 (80), Seq: 1, Len: 0 Flags: 0x000 (<None>) 000....... = Reserved: Not set...0...... = Nonce: Not set... 0...... = Congestion Window Reduced (CWR): Not set....0..... = ECN-Echo: Not set.....0.... = Urgent: Not set......0... = Acknowledgment: Not set...... 0... = Push: Not set.......0.. = Reset: Not set........0. = Syn: Not set.........0 = Fin: Not set Petr Juhaňák, lockdown 2013 - Všechna práva vyhrazena, určeno pouze pro osobní potřebu. 21
8.2 Sledování dotazů (--version-trace) nmap -sv 10.10.0.7 -p 5357 --version-trace --version-intensity 1 -n -Pn Starting Nmap 6.25 ( http://nmap.org ) at 2013-05-03 20:32 CEST --------------- Timing report --------------- hostgroups: min 1, max 100000 rtt-timeouts: init 1000, min 100, max 10000 max-scan-delay: TCP 1000, UDP 1000, SCTP 1000 parallelism: min 0, max 0 max-retries: 10, host-timeout: 0 min-rate: 0, max-rate: 0 --------------------------------------------- NSE: Using Lua 5.2. NSE: Loaded 19 scripts for scanning. Packet capture filter (device eth0): dst host 192.168.0.14 and (icmp or icmp6 or ((tcp or udp or sctp) and (src host 10.10.0.7))) Overall sending rates: 38.05 packets / s, 1674.21 bytes / s. NSOCK (0.1990s) nsi_new (IOD #1) NSOCK (0.2000s) TCP connection requested to 10.10.0.7:5357 (IOD #1) EID 8 NSOCK (0.2030s) Callback: CONNECT SUCCESS for EID 8 [10.10.0.7:5357] Service scan sending probe NULL to 10.10.0.7:5357 (tcp) NSOCK (0.2030s) Read request from IOD #1 [10.10.0.7:5357] (timeout: 6000ms) EID 18 NSOCK (6.2040s) Callback: READ TIMEOUT for EID 18 [10.10.0.7:5357] Service scan sending probe GenericLines to 10.10.0.7:5357 (tcp) NSOCK (6.2040s) Write request for 4 bytes to IOD #1 EID 27 [10.10.0.7:5357]:... NSOCK (6.2040s) Read request from IOD #1 [10.10.0.7:5357] (timeout: 5000ms) EID 34 NSOCK (6.2040s) Callback: WRITE SUCCESS for EID 27 [10.10.0.7:5357] NSOCK (11.2100s) Callback: READ TIMEOUT for EID 34 [10.10.0.7:5357] NSOCK (11.2100s) nsi_delete (IOD #1) NSOCK (11.2100s) nsi_new (IOD #2) NSOCK (11.2110s) TCP connection requested to 10.10.0.7:5357 (IOD #2) EID 40 NSOCK (11.2200s) Callback: CONNECT SUCCESS for EID 40 [10.10.0.7:5357] Service scan sending probe GetRequest to 10.10.0.7:5357 (tcp) NSOCK (11.2210s) Write request for 18 bytes to IOD #2 EID 51 [10.10.0.7:5357]: GET / HTTP/1.0... NSOCK (11.2230s) Read request from IOD #2 [10.10.0.7:5357] (timeout: 4999ms) EID 58 NSOCK (11.2230s) Callback: WRITE SUCCESS for EID 51 [10.10.0.7:5357] NSOCK (11.2270s) Callback: READ SUCCESS for EID 58 [10.10.0.7:5357] (513 bytes) Service scan match (Probe GetRequest matched with GetRequest line 6164): 10.10.0.7:5357 is http. Version: Microsoft HTTPAPI httpd 2.0 SSDP/UPnP NSOCK (11.2270s) nsi_delete (IOD #2) NSE: Script scanning 10.10.0.7. NSE: Starting runlevel 1 (of 1) scan. Nmap scan report for 10.10.0.7 Host is up (0.025s latency). Scanned at 2013-05-03 20:32:11 CEST for 11s Petr Juhaňák, lockdown 2013 - Všechna práva vyhrazena, určeno pouze pro osobní potřebu. 35
Některé skripty potřebují i další volby pro svůj běh, což většinou vypozorujeme z dokumentace. Například skript firewalk vyžaduje navíc ještě přepínač -traceroute. nmap -sv --script=firewalk 10.22.0.80 --traceroute -p0-65535 Starting Nmap 6.25 ( http://nmap.org ) at 2013-05-04 18:10 CEST Nmap scan report for 10.22.0.80 Host is up (0.0085s latency). Not shown: 65532 filtered ports VERSION 21/tcp closed ftp OpenSSH 3.9p1 (protocol 1.99) 80/tcp open http Apache httpd 2.0.52 ((CentOS)) 443/tcp open ssl/http Apache httpd 2.0.52 ((CentOS)) Host script results: firewalk: HOP HOST PROTOCOL BLOCKED PORTS 1 192.168.0.1 tcp 0,8 _2 10.10.0.6 tcp 1-7,9 TRACEROUTE (using port 21/tcp) HOP RTT ADDRESS 1 5.12 ms 192.168.0.1 2 5.30 ms 10.10.0.6 3 11.81 ms 10.22.0.80 Service detection performed. Please report any incorrect results at http://nmap.org/submit/. Nmap done: 1 IP address (1 host up) scanned in 153.57 seconds 11 Závěr Nmap je komplexní nástroj a v kurzu jsme prozkoušeli jeho základní i pokročilé možnosti. Úmyslně jsme vypustili některé detaily pro udržení pozornosti (např. sekce časování a výkon, IPv6, Decoy sken). Soustředili jsme se na pozorování. Získáné závěry jsme přeměnili na zkušenosti, které využijete i s jinými port skenery. Nmap je jistě kvalitní nástroj, ale to neznamená, že se hodí ve všech situacích. Pokud jste objevili další otázky nebo souvislosti, nezapomeňte se o ně podělit a navštivte naše diskusní fórum http://forum.hackerlab.cz. Věříme, že se vám kurz líbil, a budeme se těšit na další setkání. Petr Juhaňák, lockdown 2013 - Všechna práva vyhrazena, určeno pouze pro osobní potřebu. 43