NMAP(1) Nmap vodic NMAP(1) IME nmap - Alat za istrazivanje mreze i sigurnosni/port skener PREGLED nmap [Tip skena...] [Opcije] {specifikacija cilja} OPIS Nmap ("Network Mapper") je open source alat za istrazivanje mreze i sigurnosni auditing. Dizajniran je za brzo skeniranje velikih mreza, ali radi jednako dobro i kad je u pitanju samo jedan host. Nmap koristi sirove (raw) IP pakete na nov i originalan nacin da bi ustanovio koji hostovi su dostupni na mrezi, koji servisi (naziv aplikacije i verzija) su pokrenuti na tim hostovima, o kojim operativnim sustavima (i verzijama) je rijec, koji tipovi paket filtera i vatrozida se koriste, te mnogo drugih karakteristika. Iako je Nmap najcesce koristen za sigurnosni auditing, mnogi sistemski i mrezni administratori pronasli su u njemu koristan alat za rutinske zadatke poput sastavljanja popisa mreznog inventara, upravljanja vremenima nadogradnje servisa i nadgledanja uptime-a racunala ili servisa. Rezultat Nmap pretrazivanja je popis skeniranih meta s dodatnim informacijama o svakoj od njih ovisno o koristenim parametrima. Kljucna informacija je " tabela zanimljivih portova". U tabeli se nalati broj porta i protokol, naziv servisa i stanje.Stanje je ili: otvoreno, filtrirano, zatvoreno ili nefiltrirano. Otvoreno znaci da na ciljanom racunalu postoji aplikacija koja slusa na tom portu i ceka na konekciju/pakete. Filtrirano znaci da izmedu nas i ciljanog racunala postoji vatrozid, paket filter ili neki drugi mrezni uredaj koji blokira port, pa Nmap ne moze reci da li je port otvoren ili zatvoren. Zatvoreni portovi trenutno nemaju aplikacije koje slusaju na njima. Portovi su klasificirani kao nefiltrirani u situacijama kada odgovaraju na Nmap-ove upite, ali Nmap nije u mogucnosti ustanoviti da li su otvoreni ili zatvoreni. Nmap vraca sljedece kombinacije u izvjestajima: otvoren|filtriran i zatvoren|filtriran kad ne moze ustanoviti koje od dva stanja tocnije opisuje port. Port tabela moze takoder sadrzavati i informacije o verziji softvera, kada je ta opcija upaljena kod skeniranja. Kad je zatrazeno skeniranje IP protokola (-sO), Nmap vraca informacije o podrzanim IP protokolima, a ne o portovima. Uz navedenu tabelu portova, Nmap moze dati i dodatne informacije o ciljanom racunalu, ukljucujuci reverse DNS imena, pretopstavku o tome koji operativni sustav je s druge strane, tipove uredaja i MAC adrese. Prikaz tipicnom Nmap skena je prikazan u: Primjer 1, "Ovako izgleda primjer Nmap skena". Jedan od Nmap argumenata koristen u navedenom primjeru je -A, opcija za otkrivanje OS-a i njegove verzije, zatim-T4 za brze skeniranje, te nakon toga dva hosta koje zelimo skenirati. Primjer 1. Ovako izgleda primjer Nmap skena # nmap -A -T4 scanme.nmap.org playground Starting nmap ( https://nmap.org/ ) Interesting ports on scanme.nmap.org (205.217.153.62): (The 1663 ports scanned but not shown below are in state: filtered) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.9p1 (protocol 1.99) 53/tcp open domain 70/tcp closed gopher 80/tcp open http Apache httpd 2.0.52 ((Fedora)) 113/tcp closed auth Device type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Uptime 33.908 days (since Thu Jul 21 03:38:03 2005) Interesting ports on playground.nmap.org (192.168.0.40): (The 1659 ports scanned but not shown below are in state: closed) PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 389/tcp open ldap? 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp open windows-icfw? 1025/tcp open msrpc Microsoft Windows RPC 1720/tcp open H.323/Q.931 CompTek AquaGateKeeper 5800/tcp open vnc-http RealVNC 4.0 (Resolution 400x250; VNC TCP port: 5900) 5900/tcp open vnc VNC (protocol 3.8) MAC Address: 00:A0:CC:63:85:4B (Lite-on Communications) Device type: general purpose Running: Microsoft Windows NT/2K/XP OS details: Microsoft Windows XP Pro RC1+ through final release Service Info: OSs: Windows, Windows XP Nmap finished: 2 IP addresses (2 hosts up) scanned in 88.392 seconds Najnoviju verziju Nmap-a mozete downloadati sa sljedeceg linka: [1]. Najnovija verzija man stranica (uputa) dostupna je na sljedecem linku: https://nmap.org/man/. NAPOMENE O PRIJEVODU Hrvatsku verziju Nmap vodica je preveo Robert Petrunic s originalne Engleske verije[2] 2991. Iako se nadam da ce prijevod uciniti Nmap dostupniji ljudima Hrvatskog govornog podrucja, ne mogu garantirati da je prijevod kompletan i up to date kao i originalna Engleska verzija. Projevod mozete modificirati i redistribuirati pod uvjetima Creative Commons Attribution Licence[3]. Ovo je prva verzija i najvjerovatnije ima dosta nekonzistentnih prijevoda (rijeci koje su na razlicitim mjestima prevedene drugacije), ali smisao prijevoda je i dalje ostao isti. Nadam se da cu u iducim verzijama napisati vise "knjizevni" tocan prijevod PREGLED OPCIJA Sljedeci pregled opcija je ispisan kad pokrenete Nmap bez ikakvih parametara, a posljednja verzija je uvijek dostupna na: https://nmap.org/data/nmap.usage.txt. Pomaze ljudima zapamtiti najcesce opcije, ali nije zamjena za detaljne upute koje se nalaze u ovom manualu. Neke manje koristene opcije cak se ni ne nalaze u pregledu opcija. Upotreba: nmap [Tip(ovi) skeniranja] [Opcije] {ciljano racunalo} CILJANO RACUNALO: Mozete upisati hostname (naziv racunala), IP adrese, mreze (subnete) isl. Primjer: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254 -iL : Naziv datoteke u kojoj se nalazi popis hostova/mreza -iR : Odaberi nasumicne hostove --exclude : Ne skeniraj navedene hostove/mreze --excludefile : Ne skeniraj navedene hostove/mreze koji se nalaze u navedenoj datoteci OTKRIVANJE HOSTOVA: -sL: List Scan - samo navedi mete koje skeniras -sP: Ping Scan - samo ustanovi da li je host online i ne radi nista vise -P0: Smatraj sve hostove online -- ne pokusavaj ustanoviti da li postoje. -PS/PA/PU [lista_portova]: koristi TCP SYN/ACK ili UDP za otkrivanje hostova -PE/PP/PM: ICMP echo, timestamp i netmask pokusaji skeniranja -n/-R: Ne pokusavaj raditi DNS rezoluciju/uvijek koristi DNS rezoluciju [default: ponekad] TEHNIKE SKENIRANJA: -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon skenovi -sN/sF/sX: TCP Null, FIN, and Xmas skenovi --scanflags : Navedi TCP flagove pomocu kojih zelis skenirati -sI : Idlescan -sO: IP protocol scan -b : FTP bounce scan SPECIFIKACIJA PORTOVA I REDOSLJED SKENIRANJA: -p : Skeniraj samo navedene portove Primjer: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080 -F: Brzo - Skeniraj samo portove navedene u nmap-services fileu -r: Skeniraj portove po redu - ne randomiziraj OTKRIVANJE SERVISA/VERZIJA: -sV: Pokusaj na osnovu otvorenih portova saznati informacije o servisu/verziji --version-light: Koristi najvjerovatnije skenove zbog ubrzane detekcije verzije --version-all: Isprobaj sve vrste skenova za saznavanje verzije --version-trace: Pokazi detaljnu aktivnost skeniranja verzije (za debugging) DETEKCIJA OS-a: -O: Ukljuci OS detekciju --osscan-limit: Ogranici OS detekciju samo na one ciljeve koji obecavaju --osscan-guess: Pogadaj OS malo agresivnije TIMING I PERFORMANSE: -T[0-6]: Podesi predlozak za timing (veci broj je brze) --min-hostgroup/max-hostgroup : Paralelno skeniraj hostove / velicina sken grupe --min-parallelism/max-parallelism : Paraleliziraj sonde --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout : Navedi vrijeme potrebno za povratak (engl. round trip time) sonde. --host-timeout : Odustani od skeniranja ciljanog racunala nakon navedenog vremena u milisekundama --scan-delay/--max-scan-delay : Podesi pauzu izmedu slanja upita OBILAZENJE FIREWALL-a/IDS-a I SPOOFING: -f; --mtu : fragmentiraj pakete (opcionalno sa zadanim MTU-om) -D : Sakrij skan koristenjem mamaca -S : Spoofaj ishodisnu (source) adresu -e : Koristi navedeni interface (mrezni adapter) -g/--source-port : Koristi navedeni broj ishodisnog (source) porta --data-length : Dodaj random podatke u poslane pakete --ttl : Podesi IP time-to-live polje --spoof-mac : Spoofaj svoju MAC adresu ISPIS: -oN/-oX/-oS/-oG : Ispisi scan normalno, kao XML, s|: Ispis u tri glavna formata istovremeno -v: Povecaj verbose nivo (ako zelite postici veci efekt, stavite opciju -vv) -d[nivo]: Podesi ili povecaj debuging nivo (Ima smisla do brojke 9, vise od toga ne) --packet-trace: Pokazi sve poslane i primljene pakete --iflist: Ispisi host interface i rute (za debuging) --append-output: Dodaj ispis u postojece datoteke - nemoj ih prepisati --resume : Nastavi prekinuti scan --stylesheet : XSL stylesheet za transformiranje XML generiranog dokumenta u HTML --no-stylesheet: Sprijeci povezivanje XSL stylesheet-a s XML ispisom RAZNO: -6: Omoguci skeniranje IPv6 protokola -A: Omoguci prepoznavanje OS-a i verzije OS-a --datadir : Navedi customizirani Nmap data file --send-eth/--send-ip: salji sirove (RAW) ethernet frame-ove ili IP pakete --privileged: Pretpostavka da je korisnik koji je pokrenuo Nmap u potpunosti privilegiran (ima admin ovlasti) -V: Ispisi verziju Nmap-a -h: Ispisi ovaj help ekran PRIMJERI: nmap -v -A scanme.nmap.org nmap -v -sP 192.168.0.0/16 10.0.0.0/8 nmap -v -iR 10000 -P0 -p 80 ODABIR CILJANOG RACUNALA Sve sto unesete u komandnu liniju Nmap-a, a nije opcija ili argument opcije (dakle nije parametar samog programa), tretira se kao ciljano racunalo. Najjednostavniji slucaj je da unesete IP adrese ili naziv ciljanog hosta. Ponekad zelite skenirati citavu mrezu hostova. Za tu namjenu Nmap podrzava CIDR adresiranje. Dakle, nakon IP adrese ili naziva racunala, mozete dodati /numbits (broj bitova) koji se koriste kao mrezni ID. Npr. 192.168.10.0/24 ce skenirati 256 hostova izmedu 192.168.10.0 (binarno: 11000000 10101000 00001010 00000000) i 192.168.10.255 (binarno: 11000000 10101000 00001010 11111111) ukljucujuci i 192.168.10.0 i 192.168.10.255. 192.168.10.40/24 ce uciniti istu stvar. Ako smo pak odabrali scanme.nmap.org, a recimo da je IP adresa tog hosta 205.217.153.62, scanme.nmap.org/16 bi skeniralo 65,536 IP adresa izmedu 205.217.0.0 i 205.217.255.255. Najmanja dozvoljena vrijednost je 1 (sto bi skeniralo gotovo cijeli internet), dok je najveca dozvoljena vrijednost 32, sto skenira samo jednog hosta. CIDR notacija je kratka, ali nije uvijek dovoljno fleksibilna. Npr. zelite skenirati 192.168.0.0/16, ali zelite izbjeci sve IP adrese koje zavrsavaju s .0 ili .255, jer su to mrezni ID i broadcast IP adresa u klasful adresiranju. Nmap za tu situaciju podrzava adresiranje na nivou okteta. Umjesto da navedete normalnu IP adresu, mozete navesti listu brojeva odvojenih zarezom (1,2,3) ili podrucja za svaki oktet (1-254). Npr. 192.168.0-255.1-254 ce preskociti sve adrese u navedenom podrucju koje zavrsavaju na .0 i .255, tj. skenirat ce sve IP adrese od 192.168.0.1 do 192.168.255.254, preskacuci one IP adrese koje u zadnjem oktetu imaju 0 ili 255. Podrucja nisu limitirana na zadnji oktet, recimo, 0-255.0-255.13.37 ce skenirati SVE IP adrese koje zavrsavaju na 13.37. Ovaj nacin skeniranja moze biti koristan za razna istrazivanja i ispitivanja. IPv6 adrese mogu biti specificirane iskljucivo u potpunosti definirane (fully qualified) kao IP adrese ili naziv hosta. CIDR i oktet podrucja nisu podrzani za IPv6 jer se rijetko koriste. Nmap prihvaca navodenje vise hostova u komandnoj liniji, a hostovi ne moraju biti istog tipa. Naredba nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.0-255 ce uciniti upravo ono sto ocekujete od nje. Ciljevi skeniranja su obicno navedeni u samoj komandnoj liniji, ali podrzane su i sljedece opcije: -iL (Iscitaj parametre iz liste) Iscita informacije o ciljanom hostu iz ulazne datoteke. Proslijediti Nmapu veliku kolicinu hostova iz komandne linije izgleda nepregledno, ali to je ono sto u vecini slucajeva i zelimo. Npr. iz DHCP servera ste izvukli popis 10 000 trenutno iznajmljenih IP adresa i zelite ih skenirati ili mozda zelite skenirate sve ip adrese osim tih kako bi pronasli hostove koji imaju neautoriziranu staticku IP adresu. Da bi to postigli, generirajte popis hostova koje zelite skenirati u neku datoteku i proslijedite tu datoteku Nmap-u kao argument opciji -iL. U datoteci mogu biti unosi u bilo kojem formatu koji Nmap podrzava u samoj komandnoj liniji (IP adresa, naziv hosta, CIDR, IPv6, ili oktet nekog podrucja). Svaki unos mora biti odvojen s jednim ili s vise razmaka, tabom ili novim redom. Isto tako mozete staviti minus (-), ukoliko zelite da Nmap iscita hostove iz standardnog unosa umjesto iz navedene datoteke. -iR (Nasumicno odaberi ciljano racunalo) Za istrazivace interneta i ostale koji zele odabrati ciljano racunalo nasumicno. Argument broj hostova kaze Nmap-u koliko IP adresa da generira. Nezeljene IP adrese, poput privatnih, multicast ili nedodjeljenih IP adresnih podrucja su automatski izbacene. Argument 0 moze biti naveden za skeniranje koje nikad nece zavrsiti. Imajte na umu da neki mrezni administratori ne vole neautorizirano skeniranje i mogli bi se zaliti vasem ISP-u, sto bi pak moglo rezultirati zabranom pristupa internetu za vas. Koristitte ovu opciju na vlastitu odgovornost. Ukoliko se pak, jednog kisnog popodneva, nadete u situaciji da ne znate sto bi sa sobom, iskusajte naredbu nmap -sS -PS80 -iR 0 -p80 kako bi nasumicno pronasli web servere za browsanje. --exclude (iskljuci iz skeniranja hostove/mreze) Navedite zarezom odvojenu listu hostova koje zelite iskljuciti iz skena iako se nalaze u mreznom podrucju koje ste specificirali. Popis koji proslijedite na ovaj nacin koristi normalnu Nmap sintaksu, pa mozete upisati naziv hosta, CIDR mrezne blokove, oktete rangeva isl. To moze biti korisno u slucaju kad mreza koju zelite skenirati ima nedodirljive i kriticne servere, sisteme za koje se zna da ce odmah reagirati na port sken, ili postoje podmreze koje administriraju drugi administratori i ne zelite skenirati njihov dio mreze. --excludefile (Iskljuci iz skeniranja koristeci ulazni file) Ova opcija nudi istu funkcionalnost kao i prije opisana opcija --exclude, s tim da hostove koje ne zelite skenirati ne navodite u komandnoj liniji, vec unutar datoteke. Hostovi mogu biti navedeni u datoteci (naziv_datoteke) koji kao delimiter koristi novi red, razmak ili tab. POSTUPAK PRONALAZENJA HOSTOVA Jedan od prvih koraka kad je u pitanju sakupljanje informacija o mrezi je smanjivanje (ponekad velike) kolicine IP adresnih podrucja u popis aktivnih i zanimljivih hostova. Skeniranje svih portova za svaku adresu je sporo i najcesce nepotrebno. Naravno, ono sto nekog hosta cini zanimljivim uvelike ovisi o razlogu samog skena. Mrezni administratori ce mozda biti zainteresirani samo za hostove koji imaju pokrenut odredeni servis, dok ce sigurnosni auditori biti zainteresirani za svaki uredaj s IP adresom. Administratoru ce mozda biti dovoljno koristenje ICMP pinga kako bi pronasao hostove na mrezi, dok ce vanjski penetration tester koristiti siroki spektar alata i nebrojene sonde u pokusaju da obide zabrane postavljene na vatrozidu. Buduci da su potrebe korisnika kod pronalazenja hostova tako razlicite, Nmap nudi siroki spektar opcija za prilagodavanje koristenim tehnikama. Pronalazenje hostova (engl host discovery) se ponekad naziva Ping scan, ali ide daleko dalje od obicnog ICMP echo paketa povezanog sa sveprisutnim ping alatom. Korisnici mogu preskociti dio pinganja s list skenom (-sL) ili iskljucivanjem pinganja (-P0) ili da pristupe mrezi s kombinacijama multi port TCP SYN/ACK, UDP i ICMP sondi. Namjena tih sondi je iznudivanje odgovora koji dokazuje da je IP adresa u stvari aktivna (koristena je od strane hosta ili mreznog uredaja). Na vecini mreza je samo jedan mali postotak IP adresa aktivan. To je pogotovo tocno za mreze blagoslovljene RFC1918 dokumentom (privatni adresni prostor poput 10.0.0.0/8). Navedena mreza ima 16 miliona IP adresa, ali imao sam prilike vidjeti da je koriste firme s manje od tisucu masina. Postupak pronalazenja hostova moze pronaci koja su to racunala u tom moru neaktivnih IP adresa. Ukoliko ne navedete nikakvu opciju Postupku pronalazenja hostova, Nmap salje TCP ACK paket namjenjen portu 80 i ICMP echo zahtijev na ciljano racunalo. Izuzetak od ovog pravila je taj da je ARP sken koristen za ciljana racunala na lokalnoj ethernet mrezi. Za neprivilegirane UNIX shell korisnike, Nmap salje SYN paket umjesto ACK-a koristenjem connect() sistemskog poziva. To je jednako opcijama -PA -PE. Takav nacin pronalazenja hostova je obicno dostatan kad su u pitanju lokalne mreze, ali preporucen je malo potpuniji set sondi za istrazivanje kod sigurnosnog auditinga. Opcija -P* (koja odabire ping tipove) moze biti kombinirana. Mozete povecati sanse provaljivanja vatrozida slanjem mnogo sondi koje koriste razlicite TCP portove/zastavice (engl. flags) i ICMP kodove. Takoder imajte na umu da se po defaultu na lokalnoj mrezi za otkrivanje hostova koristi ARP discovery (-PR) cak i kad navedete druge -P* opcije zbog toga jer je gotovo uvijek brzi i efikasniji. Sljedece opcije upravljaju postupkom otkrivanja hostova. -sL (List Sken) List sken nije skeniranje hosta, vec saznavanje nekih javno dostupnih informacija o njemu bez slanja ijednog paketa prema tom hostu. List scan jednostavno ispise svakog hosta kojeg smo specificirali i napravi reverse DNS rezoluciju da bi saznao njegovo ime. Iznenadujuce je koliko korisnih informacija mozete dobiti ovim nacinom "skeniranja". Npr. fw.chi.playboy.com je vatrozid Cikaskog (Chichago) ureda firme Playboy Enterprises. Nmap na kraju navede i ukupan broj IP adresa koje pripadaju tom hostu. List Sken je koristan u situacijama kada se zelite uvjeriti da imate ispravne IP adrese koje zelite skenirati. Ukoliko List sken izbaci nazive domena koje ne poznajete bilo bi dobro provjeriti prije nego pokrenete skeniranje, jer ne bi bilo dobro da pocnete skenirati krive hostove ;-). Kako je ideja samo ispisati popis ciljanih hostova, ne mozete kombinirati opcije za funkcionalnosti viseg nivoa, poput skeniranja portova, detekcije OS-a, ping skeniranja isl. Ukoliko zelite iskljuciti ping skeniranje, a ipak koristiti funkcionalnosti viseg nivoa, procitajte opis -P0 opcije. -sP (Ping Sken) Ova opcija kaze Nmap-u da napravi samo ping sken (otkrivanje hostova) i da ispise hostove koji su odgovorili na skeniranje. Ne radi se nikakvo dodatno testiranje (poput port skeniranja ili detekcije OS-a). To je nacin skeniranja koji je stupanj intruzivniji od list skena ali se moze koristiti u istu svrhu. Dozvoljava lagano "pretrazivanje neprijateljskog teritorija" (engl. reconnaissance), bez pretjeranog privlacenja paznje, jer znati koliko hostova je stvarno "zivo" na mrezi je vaznija informacija za napadaca ili sigurnosnog auditora, nego lista koju je izbacio list scans popisom svih IP adresa i hostova koji postoje. Sistemski administratori takoder nalaze ovu opciju poprilicno korisnom. Moze se koristiti za pronalazenje dostupnih racunala na mrezi ili koristiti kao alat za nadgledanje dostupnosti servera. Taj nacin primjene se naziva ping sweep i mnogo je pouzdaniji od pinganja broadcast adrese zato jer mnogi hostovi ne odgovaraju na broadcast upite. (Konkretno windows masine ne odgovaraju na broadcast ping, ali odgovaraju na druge tipove broadcast paketa). Po defaultu -sP opcija salje ICMP echo i TCP paket na port 80. Kad je pokrenuta od strane neprivilegiranog korisnika (korisnika koji nije lokalni administrator), poslan je SYN paket na port 80 (koristenjem API poziva connect() ). Kad privilegirani korisnik pokusava skenirati hostve na lokalnoj mrezi, koriste se ARP zahtjevi (-PR) osim ako nije specificirana opcija --send-ip. Opciju -sP mozete kombinirati s bilo kojim tipom otkrivajucih (discovery) tipova skeniranja (sve -P* opcije osim -P0 opcije) kako bi postigli vecu fleksibilnost. Ukoliko se koristi bilo koji od tih tipova skeniranja i port broj, automatski su defaultne postavke skeniranja premoscene (ACK i echo zahtjevi). Ukoliko su izmedu hosta na kojem je pokrenut Nmap i ciljanog hosta nalaze vatrozidi, preporuka je koristiti upravo te tehnike kako vatrozid ne bi filtrirao upite ili odgovore na njih. -P0 (Bez pinganja) Ova opcija preskace fazu otkrivanja hostova. Ukliko ne koristite ovu opciju, Nmap pokusava ping skeniranjem saznati koja racunala su dostupna kako bi SAMO njih i skenirao. Ukoliko koristite ovu opciju Nmap ce skenirati svakog navedenog hosta bez obzira da li je dostupan ili ne, jer nece raditi provjeru. Ukoliko odaberete kompletnu klasu B (/16 po CIDR notaciji) Nmap ce skenirati svih 65536 hostova, bez obzira da li su "zivi" ili ne. Napomena: drugi karakter u ovoj opciji je NULA, a ne veliko slovo O. Ukoliko je na hostu zatvoren ICMP protokol (sto je slucaj kod 90% racunala na internetu), a niste stavili -P0 opciju, Nmap nece skenirati ta racunala, dakle, ukoliko zelite skenirati racunala koja ne odgovaraju na ICMP echo upit, a znate da postoje i da su "zivi" stavite ovu opciju. -PS [lista_portova] (TCP SYN Ping) Ova opcija salje prazan TCP paket s upaljenim SYN flagom. Defaultni odredisni port je 80 (mozete se konfigurirati kod kompajliranja programa na nacin da promijenite DEFAULT_TCP_PROBE_PORT u nmap.h biblioteci), no, mozete navesti i neki drugi port kao parametar. Isto tako je moguce poslati zarezom odvojenu listu portova kao parametar ovoj opciji (npr. -PS22, 23,25,80,113,1050,35000). U tom ce slucaju nmap poslati paket na svaki od navedenih portova paralelno. SYN flag u paketu kaze ciljanom hostu da se zelite spojiti na navedeni port/portove. Ukoliko je port zatvoren, odgovor koji ce Nmap dobiti od ciljanog hosta je RST (reset). Ukoliko je port otvoren, ciljano racunalo ce poslati SYN/ACK paket, sto je drugi korak u trostrukom rukovanju TCP protokola. Racunalo na kojem je pokrenut Nmap u tom trenutku prekida konekciju na nacin da posalje RST paket (umjesto ACK paketa koji bi zavrsio trostruko rukovanje i uspostavio konekciju sa ciljanim hostom). RST paket je poslao kernel racunala na kojem je pokrenut Nmap, jer je dobio SYN/ACK paket koji nije ocekivao. Nmap ne zanima da li je port otvoren ili zatvoren, RST ili SYN/ACK odgovor koji je dobio dovoljan su odgovor da je racunalo "zivo". Bez obzira na to RST odgovor znaci da je racunalo tu i da je "zivo", dok SYN/ACK odgovor uz to znaci i da racunalo "slusa" na navedenom portu. Na UNIX masinama samo privilegirani korisnik root moze slati i primati sirove (RAW) TCP pakete. Za neprivilegirane korisnike napravljen je obilazni put u kojem Nmap automatski poziva connect() API na svaki navedeni port. To je postiglo efekt slanja SYN paketa na coljani host i iniciran je pousaj ostvarivanja konekcije. Ukoliko connect() API vrati brzi odgovor uspjesnog spajanja ili ECONNREFUSED gresku, TCP stack na OS-u je dobio SYN/ACK ili RST od ciljanog hosta i host je oznacen kao dostupan. Ukoliko konekcija "visi" dok ne istekne timeout, ciljani host je oznacen kao nedostupan (ugasen). Navedeni obilazni put se koristi i kod IPv6 konekcija, je Nmap jos nema implementiranu izradu sirovih (RAW) paketa za IPv6 protokol. -PA [lista_portova] (TCP ACK Ping) TCP ACK ping je slican SYN pingu. Razlika je, sto je lako zakljuciti iz samog naziva, u tome sto se umjsto SYN flaga upali ACK flag. Takav paket podrazumijeva da je konekcija vec uspostavljena iako nije, samim tim bi ciljani hostovi uvijek trebali odgovoriti s RST paketom, te na taj nacin potvrditi svoje postojanje. -PA opcija koristi isti defaultni port kao i SYN scan (port 80) i isto kao i SYN scan moze primiti listu portova u istom formatu. Ukoliko neprivilegirani korisnik pokusa pokrenuti Nmap s ovom opcijom ili je u pitanju IPv6 TCP konekcija, koristi se obilazni put opisan u TCP SYN pingu. Ova opcija nije savrsena, jer connect() u stvari salje SYN pakete umjesto ACK paketa Razlog zasto koristiti i SYN i ACK sonde je radi povecavanja sansi za obilazenje vatrozida. Mnogi administratori konfiguriraju rutere i ostale jednostavne vatrozide na nacin da zaustavljaju dolazece SYN pakete osim ako nisu namijenjeni nekim javnim servisima, poput weba ili mail servera. Takav nacin podesavanja uredaja sprjecava nedozovljene konekcije prema racunalima tvrtke, ali omogucava neogranicen izlazni promet prema internetu. Ovakav pristup konekcija bez stanja (engl. stateless) oduzima malo resursa na vatrozidima/ruterima i podrzan je na gotovo svim hardverskim i softverskim filterima. Netfilter/ iptables, poznati vatrozid na Linux operativnom sustavu nudi opciju --syn kako bi mogli implementirati ovakav pristup konekcija bez stanja (engl. stateless). Kod tako konfiguriranih vatrozida, sonde SYN ping (-PS) ce najvjerovatnije biti blokirane kad ih posaljete na zatvorene portove. No medutim, ACK sonde ce bez problema prolaziti kroz njih. Drugi tip vatrozida podrzava konekcije sa stanjem (engl. stateful) koji odbacuju sve neocekivane pakete. Ova opcija se u pocetku koristila samo kod naprednijih vatrozid rjesenja, ali je vremenom postala rasprostranjenija. Linux vatrozid Netfilter/iptables podrzava ovu opciju koristenjem opcije --state, koja kategorizira pakete vezano uz stanje konekcije. Skeniranjem takvih sustava veca je vjerovatnost da cemo od SYN sonde dobiti nekakvu informaciju, nego od ACK, jer se ACK sonde koje nemaju uspostavljenu konekciju tretiraju kao lazne i odbaceni su bez ikakvog odgovora. U slucaju dvojbe, najbolje je poslati i SYN i ACK sonde naviodenjem opcija -PS i -PA. -PU [lista_portova] (UDP Ping) Jos jedna metoda detekcije hostova je i UDP ping. UDP ping salje prazne UDP pakete (osim ako nije definirana opcija --data-length) na navedene portove. Portlist opcija ima isti format kao i prije obradene opcije -PS i -PA. Ukoliko nije naveden niti jedan port, defaultni je 31338. To se moze promijeniti kod kompajliranja promjenom DEFAULT_UDP_PROBE_PORT u nmap.h biblioteci. Namjerno je odabran visoki nestandardni port, jer bi slanje paketa na otvorene UDP portove dalo nezeljene rezultate za ovu vrstu skena. Nakon sto je ciljano racunalo dobilo paket na zatvoreni port, trebalo bi odgovoriti ICMP paketom " nedostupan port" (engl. port unreachable). Na osnovu toga Nmap moze zakljuciti da je ciljani host "ziv". Drugi tipovi ICMP gresaka, poput nedostupan host/mreza ili premasen TTL (engl. TTL exceeded) nagovjestavaju da je host ugasen ili nedostupan. Ukoliko nema nikakvog odgovora, Nmap takoder zakljuci da je host ugasen/ nedostupan. Ukoliko je paket stigao na otvoreni UDP port, vecina servisa ce jednostavno ignorirati prazan UDP paket i Nmap nece dobiti nikakav odgovor. Zbog toga je defaultni port 32338, jer je mala mogucnost da ce neki servis koristiti taj port. Postoje i neki servisi, poput chargen-a, koji ce odgovoriti na prazan UDP paket i na taj nacin otkriti Nmapu da je host "ziv". Glavna prednost ovog tipa skeniranja je da obilazi vatrozide i paket filtere koji skeniraju samo TCP promet. Npr. Linksys BEFW11S4 bezicni (wireless) ruter na vanjskom mreznom adapteru filtrira samo TCP portove, a na UDP skenove odgovara s ICMP port nedostupan. -PE; -PP; -PM (ICMP tipovi pinganja) Uz do sad navedene tipove skeniranja i otkrivanja hostova, Nmap moze slati i standardne ICMP pakete koristenjem klasicnog ping programa. Nmap salje ICMP paket tipa 8 (echo request) na ciljanu IP adresu ocekujuci odgovor tipa 0 (echo reply), ukoliko je host "ziv". Na stetu mreznih istrazivaca, vecina hostova i vatrozida na internetu blokira te pakete umjesto da na njih odgovara kako je opisano u RFC 1122[4] dokumentu. Zbog toga su ICMP skenovi rijetko ili gotovo nikad pouzdani kad se ciljani host nalazi na internetu, ali za sistem administratore koji nadgledaju unutrasnje mreze, ovo je praktican i najjednostavniji pristup za skeniranje hostova. Opisani nacin skeniranja mozete upaliti koristenjem -PE opcije. Bez obzira na to sto je echo zahtijev standardni ICMP ping upit, Nmap se nije zaustavio na tome. Ako pogledate ICMP standard (RFC 792[5]) vidjet cete da je u njemu naveden i timestamp zahtijev, information zahtijev i zahtijev za adresnom maskom i to pod kodovima 13,15 i 17. Iako je namjena tih upita saznati informacije poput adresne maske i trenutnog vremena, vrlo ih je lako iskoristiti za otkrivanje hostova. Host koji odgovori je "ziv". Nmap u trenutnoj verziji ne podrzava information zahtijev, jer se ne koristi cesto. RFC 1122 inzistira na tome da "host NE BI TREBAO implementirati taj ICMP tip poruka". Upite za timestamp i adresnu masku mozete poslati s -PP i -PM opcijama. Timestamp odgovor (ICMP kod 14) ili odgovor adresne maske (kod 18) otkrivaju da je ciljani host "ziv". Ta dva upita su korisni u slucajevima kad administratori blokiraju echo zahtijev pakete, ali zaborave blokirati ostale ICMP pakete. -PR (ARP Ping) Jedan od najcescih scenarija koristenja Nmap-a je skeniranje ethernet LAN-a. Na vecini LAN-ova, posebno na onima koji koriste privatne ip adrese definirane u RFC 1918 dokumentu je vecina IP adresa u stvari neiskoristena. Kad Nmap pokusa poslati sirovi IP paket poput ICMP echo zahtjeva, operativni sustav mora ustanoviti MAC adresu racunala koja pripada ciljanoj IP adresi, kako bi moglo adresirati ethernet frame. To je obicno sporo i problematicno jer operativni sustavi nisu napisani s pretpostavkom da ce u vrlo kratkom vremenskom periodu morati poslati milione ARP zahtjeva prema nepostojecim hostovima. ARP sken zaduzuje Nmap i njegove optimizirane algoritme za ARP zahtjeve i ukoliko Nmap dobije odgovor ne mora uopce pokretati IP bazirani ping, jer vec zna da je racunalo dostupno. Ovo cini ARP scan mnogo brzim i pouzdanijim od IP baziranog skena, pa se defaultno koristi kod skeniranje hostova na ethernetu za koje Nmap zakljuci da su na lokalnoj mrezi. Cak ako ste i naveli neke druge tipove pinga, (poput -PE ili -PS), Nmap ce koristiti ARP sken za sve hostove koji su na istoj mrezi. Ukoliko ne zelite koristiti ARP sken, navedite opciju --send-ip. -n (Bez DNS rezolucije) Ova opcija kaze Nmap-u da nikad ne radi obrnutu DNS rezoluciju (engl. reverse DNS lookup) na aktivnim IP adresama koje pronade. Kako je obrnuta DNS rezolucija cesto spora, ova opcija ubrzava postupak. -R (DNS rezolucija za sva ciljana racunala) Ova opcija kaze Nmap-u da uvijek radi obrnutu rezoluciju ciljanih IP adresa. U normalnim okolnostima to se radi samo kad je potvrdeno da racunalo postoji. --system-dns (Koristi sistemski DNS rezolver) Defaultno Nmap radi rezolving adresa slanjem upita direktno imenskim serverima (engl. name servers) koji su podeseni na vasem racunalu i ceka odgovore. Mnogo zahtjeva je poslano istovremeno (10 i vise) kako bi brze radilo. Ovu opciju navedite ukoliko zelite koristiti sistemski rezolver (jedna po jedna IP adresa pozivom sistemskog API poziva getnameinfo()). Ovo je sporije i rijetko je korisno osim ako u Nmap DNS kodu postoji greska -- molim kontaktirajte nas u tom slucaju. Sistemski rezolver se uvijek koristi za IPv6 skenove. --dns-servers (Serveri koji ce se koristiti za obrnute DNS upite) U normalnim okolnostima, Nmap ce pokusati pronaci vase DNS servere iz resolv.conf datoteke (na UNIX-u) ili iz registry baze podataka (na Win32). Naravno, postoji mogucnost da navedete servere po zelji koristenjem ove opcije. Ova opcija se ne koristi ako koristitite opciju --system-dns ili IPv6 sken. Koristenje vise DNS servera je obicno brze nego samo jednog. OSNOVE SKENIRANJA PORTOVA Bez obzira na to sto je vremenom Nmap porastao gledano s funkcionalne strane, poceo je kao efikasan port skener, te mu to i dalje ostaje osnovna namjena. Jednostavna naredba nmap ciljani host skenira vise od 1660 TCP portova na navedenom racunalu. Iako je vecina port skenera grupirala portove u otvorene ili zatvorene, Nmap ima granularniji pristup, te dijeli portove na: otvorene, zatvorene, filtrirane, nefiltriran, otvorene|filtrirane i zatvorene|filtrirane. Gore navedena stanja ne poticu od stvarnih stanja portova, vec su opis onoga sto Nmap u stvari vidi. Npr., ukoliko Nmap-om skenirate neku mrezu, dok ste fizicki spojeni na nju, Nmap bi mogao reci da je port 135 otvoren, dok bi isti taj sken u slucaju da tu istu mrezu skenirate s interneta, najvjerovatnije rekao da je port filtriran (nalazi se iza vatrozida ili paket filtera). Sest stanja portova kako ih Nmap prepoznaje otvoren Aplikacija aktivno prihvaca TCP konekcije ili UDP pakete na navedenom portu. To je ujedno i cilj skoro svakog skeniranja. Osobe koje se bave sigurnoscu znaju da je svaki otvoreni port, potencijalno mjesto napada. Napadaci i penetration testeri zele iskoristiti otvorene portove, dok ih administratori pokusavaju zatvoriti ili zastititi vatrozidima, bez da zabrane pristup legitimnim korisnicima. Skeniranje otvorenih portova je zanimljivo ne samo za sigurnosne skenove, vec i u slucaju kad zelite saznati koji servisi i aplikacije su dostupni na mrezi. zatvoren Zatvoreni port je dostupan (odgovorio je na Nmap-ov upit), ali na njemu ne slusa niti jedna aplikacija. Zatvoreni port nam govori da se na toj IP adresi nalazi host koji je upaljen, koji najvjerovatnije nije iza vatrozida ili paket filtera, a to nam moze pomoci i i otkrivanju verzije OS-a. Kako su zatvoreni portovi dostupni (nitko nam nije zabranio pristup do njih), isplati se kasnije ponoviti sken, jer mozda ce kasnije biti otvoreni. Administratori se trude zabraniti pristup takvim portovima koristenjem vatrozida i paket filtera, u tom bi slucaju port bio filtriran, a ne zatvoren (sto je objasnjeno u nastavku). filtriran Nmap ne moze ustanoviti da li je port otvoren ili ne, jer neki uredaj (vatrozid, pravila na ruteru, paket filter) blokira upite prema tom portu. Ti su portovi frustrirajuci za hakere, jer ne daju gotovo nikakve informacije. Ponekad odgovaraju s ICMP porukom o gresci poput tip 3 kod 13 (odrediste je nedostupno - komunikacija administrativno zabranjena), ali filteri koji samo odbace paket i ne daju nikakav odgovor na njegu su najcesci. Zbog toga Nmap mora poslati upit vise puta kako bi bio siguran da je paket odbacen zbog filtriranja, a ne zbog mreznog zagusenja te samim tim usporava skeniranje. nefiltriran Ovo stanje znaci da je port dostupan, ali Nmap ne moze ustanoviti da li je otvoren ili zatvoren. Samo ACK sken (koji se koristi za otkrivanje pravila na vatrozidu moze vratiti nefiltriran kao odgovor. Skeniranje nefiltriranih portova nekom drugom metodom (poput Windows skena, SYN skena ili FIN skena moze dati odgovor na pitanje da li je port otvoren ili zatvoren. otvoren|filtriran Nmap okarakterizira port ovim stanjem kada nije u mogucnosti ustanoviti da li je port otvoren ili filtriran. To se dogodi u situacijama kada na upit ne dobije nikakav odgovor. Nedostatak odgovora moze znaciti da je paket filter odbacio paket i/ili bilo kakav odgovor koji je taj paket inicirao. Samim tim Nmap nije siguran da li je port otvoren ili filtriran. UDP, IP protokol, FIN Null i Xmas scan mogu klasificirati port ovim stanjem. zatvoren|filtriran U slucaju kad Nmap ne moze ustanoviti da li je port zatvoren ili filtriran, okarakterizirat ce ga ovim stanjem. IPID Idle Scan je jedina sken metoda koja moze vratiti ovakav rezultat. TEHNIKE SKENIRANJA PORTOVA Kako nisam previse vican popravcima na automobilu, mogu potrositi sate i sate samo da nadem odgovarajuci alat (poput cekica, ljpljive trake, kljuca isl.). Nakon sto odustanem od smjesnih pokusaja da nesto popravim i odvezem auto kod stvarnog mehanicara, zacuden sam kako jednostavno i nadasve uspjesno izvadi iz velike kutije s alatatom bas onaj koji je potreban za uspjesan popravak. Umjestnost skeniranja portova je slicna. Strucnjak razumije mnostvo tehnika skeniranja i odabere bas onu (ili kombinaciju vise tehnika) koja je odgovarajuca za odredeni posao. Neiskusni korisnisi i script kiddies (osobe koje koriste skripte koje je napisao netko drugi ne razumijevajuci sto i kako te skripte rade), pokusavaju sve rijesiti defaultnim SYN skanom. Kako je Nmap besplatan program, jedina prepreka izmedu Vas i masteriranja port skeninga je znanje. To je definitivno suprotno od automehanicarskog posla, u kojem recimo moz ete znati da Vam treba zracni kompresor, ali to ne umanjuje cinjenicu da ga trebate i kupiti. Vecina tipova skeniranja koje nmap podrzava dostupni su privilegiranim korisnicima (morate biti ulogirani kao administrator). To je zbog toga jer salju sirove (RAW) pakete koji zahtjevaju root pristup u UNIX svijetu. Koristenje administratorskog korisnickog accounta je preporuceno na windows operativnim sustavima, mada Nmap ponekad radi i s neprivilegiranim korisnicima, ako je WinPCap prethodno instaliran na sustav i aktivan. Zahtjev za root privilegijama je bila ozbiljna prepreka kad je Nmap prvi put pusten u javnost 1997. godine, jer je vecina korisnika imala pristup dijeljenim shell accountima. Sada je svijet drugaciji. Kompjutori su jeftiniji, veci broj ljudi ima stalni pristup internetu, a desktop UNIX sustavi su dominantni (ukljucujuci linux i MAC OS X). Windows verzija Nmap-a je takoder dostupna, te je samim tim i Nmap dostupniji vecem broju korisnika. Zbog svih tih razloga, sve je manja potreba korisnika da pokrecu Nmap logirani sa dijeljenim shell accountima. To je naravno super stvarm jer je Nmap pokrenut pod accountom privilegiranog korisnika mnogo mocniji i fleksibilniji. Iako Nmap pokusava reproducirati ispravan rezultat svojih skenova, imajte na umu da su sve unutrasnje komponente Nmap-a bazirane na paketima vracenim od ciljanih racunala (ili firewall uredaja ispred njih). Neki hostovi mogu biti nepouzdani i podeseni na nacin da vrate pakete koji ce zavarati Nmap i dati krivi rezultat. Jos cesci su hostovi koji ne podrzavaju RFC standard, te ne odgovaraju onako kako Nmap ocekuje od njih. FIN, Null i Xmas skenovi su pogotovo podlozni tim problemima. Problemi poput gore navedenih su specificni za pojedine tipove skeniranja i o tome se raspravlja u svakoj od tih tehnika skeniranja. Ovo poglavlje dokumentira hrpu tehnika skeniranja portova koje podrzava Nmap. Samo jedna od spomenutih metoda moze biti koristena u jednom trenutku, osim UDP skena (-sU) koji moze biti kombiniran s bilo kojom od TCP sken matoda. Radi lakseg pamcenja, opcije skeniranja portova su u obliku -sC, gdje je C vidljiv iz samog naziva sken tipa i obicno je to prvo slovo. Jedini izuzetak je FTP bounce scan (-b). Defaultno, Nmap radi SYN scan iako ce ga zamijeniti s Connect() skenom, ako korisnik nema odgovarajuce ovlasti slanja raw paketa (root pristup na UNIX sustavima) ili ako je specificirana IPv6 kao ciljana IP adresa. Od svih navedenih tipova skenova u ovom poglavlju, neprivilegirani korisnik moze pokrenuti samo Connect() i FTP bounce scan. -sS (TCP SYN scan) SYN scan je defaultni i najpopularniji nacin skeniranja i to zbog opravdanih razloga. Moze ga se izvesti brzo, moze skenirati tisuce portova u sekundi na brzim mrezama koje nisu opterecene firewall uredajima koji utjecu na kretanje paketa. SYN scan je relativno neagresivan i nevidljiv, jer nikad ne zavrsi TCP konekciju (ne uspostavi trostruko rukovanje do kraja). Takoder je jednako efikasan na svim implementacijama TCP stacka, jer ne ovisi o specificnim platformama kao sto je to slucaj kod Nmap-ovog Fin/Null/Xmas, Maimon i Idle skena. Takoder je u mogucnosti cisto i pouzdano razluciti izmedu otvorenog, zatvorenog i filtriranog stanja porta. Tehnika SYN scana se najcesce naziva poluotvoreno skeniranje, jer nikad ne uspostavite potpunu TCP konekciju. Naime, posaljete SYN paket, kao sto bi ga poslali u slucaju da zelite uspostaviti stvarnu TCP konekciju i cekate na odgovor. Ako kao odgovor dobijete SYN/ACK, znaci da postoji aplikacija koja slusa na tom portu (port je otvoren), dok RST (reset) znaci da ne postoji aplikacija koja slusa na tom portu (port je zatvoren). Ukoliko i nakon nekoliko ponovnih slanja upita nema nikakvog odgovorar, port je okarakteriziran kao filtriran. Port je takoder oznacen kao filtriran ako kao odgovor dode ICMP unreachable error (ICMP nedostupan - tip 3, kodovi 1, 2, 3, 9, 10 ili 13). -sT (TCP connect() scan) TCP Connect() scan je defaultni TCP tip skeniranja ukoliko je SYN scan nedostupan. To se dogada u slucajevima kad korisnik nema privilegiju slanja raw paketa ili kad je skenirani host na IPv6 mrezi. Umjesto da salje raw pakete, kao sto to radi vecina drugih tipova skeniranja, Nmap zatrazi operativni sustav da uspostavi konekciju s ciljanim racunalom na poru kojizelimo skenirati, na nacin da posalje connect() sistemski poziv. To je isti sistemski poziv koji koriste web preglednici, P2P klijenti i vecina drugih mreznih aplikacija kad z ele uspostaviti konekciju. Dio je programskog unosa poznatog kao Berkeley Sockets API. Umjesto da iscitava raw pakete Nmap koristi navedeni API kako bi dobio statusne informacije svake pokusane konekcije. Ukoliko je SYN scan dostupan, obicno je i bolji odabir. Naime, Nmap ima puno manje kontrole nad connect() API pozivom, nego nad raw paketima, te je samim tim Nap manje efikasan. Sistemski poziv napravi potpunu konekciju na otvorene portove ciljanog racunala umjesto da napravi reset kao sto je slucaj kod SYN skena. Tim postupkom ne samo da gubimo vise vremena kako bi saznali da li su portovi otvoreni ili ne, nego postoji i veca vjerovatnost dsa ce host zapisati u log pokusaj spajanja. Cinjenica je da ce svaki IDS sustav logirati i SYN i Connect scan, ali isto tako je cinjenica da vecina racunala nema IDS sustav. Vecina servisa na UNIX-oidima ce dodati zapis u syslog i (ponekad) kripticnu poruku o gresci, kad se Nmap spoji i odmah odspoji bez slanja podataka. Jadno napisani servisi se skrse kad se to dogodi, mada je to stvarno rijetkost. Administrator koji vidi hrpu pokusaja spajanja u logovima koji su svi inicirani s jednog hosta, odmah ce znati da je netko skenirao portove Connect() metodom. -sU (UDP skenovi) Iako vecina popularnih servisa na internetu korisiti TCP protokol, UDP[6] servisi su isto tako siroko zastupljeni. DNS, SNMP i DHCP (registrirani portovi 53, 161/162 i 67/68) su tri najpoznatija. Zbog toga sto je UDP skeniranje mnogo sporije i teze za izvesti nego TCP, neki sigurnosni auditori, ignoriraju UDP portove. To je velika pogreska, jer su exploitabilni UDP servisi cesta pojava i napadaci ih sigurno nece ignorirati. Srecom, Nmap moze pomoci u istrazivanju UDP portova. UDP scan aktivirate naredbom -sU. Moze biti kombinirana s TCP skenom poput SYN skena ( -sS), kako bi oba protokola bili provjereni "jednim udarcem". UDP scan radi na nacin da posalje prazan UDP header (bez podataka) na svaki ciljani port. Ukoliko je vracen ICMP port unreachable (ICMP nedostupan port) i to tip 3 kod 3, onda je port zatvoren. Druge ICMP greske (tip 3, kodovi 1, 2, 9, 10 ili 13) oznacavaju port kao filtriran.Povremeno ce servis odgovriti s UDP paketom, dokazujuci da je port otvoren. Ukoliko nakon nekoliko retransmisija nema nikakvog odgovora, port je okarakteriziran kao otvoren|filtriran. To znaci da bi port mogao biti otvoren ili mozda paket filteri blokiraju promet prema njemu. Version scan (-sV) moze pomoci da se ustanovi koji portovi su stvarno otvoreni, a koji su filtrirani. Veliki izaziv kod skeniranja UDP portova je napraviti ti brzo. Otvoreni i filtrirani portovi rijetko posalju ikakav odgovor, ostavljajuci Nmap da napravi time out, te nakon toga ponovno posalje paket u slucaju da je prethodni iz bilo kojeg razloga bio izgubljen. Zatvoreni portovi su cesto jos veci problem. Oni najcesce posalju kao odgovor ICMP port unreacheble gresku. No, za razliku od RST paketa koje posalju zatvoreni portovi na TCP protokolu kao odgovr na SYN ili Connect() scan, mnogi hostovi ogranicavaju ICMP port urnreachable poruku po defaultu. Linnux i Solaris su jako striktni vezano za to. Tako npr. Linux 2.4.20 kernel ogranicava destination unreachable poruku na jednu po sekundi (u net/ipv4/icmp.c biblioteci).. Nmap pokusava ustanoviti da li je to slucaj i smanjuje brzinu skeniranja veano uz to, kako bi sprijecio zagus ivanje nekorisnim paketima koje ce ciljano racunalo tako i tako tiho odbaciti. Nazalost, spomenuti limit koji je postavljen kod linuxa, znaci da ce skeniranje svih 65536 portova trajati vise od 18 sati. Ideja ubrzavanja UDP skena je da se paralelno skenira vise hostova, na nacin da se najprije skleniraju najpopularniji portovi na brz nacin, skenirajuci iza firewall-a i koristeci --host-timeout kako bi se izbjegli spori hostovi. -sN; -sF; -sX (TCP Null, FIN i Xmas skenovi) Ova tri tipa skenova (moguce ih je postici i vise koristenjem --scanflags opcije opisane u sljedecoj sekciji) iskoristavaju rupu u standardu TCP RFC[7], kako bi razlucili koji port je otvoren, a koji zatvoren. Na strani 65 pise: "Ukoliko je stanje odredisnog porta ZATVORENO ... dolazeci segment koji ne sadrzi RST prouzrocuje da RST bude poslan kao odgovor." Na iducoj stranici se raspravlja o paketima poslanim na otovorene portove bez upaljenih SYN, RST ili ACK bitova i kaze da: "najvjerovatnije se necete naci u takovoj situaciji, ali ako se nadete, jednostavno odbacite paket." Kod skeniranja sistema koji su kompatibilni s tim RFC tekstom, svaki paket koji u sebi ima upaljene bitove SYN, RST ili ACK rezzultirat ce vracenim RST paketom ako je port zatvoren, a nece dati nikakav odgovor, ako je port otvoren. Dok god nije upaljen niti jedan od tih bitova, bilo koja kombinacija druga tri bita (FIN, PSH i URG) je u redu. Nmap to iskoristava s tri dolje navedena tipa skeniranja: Null scan (-sN) Ne ukljucuje niti jedan od bitova (TCP oznaka zaglavlja je 0) FIN scan (-sF) Ukljucuje samo TCP FIN bit Xmas scan (-sX) Ukljucuje FIN, PSH i URG flagove, "osvjetljavajuci" paket kao bozicno drvce. (op. prev. Xmas=Bozic Sva tri tipa skeniranja su potpuno ista sto se ponasanja tice, samo sto su im upaljene razlicite TCP oznake u paketima. Ukoliko je kao odgovor dobiven RST paket, port se smatra zatvorenim, dok situacija u kojoj nema odgovora, smatra da je port otvoren|filtriran. Port je oznacen kao filtriran, ako je odgovor na scan ICMP unreachable greska (tip 3, kodovi 1, 2, 3, 9, 10 ili 13). Glavna prednost ovih tipova skeniranja je ta da mogu "proviriti" kroz neke ne stateful firewall uredaje i paket filtering rutere. Druga prednost im je ta da su jos vise nevidljivi od SYN skena. No, nemojte se u to pouzdavati, jer vecina modernih IDS sustava moze biti konfigurirana da ih prepozna. Veliki nedostatak je da ne podrzavaju svi sistemi RFC 793 do zadnjeg slova, pa tako vecina sustava odgovara RST paketom bez obzira na to da li je port otvoren ili nije. Kod takvih sustava su svi portovi koje Nmap skenira okarakterizirani kao zatvoreni. Vecina operativnih sustava koji se tako ponasaju su Microsoft Windows, vecina Cisco uredaja, BSDI i IBM OS/400. No, ovaj tip skeniranja radi na vecini UNIX sustava. Dodatan nedostatak ovih tipova skenova je taj sto ne mogu razlikovati otvorene portove od nekih filtriranih, te kao odgovor dobijete otvoren|filtriran, pa si vi mislite... -sA (TCP ACK scan) Ovaj tip skeniranja razlikuje se od ostalih do sad opisanih po tome sto nikad ne otkrije otvorene ili cak otvorene|filtrirane portove. Namjena mu je mapirati pravila firewall-a, tj. da zakljuci da li je firewall stateful, te koji su portovi filtrirani. Kad je u pitanju ACK scan, onda je upaljena samo ACK zastavica (flag) (osim ako koristite --scanflags ). Kad skenirate nefiltrirane hostove, otvoreni i zatvoreni portovi ce vratiti RST paket. Nmap ih u tom slucaju oznaci kao nefiltrirane, sto znaci da su dostupni ACK paketima, ali nije definirano da li su otvoreni ili zatvoreni. Portovi koji ne odgovaraju na upite ili posalju odredene ICMP greske (tip 3, kod 1, 2, 3, 9, 10 ili 13) su oznaceni kao filtrirani. -sW (TCP Window scan) Window scan je slican ACK scanu, samo sto exploatira implamentacijske detalje operativnih sustava kako bi razlucio otvorene portove od zatvorenih, umjesto da uvijek ispise nefiltriran kad dobije RST kao odgovor. To radi na nacin da pregleda TCP Window polje RST paketa koji je dobio. Na nekim sustavima otovreni portovi koriste pozitivnu velicinu prozora (cak i za RST pakete), dok zatvoreni portovi imaju prozor velicine 0. Dakle, umjesto da uvijek oznaci port kao nefiltriran kad dobije RST kao odgovor, Window scan oznaci portove kao otvorene ili zatvorene, ovisno o tome da li je velicina prozora pozitivna ili 0. Ovaj nacin skeniranja se pouzdaje u implementacijske detalje nekih operativnih sustava, tako da mu ne morate uvijek vjerovati. Sistemi koji su "otporni" na ovaj nacin skeniranja obicno ce vratiti sve portove kao zatvorene. Naravno isto tako je moguce da racunal stvarno nema otovrenih portova. Ukoliko je vecina portova zatvorena, ali ima onih koji su oznaceni kao filtrirani, (npr. cesce koristeni portovi poput 22, 25, 53) , sustav je podlozan ovom nacinu skeniranja i rezultat je najvjerovatnije ispravan. Ukoliko pokrenete sken koji vam vrati 1000 zatvorenih portova i 3 otvorena ili filtrirana porta, najvjerovatnije su ta 3 porta uistinu i otvorena. -sM (TCP Maimon scan) Maimon scan je dobio naziv po osobi koja ga je otkrila - Uriel Maimon. Tehniku skeniranja je opisao u casopisu Phrack broj 49 (Studeni 1996). Nmap je izdan 2 godine kasnije i omogucavao je tu tehniku skeniranja. Tehnika je ista kao i Null, Xmas i FIN scan, osim sto je paket koji se salje FIN/ACK. Po RFC dokumentu 793 (TCP), treba odgovoriti RST paketom, bez obzira da li je port otvoren ili zatvoren. No, Uriel je primjetio da vecina BSD sistema jednostavno odbaci paket ako je port otvoren. --scanflags (Custom TCP scan) Napredni Nmap korisnici nisu vezani uz poznate tipove skenova. --scanflags opcija dozvoljava da dizajnirate vlastiti tip skeniranja, navodeci bilo koju kombinaciju TCP zastavica (flagova). Neka vazi kreativni sokovi teku, dok izbjegavate otkrivanje svojih radnji od strane IDS sustava ciji su autori samo prosli kroz Nmap opcije i dodali pravila koja prepoznaju navedene tipove skeniranja. --scanflags argument moze biti brojcana vrijednost poput 9 (PSH i FIN), ali koristenje simbolicnih imena je jednostavnije. Jednostavno izmjesajte zajedno bilo koju kombinaciju zastavica (flagova) URG, ACK, PSH, RST, SYN i FIN. Npr. --scanflags URGACKPSHRSTSYNFIN postavlja sve zastavice, ali nije pretjerano koristan za skeniranje. Redosljed navodenja zastavica je nebitan. Uz navodenje zeljenih zastavica, mozete navesti i bazni TCP tip skeniranja (poput -sA ili -sF), sto ce objasniti Nmap-u kako da interpretira odgovore. Npr. SYN scan tretira paket na koji nije dobio odgovor kao filtriran port, dok ga FIN scan tretira kao otvoren|filtriran. Nmap ce se ponasati isto kao sto se ponasa kod specificiranog baznog skena, osim sto ce koristiti zastavice koje ste naveli. Ukoliko ne navedete bazni tip skeniranja, koristit ce se SYN scan. -sI (Idlescan) Ova napredna metoda skeniranja omogucava slijepo skeniranje ciljanog racunala (niti jedan paket nije poslan na ciljano racunalo s vase stvarne IP adrese).Umjesto toga koristite zombie host racunalo i predvidljiv IP fragmentation ID na njemu kako bi dobili informaciju o tome koji su portovi otvoreni na ciljanom racunalu. IDS sustavi ce pokazati da scan dolazi sa zombie masine kojju ste specificirali kod pokretanja ovog tipa skeniranja (zombie mora biti upaljen i mora zadovoljavati neke kriterije). Ovaj nacin skeniranja je prekompleksan da bi ga ovdje opisali u potpunosti, pa sam napisao i postao informativni clanak sa svim detaljima na https://nmap.org/book/idlescan.html. Osim sto je nevjerovatno nevidljiv (zbog nacina na koji radi) ovaj tip skeniranja omogucava mapiranje IP baziranih pravila izmedu racunala. Ispis portova pokazuje otvorene portove kako ih vidi zombi racunalo. Dakle, mozete koristiti vise zombie racunala za skeniranje ciljanog racunala. Mozete staviti dvotocku i broj porta iza nje, kako bi na tom portu provjerili da li su IPID promjene predvidljive. Ukoliko to ne navedete, Nmap ce koristiti standardni port za TCP pinganje (80). -sO (IP protocol scan) IP protokol scan Vam omogucava da provjerite koji IP protokoli (TCP, ICMP, IGMP isl.) su podrzani na ciljanim masinama. Tehnicki gledano, to i nije port scan jer prolazi kroz brojeve IP protokola, a ne kroz brojeve TCP i UDP portova. No ipak koristi opciju -p, kako bi odabrao skenirane brojeve IP protokola, ispisuje rezultate u normalnoj tabeli kao i kod skeniranja portova, pa cak koristi i isti engine za skeniranje kao i kod skeniranja portova. Kad sve to uzmemo u obzir - ova metoda skeniranja je dovoljno slicna skeniranju portova, pa je stoga i ukljucena u ovo poglavlje. Osim sto je koristan sam po sebi, protokol scan pokazuje i snagu open source softvera. Iako je temeljna metoda vrlo jednostavna, nisam je mislio ukljuciti u Nmap, niti sam dobio zahtjev za tom funkcionalnoscu, sve dok u ljeto 2000, Gerhard Rieger nije razvio ideju, napisao izvanredan patch koji to implementira u Nmap i posalo na nmap-hakers listu. Ukljucio sam taj patch u Nmap i pustio novu verziju vec drugi dan. Jako malo komercijalnog softvera ima korisnike koji su toliki entuzijasti da bi razvili vlastita poboljsanja za pojedine produkte! Protokol scan radi vrlo slicno kao i UDP scan. Umjesto da prolazi kroz brojeve portova UDP paketa, salje IP pakete i prolazi kroz 8 bitnio polje samog IP protokola. Headeri (zaglavlja) su obicno prazni i ne sadrze nikakve podatke, pa cak niti ispravni header za odredeni protokol. Izuzeci od tog pravila su TCP, UDP i ICMP protokol. Za te protokole je ukljucen ispravan protokol header (zaglavlje), jer neki sustavi u suprotonom ne zele poslati paket, tako da Nmap vec ima funkcije za kreiranje ispravnih headera. Umjesto da ceka ICMP unreachable poruku, protokol scan trazi ICMP protoKol unreachable poruku. Ukoliko Nmap dobije bilo kakav odgovor u bilo kojem protokolu od ciljanog racunala, Nmap oznaci taj protokol kao oOtvoren. ICMP protocol unreachable greska (tip 3, kod 2) oznaci protokol kao Zatvoren. Sve ostale ICMP poruke (tip 3, kod 1, 3, 9, 10 i 13) oznace protokol kao filtriran (iako je to istovremeno dokaz da je ICMP protokol otvoren). Ukoliko ne dode nikakav odgovor nakon ponovnih pokusaja slanja, protokol je oznacen kao otvoren|filtriran. -b (FTP bounce scan) Zanimljiva funkcionalnost FTP protokola (RFC 959[8]) je podrska za tzv. proxy ftp konekcije. To omogucuje korisniku da se spoji na jedan FTP server, te nakon toga zatrazi da fileovi budu poslani na neki drugi FTP server. Ta funkcionalnost je sazrijela za napade na mnogo nivoa, tako da je vecina servera prestala pruzati podrsku za to. Jedan od napada koji je izvediv je taj da omogucava napadacu natjerati FTP server da skenira druge FTP servera u potrazi za otvorenim portovima. Jednostavno zatrazite od FTP servera da pos alje datoteku na svaki od portova koji vas zanima na ciljanom racunalu. Poruka o gresci koju cete dobiti ce vam raci da li je port otvoren ili nije. To je ujedno i dobar nacin obilazenja firewall-a (vatrozida), jer su mnogi FTP serveri smjesteni tamo gdje imaju veci pristup unutrasnjim racunalima, nego bilo koje racunalo s interneta. Nmap podrzava FTP bounce scan s opcijom -b. Prima parametar u sljedecem obliku: username: password@server:port. Server je naziv ili IP adresa ranjivog FTP servera. Kao i kod normalnog URL-a, mozete zanemariti username:password, te cete se u tom slucaju spojiti kao anonymous user i koriste se sljedeci parametri anonymous password:-wwwuser@. Broj porta i dvotocka ispred njega takoder mogu biti zanemarini, a u tom slucaju cete se spojiti na standardni FTP port (21). 1997., kad je Nmap lansiran, ova ranjivost je bila siroko rasprostranjena, ali do sad je uglavnom "pokrpana" na vecini racunala. Ipak, jos uvijek postoji ranjivi serveri, pa nije lose pokusati i ovu opciju kad sve oostale zataje. Ukoliko je obilazenje vatrozida vas cilj, skenirajte ciljanu mrezu za otvorenim portom 21 (ili bilo koji ftp servis, ako skenirate sve portove s otkrivanjem verzije programa - version detection), te nakon toga pokusajte ftp bounce scan. Nmap ce vam reci da li je host ranjiv ili nije. Ukoliko samo pokusavate sakriti tragove, ne biste trebali (u stvari ne biste smjeli) skenirati samo hostove na ciljanoj mrezi. No, prije nego nasumicno pocnete skenirati za ranjivim ftp serverima na internetu, imajte na umu da vecina sysadmina nece cijeniti sto im "iskoristavate" servere na taj nacin SPECIFIKACIJA PORTOVA I REDOSLJED SKENIRANJA Uz sve do sad nabrojane metode skeniranja, Nmap nudi opcije pomocu kojih mozete specificirati koje portove zelite skenirati, da li ce skeniranje portova biti nasumicno ili sekvencionalno. Defaultno Nmap skenira sve portove od 0 do 1024 (ukljucujuci i njih) kao i sve portove iznad 1024 koji su navedeni u nmap-services datoteci. -p (Skeniraj samo navedene portove) Pomocu ove opcije mozete odabrati koje portove cete skenirati i na taj nacin obici defaultne postavke. Mozete unijeti pojedinacne brojeve i/ili niz brojeva odvojenih minusom (npr. 1-1023).Ukoliko z elite skenirati sve portove mozete napisati samo parametar -p- i Nmap ce skenirati sve portove od 1-65535. Port 0 je moguce skenirati jedino ako ga navedete. Kad je u pitanju IP protokol scan (-sO), opcija -p definira koji protokol zelite skenirati (od 0-255). Kad skenirate i TCP i UDP portove zajedno, mozete navesti identifikator protokola na nacin da prije brojeva portova stavite identifikator T: za TCP porove ili U: za UDP portove. Parametar vrijedi sve dok ne navedete neki drugi. Npr. mozete napisati -p U:53,111,137,T:21-25,80,139,8080. Na taj bi nacin skenirali UDP portove 53, 111 i 137, kao i TCP portove 21-25, 80, 139 i 8080. Imajte na umu da morate navesti parametar -sU i bar jedan TCP tip skeniranja (kao npr. -sS, -sF ili -sT) kako bi mogli istovremeno skenirati i TCP i UDP portove. Ukoliko niste naveli identifikator protokola, navedeni portovi ce biti skenirani i po TCP i po UDP protokolu. -F (brzi scan (s ogranicenim portovima)) Ova opcija kaze Nmapu da skenira samo portove navedene u nmap-services datoteci, koja dolazi s Nmap-om. (ili protokol datoteke kad je u pitanju opcija -sO ) To je mnogo brze nego skeniranje svih 65535 portova. Kako navedeni popis ima preko 1200 TCP portova, razlika u brzini izmedu ove opcije i defaultnog TCP scana (koji ima oko 1650 portova) nije dramaticna. Razlika moze biti osjetno velika ako koristite svoju nmap-services datoteku koristeci opciju --datadir -r (Ne mijesaj portove) Defaultno, Nmap nasumicno odabire potove koje skenira (osim nekih standardnih portova koji su stavljeni na pocetak zbog efikasnosti). To "mijesanje" portova je u normalnim situacijama pozeljno, ali pomocu ove opcije mozete skenirati portove bas onim redosljedom kojim ste ih naveli. PREPOZNAVANJE SERVISA I NJIHOVIH VERZIJA Skenirajte neko racunalo pomocu Nmap-a i mogao bi vam reci da su portovi 25/tcp, 80/tcp i 53/tcp otvoreni. Koristeci nmap-services bazu podataka u kojoj se nalazi preko 2200 poznatih servisa, Nmap ce vam reci da su na navedenim portzovima najvjerovatnije mail server (SMTP), web server (HTTP) i name server (DNS). To je u vecini slucajeva ispravno, vecina servera koji slusaju na portu 25 su uistinu mail serveri, ali nemojte biti 100% sigurni u to, jer postoje ljudi koji pokrecu servise na "cudnim" portovima. Ako je Nmap ipak u pravu i server o kojem je rijec ima pokrenut SMTP, HTTP i DNS server, to ipak nije pretjerano mnogo informacija. Ukoiko radite pregled ranjivosti (vulnerability assessment) ili samo jednostavan inventar mrez nih servisa na racunalima u firmi, cinjenica je da trebate mnogo vise informacija od gore navedenih. Zelite znati koje verzije mail, HTTP i DNS servera su pokrenute na tom racunalu. Kad imate "pri ruci" ispravnu verziju serverske komponente nije tesko ustanoviti koje ranjivosti doticni server ima. Otkrivanje verzije vam pomaze u dobivanju tih informacija. Nakon sto ste otkrili koji TCP i/ili UDP portovi su otvoreni koristenjem neke od do sad opisanih tehnika, otkrivanje verzije ispituje te portove ne bi li otkrilo sto je u stvari na tim portovima, tj. koja aplikacija je otvorila doticpne portove. nmap-service-probes baza podataka sadzi upite za ispitivanje raznih servisa i prepoznavanje na osnovu odgovora koje dobije. Nmap pokusava ustanoviti protokol na kojem radi servis (npr. ftp, ssh, telnet, http), naziv aplikacije (npr. ISC Bind, Apache, httpd, Solaris telnetd) , verziju, naziv hosta, tip uredaja (npr. printer, ruter), porodicu iz koje dolazi OS (npr. Windows, Linux) i ponekad neke detalje poput toga da li je otvoren X server, verziju protokola koju koristi SSH ili KaZaA korisnicko ime. Naravno, vecina servisa ne daje sve te informacije. Ukoliko je Nmap kompajliran s podrskom za OpenSSL protokol, spojit ce se na SSL servere kako bi ustanovio servise koji se nalaze iznad enkripcijskog sloja. Ako su otkriveni RPC servisi, Nmap RCP istrazivac (-sR) je automatski ukljucen kako bi otkrio koji program se nalazi iz RPC-a i koja mu je verzija. Neki UDP portovi su oznaceni s otvoren|filtriran, ako UDP scan nije mogao odrediti da li je port otvoren ili filtriran. Otkrivanje verzije ce pokusati dobiti odgovor s tih portova (isto kao sto to radi i kod otvorenih portova), te ce promijeniti njihovo stanje u otvoren ako uspije dobiti odgovor. TCP portovi koji su okarakterizirani kao otvoreni|filtrirani, tretirani su na isti nacin. Imajte na umu da opcija -A omogucije otkrivanje verzije uz ostale stvari koje podrzava. Dokument koji objasnjava rad, koristenje i mijenjanje ovog dijela programa je dostupan na linku: https://nmap.org/vscan/. Kad Nmap dobije odgovr od servisa, a ne moze ga usporediti s ni jednim zapisom u svojoj bazi podataka, ispisat ce scepijalni "fingerprint" i URL linka na koji ga mozete poslati ukoliko ste sigurni u to sto se nalazi na tom portu. Molim vas da odvojite nekoliko minuta svog vremena kako bi poslali te informacije, jer ce kasnije nekom drugom biti od velike koristi. Zahvaljujuci upravo takvom nacinu prikupljanaj informacija, Nmap ima preko 3000 zapisa koji odgovaraju (prepoznavaju) preko 350 protokola, poput smtp-a, ftp-a, http-a, itd.. Otkrivanje verzije se ukljucuje i njime se upravlja koristenjem sljedecih opcija: -sV (Otkrivanje verzije) Ukljucuje otkrivanje verzije, kao sto je opisano gore. Kao zamjenu, mozete koristiti opciju -A da bi istovremeno ukljucili OS detekciju i otkrivanje verzije servisa. --allports (koristi sve portove u otkrivanju verzije servisa) Nmap-ovo otkrivanje verzije servisa preskace port 9100, jer neki printeri jednostavno isprintaju sve sto se posalje na taj port, sto rezultira s hrpom stranica na kojima su HTTP GET zahtjevi, binarni SSL zahtjevi isl. Ukoliko ipak zelite koristiti i takve portove, mozete to napraviti na nacin da maknete Exclude naredbu u nmap-service-probes datoteci ili jednostavno ukljucite opciju --allports, koja ce ignorirati Exclude naredbu u nmap-services-probes. --version-intensity (podesite intenzitet otkrivanja verzije servisa) Kad radite scan otkrivanja verzije (-sV), Nmap salje seriju upita od kojih je svakom dodijeljen broj od 1 do 9. Oni upiti koji imaju nize brojeve u efikasni kod vecine cesto koristenih servisa, dok su oni s visim brojevima rijetko korisni. Nivo nntenziteta skeniranja odreduje koji upiti ce biti koristeni. Sto je veci broj, to je veca vjerovatnost da ce servis biti ispravno identificiran. No, takvi skenovi traju duze. Intenzitet mora biti izmedu 0 i 9. Preddefinirana vrijednost je 7. Ukoliko je upit registriran u nmap-service-probes ports naredbi, bit ce isproban bez obzira na nivo intenziteta. To garantira da ce DNS upiti uvijek biti odradeni na portu 53, SSL na portu 443 itd. --version-light (omoguci "lagani" mod) To je jednostavniji nacin pozivanja opcije --version-intensity 2. Lagani mod ubrzava skeniranje, ali je samim tim i manja vjerovatnost da ce identificirati servis. --version-all (isprobaj sve upite) Zamjena za opciju --version-intensity 9. Isprobat ce sve upite u bazi podataka --version-trace (prati sve sto se dogada tijekom skena) Nmap ispise opsirne debug informacije o tome sto trenutno radi opcija otkrivanja verzije servisa. To je dio onoga sto cete dobiti opcijom --packet-trace. -sR (RPC scan) Ova metoda radi u sprezi s razlicitim port scan metodama Nmap-a. Uzme sve TCP/UDP portove koji su identificirani kao otvoreni i preplavi ih sa SunRPC NULL naredbama pokusavajuci ustanoviti da li su RPC portovi i ako jesu za koje programe rade. Stoga mozete efikasno dobiti iste informacije kao i s naredbom rpcinfo -p, cak i kad je ciljani portmapper iza firewall-a (ili zasticen TCP omotacima). Mamci trenutno NE rade s RPC skenom. To je automatski ukljuceno kao dio skeniranja verzije servisa (-sV). Buduci da otkrivanje verzije servisa samo po sebi vec ima ukljucenu ovu opciju, -sR se rijetko koristi. OTKRIVANJE OS-A Jedna od najpoznatijih odlika Nmapa je otkrivanje OS-a na ciljanom racunalu koristenjem TCP/IP stack otiska (engl. fingerprint). Nmap salje mnostvo TCP i UDP paketa na udaljeno racunalo i istrazuje svaki bit vracenih paketa. Nakon sto je ucinio hrpu testova poput TCP ISN sampling, podrska i redosljed TCP opcija, IPID sampling i provjeru velicine inicijalnog TCP prozora, Nmap usporeduje rezultate s nmap-os-fingerprints bazom podataka s vise od 1500 poznatih OS otisaka (engl fingerprint), te ispise detalje o OS-u ukoliko ga je uspio "pogoditi". Svaki otisak sadrzi neformatirani tekstualni opis OS-a i klasifikaciju u koju ulazi naziv izdavaca (npr. Sun), OS (npr. Solaris), generacija OS-a (npr. 10) i tip uredaja (opcenite namjene, ruter, switch, igraca konzola isl.). Ukoliko Nmap nije u stanju odrediti koji OS je pokrenut na ciljanom racunalu, a uvjeti su dobri (npr. postoji barem jedan otvoreni port na racunalu), Nmap ce vam ponuditi URL link preko kojeg mozete poslati otisak ukoliko ste sigurni u to koji OS se nalazi na tom racunalu. Na taj nacin pomazete u nastojanjima da Nmap nauci raspoznati sto je moguce vise sistema i samim tim postane precizniji u pogadanju. Otkrivanje OS-a omogucava jos neke dodatne testove koji koriste informacije prikupljene tijekom procesa pogadanja. Jedan od tih dodatnih testova je i vrijeme od kad je upaljeno racunalo (uptime), koji koristi TCP timestamp opciju (RFC 1323) kako bi pogodio kad je racunalo zadnji put resetirano.To je prikazano samo za ona racunala koja daju tu informaciju. Drugi test je predvidljivost TCP sekvenci. Taj test mjeri koliko je tesko uspostaviti laziranu TCP vezu s udaljenim racunalom. To je korisno ukoliko zelite iskoristiti povjerenje bazirano na ishodisnoj IP adresi (recimo kod rlogin-a, vatrozida, filtera itd.) ili u situacijama kada zelite sakriti svoje tragove. Ovaj nacin prikrivanja se danas rijetko koristi, no jos uvijek postoji velika kolicina racunala koja su ranjiva. Stvarni broj "tezine" je baziran na statistickom skupljanju podataka i varira. Obicno je bolje koristiti klasifikaciju poput "poprilican izazov" i "toliko jednostavno da je smijesno" . Ovakakv nacin izvjestavanja dobit cete u normalnom ispisu kad ukljucite verbose opciju (-v). Kad je verbose opcija ukljucena zajedno s -O, onda kao rezultat dobijete i izvjestaj generiranja IPID sekvence. Vecina racunala je u tzv. "inkrementalnoj" klasi, sto znaci da sa svakim poslanim paketom uvecaju ID polje IP zaglavlja. To ih cini ranjivima na nekoliko naprednih nacina sakupljanja informacija i napade zavaravanja (engl. spoofing). Dokument u kojem je opisano kako radi, kako se koristi i kako se moze prilagoditi otkrivanje verzije, dostupan je u podosta jezika na linku: https://nmap.org/osdetect/. Otkrivanje OS-a se ukljucuje i upravlja sa sljedecim opcijama -O (Ukljuci otkrivanje OS-a) Ova opcije ukljuci otkrivanje OS-a kako je opisano u prethodnom odlomku. Isto tak omozete koristiti opciju -A da istovremeno ukljucite otkrivanje OS-a i verzije --osscan-limit (ogranici otkrivanje OS-a samo na ciljeve koji obecavaju) Otkrivanje OS-a je mnogo ucinkovitije ako postoji bar jedan otvoren i zatvoren port. Ukoliko ukljucite ovu opciju, Nmap nece niti pokusati raditi otkrivanje OS-a na hostovima koji nisu zadovoljili ovaj kriterij. To vam moze ustedjeti mnogo vremena, pogotovo kod skeniranja s opcijom -P0 kad koristite mnogo ciljanih racunala. Ovu opciju mozete koristiti samo su kombinaciji s opcijama -O ili -A. --osscan-guess; --fuzzy (probaj pogoditi OS na osnovu rezultata) Ukoliko Nmap nije nasao idealan rezultat, ponekad ponudi najblizi rezultat koji bi mogao biti. Ukoliko odaberete neku od ovih opcija, Nmap ce "pogadati agresivnije". VRIJEME ODAZIVA I PERFORMANSE Jedan od najvisih prioriteta tijekom razvijanja Nmap-a su performase. Defaultni scan (nmaphostname) nekog racunala na lokalnoj mrezi traje petinu sekunde. To je manje od vremena koje vam je potrebno za treptaj oka, ali naravno kad skenirate 10 ili 100 tisuca hostova postane osjetno. Uz to, neki tipovi skenova, poput UDP skeniranja i otkrivanja verzijemogu to vrijeme poprilicno produziti. Isto tako skeniranje mogu usporiti i neke konfiguracije vatrozida, pogptovo limitiranje kolicine odgovora u jedinici vremena.Iako Nmap koristi paralalno izvrsavanje skenova kako bi ih dodatno ubrzao, sam korisnik ima potpunu kontrolu nad time. Napredni korisnici pazljivo kombiniraju Nmap naredbe kako bi dobili samo informacije koje im trebaju postivajuci vremenske termine koje su si zadali. Tehnike za ubrzavanje skeniranja sastoje se od toga da izbacite nepotrebne testove i naravno da nadogradite Nmap na posljednju verziju (poboljsanja performansi se konstantno rade). Optimiziranje vremena odziva (engl. Timing) takodem moze utjecati na brzinu skeniranja. Opcije slijede: --min-hostgroup ; --max-hostgroup (Podesava velicinu grupe paralelnih skenova) Nmap ima mogucnost skeniranja vise hostova paralelno. To radi na nacin da podijeli adresni prostor ciljanih racunala u grupe i onda skenira grupu po grupu. U principu ispada da su vece grupe ucinkovitije. Nedostatak je taj s to rezultati ne mogu biti prikazani dok cijela grupa nije odskenirana do kraja. Dakle, ako je Nmap krenuo skenirati grupu od 50 racunala, korisnik nrcr vidjeti nikakve rezultate (osim onih koje ispisuje opcija -v) dok svih 50 hostova nije odskenirano. Defaultno Nmap radi kompromis. Pocinje s grupom od 5 hostova, tako da se prvi rezultati brzo pojave na ekranu, a nakon toga poveca velicinu grupe na 1024. Tocan broj ovisi o ukljucenim opcijama. Zbog povecane efikasnosti Nmap koristi vece grupe za UDP skenove, a manje za TCP skenove. Kad definirate maksimalnu velicinu grupe pomocu opcije --max-hostgroup, Nmap je nece nikad premasiti. Ukoliko pak specificirate minimalnu velicinu grupe s --min-hostgroup, Nmap ce pokusati zadrzati velicinu grupe iznad tog nivoa. Naravno, ukoliko broj hostova koji su ostali za skeniranje bude manji od minimalne grupa Nmap ce normalno odraditi svoj posao. Obje opcije mozete koristiti istovremeno kako bi velicinu grupe zadrzali u zeljenim okvirima, ali to je rijetko potrebno. Primarna upotrenba ovih opcija je navodenje sto vece minimalne velicine grupe kako bi skenovi brze odradili svoj posao. Najcedci odabir je 256, kako bi skeniranje mreze islo u odsjeccima C klase. Za skenove u kojima se skenira mnogo portova, povecanje tog broja iznad 256 ce rijetko pomoci. Ukoliko pak skenirate samo nekoliko portova, velicina grupe od 2048 ili vise, moze biti od pomoci. --min-parallelism ; --max-parallelism (Podesi paralelizam) Ove opcije upravljaju brojem sondi (engl. probe) koje mogu biti poslane po grupi hostova. Koriste se za skeniranje portova i otkrivanje hostova. Defaultno Nmap svaki put izracuna idealni paralelizam vezano uz mrezne performanse, a mijenja ga tijekom skena, ovisno o ujetima. Ukoliko dolazi do odbacenih paketa, Nmap uspori tj. salje manje sondi. Broj sondi polako raste ako mreza daje naznaku da moze prihvatiti vise od trenutnog broja. Ove opcije postavljaju minimalnu i maksimalnu granicu. Defaultno paralelizam moze pasti na 1 ako je mreza nepouzdana ili narasti na nekoliko stotina, ako imamo idealne uvjete. Najcesci nacin upotrebe je da se podesi --min-parallelism na broj veci od 1 kako bi se ubrzalo skeniranje sporijih hostova i mreza. To je ujedno i riskantna opcija, jer ako podesite prevelik broj, utjecat cete na tocnost skena. Isto tako, ukolik opodesite ovu opciju, sprjecavate Nmap da dinamicki upravlja paralelizmom vezano uz stvarne uvjete na mrezi. Broj 10 ima smisla, ali osobno podesavam tu vrijednost kad nemam nista drugo na rapolaganju. Opcija --max-parallelism stavite na 1 ukoliko zelite sprijeciti Nmap da koristi paralelizam, tj. zelite da salje samo jednu po jednu sondu.To moze biti korisno u kombinaciji s opcijom --scan-delay (objasnit cemo je kasnije), mada ta opcija sama po sebi sluzi svrsi dovoljno dobro. --min-rtt-timeout