Nmap ponúka veľké množstvo techník na skenovanie portov. Teoreticky by mali všetky produkovať rovnaký výsledok, nie je to však tak. Výsledky skenovania Nmapu totiž závisia od paketov, ktoré mu vrátia cieľové uzly, ktoré môžu posielať pakety, ktoré majú za účel zmiasť Nmap. Oveľa častejšie sú uzly, ktoré svojsky interpretujú niektoré nejasné alebo jasné pasáže príslušných RFC a neodpovedajú na pakety tak, ako by mali.
Väčšina skenovacích techník vyžaduje, aby mal užívateľ neštandardné privilégiá, pretože využíva neštandardné pakety; výnimkou sú TCP connect() a FTP bounce skeny.
-sS vykoná TCP SYN skenovanie. Pri ňom sa posielajú TCP pakety so SYN flagom, ktoré sa používajú na normálne otvorenie TCP spojenia. Výhodou je, že dokáže jednoznačne rozlíšiť tri základné stavy portu, je rýchly, prechádza väčšinou firewallov, málokedy sa loguje a funguje s každou implementáciou TCP/IP. Pokiaľ ako odpoveď dorazí paket so SYN a ACK flagmi, považuje sa daný port za open, RST značí closed port a žiadna odpoved (po viacerých pokusoch) alebo ICMP destination unreachable filtered.
-sT vykoná TCP connect() skenovanie. Toto skenovanie môžu využívať aj neprivilegovaní užívatelia, miesto posielania paketov totiž využíva systémové volanie connect() z Berkeley sockets API podobne ako normálne aplikácie využívajúce TCP. Nevýhodou je možnosť, že daný test bude dlho trvať (Nmap nemá možnosť podrobne ovplyvniť správanie systému) a to, že sa dané spojenie obvykle zaznamená na cieľovom systéme (alebo v IDS, ktorý chráni cieľový systém).
-sU vykoná skenovanie UDP portov. Na rozdiel od TCP je toto jediná možnosť, ako zistiť aktívne UDP porty na cieľovom uzle. Tento typ skenovania posiela prázdne UDP pakety na testované porty, pričom správa ICMP port unreachable sa považuje za znak toho, že je port closed, iné ICMP správy, že je filtered, pokiaľ uzol odpovie UDP paketom, je port open. Pokiaľ uzol neodpovie, portu sa pridelí stav open|filtered, pretože nie je možné medzi nimi rozhodnúť.
-sN , -sF a -sX využívajú na skenovanie pakety s neštandardnou kombináciou TCP príznakov (žiadne, FIN a FIN|PSH|URG). Využívajú zaujímavú vlastnosť RFC 793, ktoré špecifikuje, že neobsadené porty majú na tieto pakety odpovedať RST paketom, kým obsadené nemajú. RST paket klasifikuje port ako closed, žiadna odpoveď ako open|filtered a ICMP destination unreachable ako filtered. Výhodou je, že tieto pakety dokážu prechádzať i cez niektoré nestavové paketové filtery; nevýhoda, že niektoré implementácie TCP/IP (Microsoft, Cisco, IBM, BSDI) na tieto pakety reagujú zaslaním RST i keď je daný port otvorený.
-sA využíva pakety s nastaveným TCP ACK príznakom. Na rozdiel od ostatných nedokáže rozlíšiť, či je port otvorený alebo zatvorený (vracia RST paket), ale pozná, že daný port je filtrovaný (nevráti žiaden paket alebo správu ICMP).
-sW používa rovnaké pakety ako predchádzajúci typ skenovania, ale skúma hodnotu TCP window v prijatých RST paketoch. Niektoré implementácie TCP/IP protokolov totiž pri otvorených portoch posielajú RST paket s hodnotou window nenulovou, pri nevyužitých portoch je hodnota window nulová. Nevýhodou tohoto skenovania je, že je veľmi nespoľahlivé, niektoré systémy môžu nastavovať hodnotu window náhodne a podobne.
--scanflags umožňuje použiť TCP pakety s ľubovoľnými príznakmi, jeho použitie je však mimo rámec tohoto dokumentu.
-sI umožňuje využiť iný uzol na skenovanie cieľového. Táto technika a požiadavky na uzol sú popísané na stránke www.insecure.org/nmap/idlescan.html
-sO umožňuje skenovanie nie portov, ale IP protokolov, ktoré daný uzol podporuje. Funguje na obdobnom princípe ako UDP skenovanie.
-b vykoná tzv. FTP bounce skenovanie, ktoré využíva dnes už zavrhnutú vlastnosť FTP serverov, ktoré dokázali nadviazať dátové spojenie aj s iným uzlom ako príslušné riadiace. Pre veľké možnosti zneužitia už dnes iba minimum FTP serverov túto vlastnosť podporuje.
|