Ovo je stara izmjena dokumenta!
Nmap je programski alat otvorenog koda koji se koristi za otkrivanje i analizu uređaja na mreži. Omogućuje skeniranje portova na računalnim uređajima u svrhu detekcije operacijskog sustava, identifikacije servisa koji se odvijaju na računalu, pronalaska ranjivosti i razne druge usluge.
Način na koji Nmap ostvaruje ove funkcionalnosti jest kroz različite vrste skeniranja koje može izvesti. Svako skeniranje ima posebne karakteristike i generira određenu vrstu prometa po kojemu bi ga mete skeniranja mogle prepoznati. Međutim može lise sa sigurnošću tvrditi kako se radi o Nmap skeniranju samo na temelju vrsta paketa koji su se razmjenili ?
U ovome seminaru će se proučiti 2 najosnovnije vrste skeniranja TCP connect() sken i SYN scan(stealth scan) i neke pojedinosti koje nisu na prvu vidljive korisnicima a mogu ukazivati da se radi upravo o tim vrstama skeniranja. Proućavat će se promet koji ovi skenovi generiraju u alatu Wireshark kako bi se uoćilo te pojedinosti.
Također će se razmotriti neki od način zaštite od Nmap skeniranja.
SYN Stealth Scan predstavlja najpopularniju vrstu scan-a koju može pokrenuti Nmap. Scan funkcionira na principu polu-ostvarene veze, tj. ne ostavruje se standardno TCP trostruko rukovanje. Na ovaj način se izbjegava se uspješno izbjegava sustave da se u zapisnik unesu podaci o vezi, s obzirom da nije u potpunosti uspostavljena.
Jedna od znamenitijih točaka koja može pomoći prilikom detekcije ovog scana je činjenica da vezu uspostavlja sam Nmap. Ovo će se pokazati kao jedna od ključnih stvari detekcije samog scana.
TCP connect() Scan se za razliku od SYN Scana pokreće od strane operacijskog sustava na kojemu radi Nmap te na taj način ostavruje vezu koja na prvu izgleda puno legitimnije od one generirane SYN Scanom. Uspostavlja se potpuna veza.
No za razliku od SYN Scana, TCP connect() je moguće skoro uvijek otkriti, zato što razni sustavi za zaštitu mogu lako prepoznati ovakvu vrstu skeniranja i stvoriti zapis o tome ili generirati upozorenje.
Osnovni načini za prepoznavanje ovih skeniranja je pregled zastavica u paketima koji stižu na žrtvino računalo. SYN Scan prati obrazac: SYN paket od napadača, SYN,ACK odgovor od žrtve, RST od napadača.
TCP connect() Scan prati standardni obrazac uspostave TCP veze, te nakon toga šalje RST paket kojim terminira vezu.
No ovo predstavlja samo najosnovniji način detekciju ovih skenova. U situaciji kada imamo ogromne količine mrežnog prometa, lako je moguće da se pojave slični obrazci koji ne moraju nužno predstavljati sken. U tu svrhu postoji još nekoliko načina kako se može prepoznati ove skenove.
Jedan od načina preko kojega možemo identificirati SYN Scan je veličina prozora SYN paketa. SYN Scan započinej skeniranje slanjem SYN paketa prema portovima na uređaju kojega skenira. S obzirom da se za uspostavu ove veze koristi Nmap a ne OS na kojem se Nmap vrti, veličina tog paketa će biti jako mala.
S druge stranje prvi SYN paket kojega pošalje TCP connect() Scan će imati vrijednost koja je blizu, ili iznosi 65535 što nam govori da se radi o connect pozivu operacijskog sustava, a ne nekoga alata ili programa. Slike 1 i 2 prikazuju istaknute vrijednosti window-a za dvije različite vrsta skena.
Druga metoda preko koje možemo shvatiti da se radi o SYN Scan-u je prisutsvo/odsutstvo TCP opcija u zaglavlju paketa. Paket poslan od strane SYN Scan-a sadrži samo jedno opciju: Maximum segment size.
S druge strane TCP connect() Scan SYN paket sadrži nekoliko opcija i veću veličinu zaglavlja što znači da ga se ovom metodom ne može razlikovati od normalnog prometa.
Iako ovo predstavlja zanimljivo svojstvo za detekciju SYN Scan-a, ako je napadač svjestan ovoga vrlo lako može izmjeniti veličinu zaglavlja što čini metodu beskorisnom.
Na slikama 1.1 i 1.2 se mogu vidjeti istaknute TCP opcije.
Slika 1.1 SYN Scan SYN paket za uspostavu konekcije (uočiti veličinu prozora i broj opcija)
Slika 1.2 TCP connect() Scan SYN paket za uspostavu konekcije (uočiti veličinu prozora i broj opcija)
Do sada smo vidjeli dva načina uz pomoću kojih možemo lako uočiti SYN Scan, no oni nam ne mogu poslužiti za TCP connect() Scan. Tu dolazimo do posebnog svojstva SYN paket pod nazivom TCP conversation completeness. Ovo svojstvo nam omogućava da dodijelimo numeričke vrijednosti paketima koje se tipično razmjenjuju prilikom uspostave TCP komunikacije.
Vrijednosti i paketi kojima ih dodijeljujemo su:
Uz pomoč ovog mapiranja možemo ,sumacijom vrijednosti paketa koji su se razmjenili prilikom komunikacije, odrediti o kakvoj vrsti komunikacije je bilo riječ (da li je bilo podataka ili nije, da li je komunikacija uspješno provedena ili je prekinuta).
U slučaju TCP connect() Scan-a ćemo dobiti vrijednost 39 kao što je prikazano na slici. Samo po sebi ovo ne mora značiti da se radi o skenu, međutim ako iskoristimo vrijednost ovog svojstva kao filtar i pronađemo takvu situaciju više puta u prometu, to bi nam lako moglo pokazati da se radi o skenu.
Slika 1.3 Primjer TCP conversation completeness za TCP connect() Scan