
Sposoby scanovania portovAko novacik pokusajuci sa opravit auto, mozem sa trapit dlhe hodiny, aby som nasiel
vhodne zakladne naradie (kladivo, lepiaca paska, kluc, atd) na danu ulohu.
Ked sa uz citim utrapene a odtiahnem svoj vrak ku naozajstnemu mechanikovi, ten stale obchadza
auto s velkou debnou naradia, az kym nevylovi tu vecicku co z prace urobi hracku.
Podobne je aj umenie scanovania. Experti ovladaju kopu metod scanovania a zvolia prislusnu
(alebo kombinaciu) pre danu ulohu. Na druhej strane neskuseni pouzivatelia a rychlokvaseni
majstri v praci so skriptom budu riesit kazdy problem predvolenym SYN scanom. Kedze Nmap je zadarmo,
jedinou barierou pred majstrovstvom v scanovani portov je vedomost, co urcite poraza svet automobilov,
kde zistenie potreby pruzinoveho kompresora stale vyzadujuce zaplatit zan tisice dolarov, moze vyzadovat velke
zrucnosti. Vacsina typov scanov je dostupna len pre privilegovanych pouzivatelov, z toho dovodu,
ze posielaju a prijimaju neupravene pakety, co si na UNIXovych systemoch vyzaduje pristup roota.
Na platforme Windows sa odporuca administratorsky ucet, hoci po nahrati kniznice WinPcap do OS
funguje niekedy Nmap aj pre neprivilegovanych pouzivatelov.
V roku 1997 po vydani Nmapu bola otazka privilegii roota dost vaznym obmedzenim, kedze mnohi pouzivatelia
mali pristup len ku shared shell uctu. Svet sa vsak zmenil.
Pocitace su lacnejsie, ovela viac ludi ma teraz neprestajny priamy pristup na internet a UNIXove
systemy pre desktop (vratane Linuxu a MAC OS X) su rozsirene. Dostupna je aj verzia Nmapu pre Windows,
co dovoluje spustit program na este viac desktopoch. Z tychto vsetkych dovodov nemaju pouzivatelia
taku potrebu spustat Nmap z obmedzenych shared shell uctov.
To je stastne, pretoze parametre vyzadajuce privilegia robia z Nmapu ovela mocnejsi a flexibilnejsi
nastroj.
Nmap sa sice pokusa produkovat presne vysledky, ale je dolezite si uvedomovat,
ze vsetko jeho chapania problemu su zalozene na paketoch odoslanych cielovymi pocitacmi
alebo firewallmi pred nimi. Taketo hostitelske stanice mozu byt nedoveryhodne a posielat
zamerne matuce odpovede a uviest Nmap do omylu.
Ovela beznejsie su vsak hostitelske stanice nevyhovujuce standardu RFC, ktore neodpovedaju na testy
Nmapom tak ako by mali. Specialne nachylne na tento problem su scany typu FIN, Null a Xmas.
Taketo potiaze su specificke pre iste typy scanov a su rozobrate v zaznamoch
o jednotlivych typoch scanov.
Tento cast dokumentuje asi tucet metod scanovania portov podporovanych Nmapom.
Len jedna metoda moze byt pouzita sucasne, s vynimkou UDP scanu
(-sU), ktory moze byt kombinovany s lubovolnym dalsim TCP scanom.
Ako pomocka pre pamat, parametre typu scanovania portov su vo formate
-s<C>, kde
<C> predstavuje hlavny znak v nazve scanu, obycajne ten prvy.
Vynimkou je uz odmietnuty FTP bounce scan (-b). V predvolenom nastaveni
vykonava Nmap SYN scan, hoci ak pouzivatel nema dostatocne privilegia alebo ciele IPv6 neboli
specifikovane, nahradzuje
ho volanim Connect(), aby sa mohli odoslat neupravene pakety (to vyzaduje pristup roota na
UNIXovych pocitacoch). Zo vsetkych spomenutych scanov mozu pouzivatelia bez
privilegii spustit len scany connect() a ftp bounce. -
-sS (Scan TCP SYN ) SYN scan je predvolenym a najoblubenejsim typom scanu a to z dobrych dovodov.
Dokaze byt vykonany rychlo, scanujuc tisicky portov za sekundu tam, kde je rychla siet bez
obmedzeni dotieravych firewallov. SYN scan je relativne nenapadny a tajny, pretoze
nikdy nedokonci fazu nadvazovania TCP spojeni. Funguje aj proti akymkolvek TCP stackom
a nezavisi teda na svojraznostiach konkretnych platform ako dalsie Nmapovske scany
Fin, Null, Xmas, Maimon a Idle.
Umoznuje takisto ciste a spolahlive rozlisenie medzi
otvorenymi,
zatvorenymi a filtrovanymi
stavmi. Na tuto metodu sa casto odkazuje ako na polootvorene scanovanie,pretoze
nie je potrebne otvarat plne TCP spojenie. Odosle sa SYN paket ako keby sa nadvazovalo
skutocne spojenie a potom sa caka na spojenie. Prichodzi SYN/ACK paket indikuje,
ze port nacuva (je otvoreny), kym RST (reset) naznacuje, ze port nenacuva.
Ak sa neodosle ziadna odpoved ani po niekolkych retransmisiach, port sa oznaci
ako filtrovany. Taketo oznacenie sa pouzije, aj ked pride
chybova sprava ICMP unreachable error (typ 3, kody 1,2, 3, 9, 10, alebo 13). -
-sT (Scan TCP connect()) Scan TCP Connect() je predvolenym typom TCP scanu, ak SYN scan nepatri medzi
moznosti. K tomu dochadza, ak pouzivatel nema privilegia na odosielanie neupravenych
paketov, alebo pri scanovani sieti s protokolom IPv6. Nmap namiesto vytvorenia neupravenych
paketov, ako pri vacsine dalsich scanov, poziada operacny system o vytvorenie spojenia s cielovou
stanicou a portom pomocou systemoveho volania connect().
Je to presne to iste volanie na vyssej urovni k vytvoreniu spojenia, ktore vyuzivaju webove prehliadace,
klienti P2P a vacsina dalsich aplikacii vyuzivajucich siet a tvori cast programoveho rozhrania
znameneho pod menom Berkeley Sockets
API. Namiesto prijimania a spracovavania neupravenych odpovedi po sieti, Nmap pri kazdom pokuse o spojenie
pouziva toto rozhranie API na ziskanie informacii o stave.
Ak je dostupny SYN scan, je obycajne lepsou volbou. Nmap ma mensiu kontrolu nad
vysokourovnovym volanim connect() ako
nad neupravenymi paketmi, co sposobuje horsiu efektivnost.Systemove volanie
dokoncuje nadvazovanie spojeni k otvorenym portom cieloveho hostitela namiesto
vykonania polootvoreneho resetu, ktory vykonava SYN scan. Tento postup nielenze
trva dlhsie, ale takisto vyzaduje viac paketov na ziskanie tych istych informacii a cielove
pocitace budu spojenie pravdepodobne zaznamenavat do logu.
Poriadny IDS to sice tiez zachyti, ale vacsina pocitacov nema takyto system.
Ked sa Nmap pripoji a potom zavrie spojenia bez odoslania dat,
vacsina sluzieb na priemernom UNIXovom system prida poznamku do syslogu.
Niektore fakt ubohe sluzby mozu pritom spadnut, ale to je nezvycajne.
Administrator, ktory vidi v logu niekolko pokusov o spojenie od jedneho systemu by mal vediet,
ze bol scannovany s ohladom na nadviazanie spojenia.
-
-sU (UDP scany) Zatial co vacsina oblubenych sluzieb na internete funguje na TCP protokole,
UDP sluzby
su tiez siroko nasadzovane. Tri najbeznejsie z nich su DNS, SNMP a DHCP
(registrovane porty 53, 161/162 a 67/68). Pretoze scanovanie UDP je vseobecne pomalsie
a narocnejsie ako TCP, niektori spravcovia bezpecnosti si nevsimaju tieto porty a to je chyba, lebo
zneuzitelne UDP sluzby su celkom bezne a utocnici iste nebudu ignorovat cely protokol.
Nastastie, Nmap dokaze pomoct urobit supis tychto UDP portov. UDP scan je mozne spustit parametrom -sU.
Moze sa kombinovat s TCP scanom ako napr. SYN scan
(-sS) a tak sa mozu skontrolovat oba protokoly pocas jedneho spustenia. UDP scan funguje tak, ze odosle kazdemu cielovemu portu prazdnu hlavicku UDP header bez dat.
Ak sa vrati chybova sprava ICMP port unreachable error (typ 3, kod 3) port je zatvoreny.
Ostatne chybove spravy ICMP (typ 3,
kody 1, 2, 9, 10 alebo 13) oznacuju port ako filtrovany. Prilezitostne moze
sluzba odpovedat UDP paketom a tym dokaze, ze port je otvoreny. Ak sa po
opakovanych retransmisiach neobjavi ziadna odpoved, port je oznaceny ako
otvoreny|filtrovany.
To znamena, ze port by mohol byt otvoreny alebo mozno paketove filtre blokuju komunikaciu.
Na pomoc pri odliseni otvorenych a filtrovanych portov sa moze pouzit parameter
(-sV). Velkou vyzvou pre scanovanie UDP je rychlost. Otvorene a filtrovane porty malokedy
posielaju odpoved a tak pre vyprsi casovy limit, co vyusti v dalsie retransmisie pre pripad,
ze sa test alebo odpoved mohli v sieti stratit. Zatvorene porty su casto vacsim problemom.
Obycajne odosielaju spat chybovu spravu ICMP port unreachable error, no na rozdiel od
RST paketov odosielanych zatvorenymi TCP portmi ako odpoved na SYN alebo Connect scan,
, mnoho hostitelskych stanic standardne pouziva limit takychto odoslanych chybovych sprav.
Specialne prisne na tento fakt su Linux a Solaris.
Napriklad linuxove jadro 2.4.20 dava obmedzenie na spravy typu destination unreachable v pocte
jedna sprava za sekundu (v subore net/ipv4/icmp.c). Nmap detekuje obmedzenie v pocte a podla toho sa spomali, aby sa vyhol zaplaveniu siete nepotrebnymi
paketmi, ktore by cielova stanica zahodila. Linuxovske obmedzenie 1 paket za sekundu nanestastie sposobuje,
ze by scan 65536 portov trval 18 hodin. Napady ako tento proces urychlit su napr.scanovanie viacerych hostov sucasne
, vykonat najprv rychly scan popularnych portov, scanovat spoza firewallu alebo pouzitie parametru
--host_timeout na preskocenie pomalych hostitelskych stanic. -
-sN; -sF; -sX (TCP Null, FIN a Xmas scany) Tieto tri typy scanov (dalsie sa daju vykonat pouzitim parametra
--scanflags su opisane v dalsej casti)
vyuzivaju malu dieru v standarde TCP RFC, aby rozlisili
medziotvorenymi a
zatvorenymi portmi. Na strane sa 65 hovori, ze “ak je
[cielovy] port zatvoreny.... prichadzajuci segment, ktory neobsahuje flag RST sposobi, ze sa ako
odpoved odosle RST segment.” Dalsia strana potom rozobera pakety odosielane na otvorene porty
bez nastavenych bitov SYN, RST ani ACK a tvrdi: “je nepravdepodobne, ze sa dostanete
do tejto situacie, ale ak k nej dojde, zahodte segment a vratte sa.” Ak sa scanuju systemy zodpovedajuce tomuto textu RFC, lubovolny paket
neobsahujuci nastavene bity SYN, RST ani ACK vyvola odpoved s RST bitom, ak bol port
zatvoreny a ziadnu odpoved, ak je port zatvoreny. Pokial nie su zahrnute ziadne z tychto troch bitov,
je v poriadku lubovolna kombinacia flagov (FIN, PSH a URG). Nmap ich vyuziva pomocou
tychto troch typov scanov: - Null scan (
-sN) Nenastavuje ziadne bity(tcp flag header je nastaveny na 0) - FIN scan (
-sF) Nastavi len bit TCP FIN. - Xmas scan (
-sX) Nastavi flagy FIN, PSH a URG, cim sa paket "rozsvieti" ako
Vianocny stromcek.
Tieto tri typy scanov maju rovnake spravanie az na to nastavenie
TCP flagov. Ak dojde ako odpoved RST paket, port sa povazuje za zatvoreny,
kym ziadna odpoved znaci otvoreny|filtrovany. Port sa oznaci ako
filtrovany ak dorazi chybova sprava ICMP unreachable (typ 3, kod
1, 2, 3, 9, 10 alebo 13). Klucovou vyhodou tychto typov scanov je, ze sa dokazu pretlacit cez
iste bezstavove firewally a routre s filtrovanim paketov. Okrem toho su este viac tajnejsie
ako SYN scan, no neda sa na to spoliehat -- vacsina modernych IDS sa da nastavit tak, aby ich detekovala.
Velkou nevyhodou je, ze cely rad systemov sa nedrzi do pismena standardu RFC 793, posielaju odpovede
RST bez ohladu na to, ci je port otvoreny alebo zatvoreny.
Preto su vsetky taketo porty oznacovane ako closed.
Hlavne operacne systemy s takymto spravanim su Microsoft Windows, mnohe zariadenia Cisco ,
BSDI a IBM OS/400.
Tento scan vsak funguje na mnohe UNIXovske systemy.
Dalsim hacikom tychto scanov je, ze nedokazu rozlisit otvorene porty od
istychfiltrovanych, takze vyvolaju odpoved
otvoreny|filtrovany. -
-sA (Scan TCP ACK) Tento scan sa lisi od ostatnych doposial rozoberanych v tom,
ze nikdy neurcuje porty v stave otvoreny (dokonca ani
otvoreny|filtrovany). Pouziva sa na zmapovanie
sad pravidiel firewallu, ci su stavove alebo bezstavove a ktore porty su filtrovane. Testovaci ACK Paket ma nastaveny len ACK flag (ak nie je pouzity parameter --scanflags).
Ak sa scanuju nefiltrovane systemy, stavy portov
otvoreny a zatvoreny vratia zhodny
RST paket. Nmap ich potom oznaci ako
nefiltrovane, co znamena, ze su dostupne pomocou ACK paketu
, ale nie je rozpoznane, ci su otvorene alebo
zatvorene. Porty, ktore neodpovedia ci odoslu spat nejaku chybovu spravu
ICMP (typ 3, kod 1,2,3,9,10 alebo 13) su oznacene ako filtrovane. -
-sW (Scan TCP Window) Window scan je presne taky isty ako ACK scan az na to, ze vyuziva
implementacne detaily istych systemov na rozlisenie otvorenych a zatvorenych
portov, namiesto prosteho vypisu
nefiltrovany po navrate RST paketu. Realizuje sa to
preskumanim polozky RST paketu s nazvom TCP Window. Na niektorych systemoch pouzivaju
otvorene porty kladnu velkost okienka, dokonca aj pre RST pakety, kym, zatvorene porty maju
nulovu velkost okienka, takze namiesto vypisu stavu portu ako nefiltrovany
Window scan zobrazi port v staveotvoreny alebo
zatvoreny podla velkosti okienka (kladna resp. nulova). Tento typ scanu sa spolieha na implementacny detail
mensiny systemov na internete, takze mu nie je mozne vzdy doverovat.
Systemy ktore to nepodporuju obycajne vratia vsetky porty v stave
zatvoreny. Je samozrejme mozne, ze pocitac
nema ziadne otvorene porty. Ak je vacsina scanovanych portov
zatvorena, ale niekolko beznych
portov (napr. 22,
25, 53) je v stave filtrovany system je pravdepodobne
nachylny na tento scan. Zriedkavo mozu systemy vykazat
presne opacne spravanie. Ak je scan ukaze, ze je 1000 otvorenych portov a 3 zatvorene alebo filtrovane
, tieto tri porty mozu byt pokojne tie otvorene. -
-sM (Scan TCP Maimon) Maimon scan je pomenovany po svojom objavitelovi, Urielovi Maimonovi. Tuto techniku
opisal v casopise Phrack, vydanie #49 (November 1996)
Nmap s touto metodou bol vydany o dve vydania neskor.
Metoda funguje presne ako scany Null, FIN a Xmas, ale test je typu FIN/ACK. Podla standardu
RFC 793 (TCP), RST paket by mal byt generovany ako odpoved na tento test bez ohladu na otvoreny alebo
zatvoreny port. Uriel vsak spozoroval, ze mnohe systemy odvodene od BSD jednoducho zahodia paket, ak je port
otvoreny. -
--scanflags (Vlastny TCP scan) Naozaj pokrocili pouzivatelia Nmapu sa nemusia obmedzovat len na
vopred ponuknute type scanov. Parameter --scanflags vzdy umozni zadanim lubovolnych TCP
flagov vytvorit vlastny scan. Neobmedzujte svoju kreativitu pri vyhybani sa systemom IDS, ktorych
vyrobcovia jednoducho prelisovali manual k Nmapu a pridali specificke pravidla.
Argumentom parametru--scanflags moze byt hodnota cisla flagu ako napr.
9 (PSH a FIN), no je jednoduchsie pouzivat nazvy, staci zlepit dokopy lubovolnu kombinaciu flagov
URG,
ACK, PSH,
RST, SYN a
FIN. Napriklad --scanflags
URGACKPSHRSTSYNFIN nastavi vsetko, hoci to nie je prilis uzitocne pre scanovanie. Poradie nazvov nie
je dolezite. Okrem specifikovanie ziadanych flagov je mozne
zadat typ TCP scanu (napriklad-sA alebo -sF), co
Nmapu napovie ako interpretovat odpovede. Napriklad SYN scan povazuje
absenciu odpovede za port so stavom
filtrovany, kym FIN scan odpovie na rovnaku situaciu
otvoreny|filtrovany. Nmap bude postupovat
presne tak ako pri zakladnych typoch scanu, no pouzije TCP flagy, ktore budu
zadane. Ak nie je zadany zakladny typ scanu, pouzije sa SYN scan. -
-sI <zombie
host[:probeport]> (Scan naprazdno - Idlescan) Tato pokrocila metoda umoznuje naozaj
slepy scan portov cielovej stanice s tym, ze z lokalnej skutocnej
IP adresy nie su odosielane ziadne pakety. Namiesto toho sa pouzije
utok po bocnom kanale, ktory vyuziva
delenie na IP fragmenty a predpovedatelne tvorenie sekvencie ID cisel na zombie hostitelovi.
Tym sa zhromazduju informacie o otvorenych portoch na cielovom pocitaci.
IDS systemy zobrazia, ze scan pochadza z pocitaca zombie, ktory bol specifikovany, musi
byt samozrejme aktivny a splnat urcite kriteria.
Tento fascinujuci typ scanu je prilis zlozity na plny popis v tejto prirucke,
takze som uplne detaily popisal neformalnym sposobom a ulozil na adresu
http://nmap.org/book/idlescan.html. Okrem toho, ze tento scan je vynimocne nenapadny (kvoli svojej slepej povahe),
umoznuje zmapovat doveryhodne vztahy medzi pocitacmi zalozene na IP adrese.
Zoznam portov zobrazuje otvorene porty
z pohladu zombie hostitela. Takze je mozne
pokusit sa o scan cielovej stanice pouzitim roznych zombie pocitacov, o ktorych
si myslite, ze su doveryhodne (pomocou pravidiel routra alebo paketoveho filtra). Ak sa ma na strane zombie pocitaca testovat specificky port kvoli zmenam hodnoty IPID,
pridajte dvojbodku nasledovanu cislom portu. Inak Nmap pouzije povodny port urceny na
tcp pingovanie - 80. -
-sO (Scan protokolu IP) Scan protokolu IP umoznuje urcite, ktore protokoly IP (TCP, ICMP, IGMP, atd.)
su podporovane cielovymi pocitacmi. Technicky to nie je scan portov, pretoze prebieha
roznymi cislami protokolov IP a nie cislami portov protokolov TCP a UDP. Aj napriek tomu
pouziva parameter -p na vyber scanovanych cisel protokolov, oznamuje
vysledky v normalnom formate tabulky portov a dokonca pouziva ten isty mechanizmus scanu
ako prave metody scanovania portov, takze je dost blizko scanovaniu portov, a preto patri sem.
Okrem toho, ze je uzitocny vo vlastnom zmysle,
scan protokolov demonstruje silu open-source softwaru.
Zatial co zakladna myslienka je dost jednoducha, nerozmyslal som nad jej pridanim ani
som nedostal poziadavky o takuto funkcionalitu.
Potom vsak v lete roku 2000 dostal Gerhard Rieger tento napad, napisal excelentny
patch, ktory to implementoval a poslal ho do mailing listu skupiny hackerov nmapu.
Tento patch som vlozil do stromu Nmapu a na dalsi den vydal novu verziu.
Len malo zastupcov komercneho softwaru ma nadsenych uzivatelov, ktori vytvaraju a prispievaju
svojimi vylepseniami. Scan protokolu funguje podobne ako UDP scan.
Namiesto iterovania cez cisla portov v policku UDP paketu vysiela Nmap hlavicky
IP paketu a iteruje cez 8-bitove policko IP protokolu. Hlavicky su zvycajne prazdne, neobsahuju
data a ani patricnu hlavicku pre vyhlaseny protokol.
Troma vynimkami su protokoly TCP,
UDP a ICMP. Tu je patricna hlavicka protokolu zahrnuta, pretoze
niektore systemy ich inak neodoslu a pretoze uz Nmap obsahuje funkcie na ich
vytvorenie.
Namiesto pozorovania sprav ICMP port
unreachable protocol sa scan zaujima o spravy ICMP
protocol unreachable. Ak Nmap prijme od cieloveho hostitela akukolvek odpoved akehokolvek
protokolu, Nmap oznaci protokol ako otvoreny.
Chybova sprava ICMP protocol unreachable(typ 3, kod 2) sposobi,
ze sa protokol oznaci ako
zatvoreny Dalsie chybove spravy ICMP unreachable (typ 3, kod
1, 3, 9, 10 alebo 13) sposobia stav protokolu ako
filtrovany (hoci v rovnakom momente dokazuju, ze je
otvoreny).
Ak sa neobdrzi ziadna odpoved po retransmisiach, protokol sa oznaci ako
otvoreny|filtrovany. -
-b <ftp relay host> (FTP bounce scan) Zaujimavou funkciou protokolu FTP (RFC 959) je
podpora takzvanych proxy ftp spojeni, co umoznuje pouzivatelovi pripojit sa
k jednemu FTP serveru a potom ziadat o to, aby sa subory posielali serveru tretej strany.
Tato vlastnost je priam idealna pre zneuzitie na mnohych urovniach
, takze mnohe servery ju prestali podporovat.
Jednym z tychto zneuziti tejto funkcie je vyvolanie situacie, kde FTP server scanuje
porty dalsich hostitelskych stanic. Je mozne zaradom jednoducho poziadat FTP server o zaslatie
subor na kazdy zaujimavy port cieloveho hostitela. Chybova sprava opise, ci
je port otvoreny alebo nie. To je dobry sposob ako obist firewally, pretoze FTP servery
organizacii su casto umiestnovane tam, kde maju vacsi pristup k vnutornym hostitelskym staniciam ako kazda
ina stanica na internete. Nmap podporuje ftp bounce scan pomocou parametra -b.
Ako argumenty pouziva
<pouzivatelske meno>:<heslo>@<server>:<port>.
<Server> je nazvom IP adresy zranitelneho FTP servera.
Tak ako aj pri normalnej URL adrese, aj tu sa moze vynechat
<pouzivatelske meno>:<heslo>,
pricom sa pouziju anonymne prihlasovacie udaje (pouzivatel:
anonymous heslo:-wwwuser@).
Cislo portu (a predchadzajuca dvojbodka ) mozu byt vynechane tiez, pricom sa vtedy pouzije povodny
FTP port (21) na
<serveri>. Tato zranitelnost bola siroko rozsirena v roku 1997,
ked bol Nmap vydany, no bola do velkej miery opravena. Zranitelne servery su stale
naokolo, takze stoji to za to vyskusat ich. Ak je cielom obist firewall, je mozne
scanovat cielovu siet s cielovym portom 21 (alebo aj akekolvek ftp sluzby ak sa scanuju
vsetky porty s detekciou verzie) a potom vyskusat spustit scan bounce scan ftp.
Nmap prezradi, ci je hostitelska stanica zranitelna alebo nie.
Ak sa pokusate len zakryt svoje stopy, nie je nevyhnutne (a v skutocnosti by sa ani nemalo) obmedzovat
sa na hostitelske stanice v cielovej sieti. Pred scanovanim nahodnych internetovych adries
na zistenie zranitelnych FTP serverov zoberte do uvahy, ze systemovym administratorom
sa nemusi pacit zneuzitie ich serverov takymto sposobom.
|
|