
Postupak Pronalaženja hostovaJedan od prvih koraka kad je u pitanju sakupljanje informacija o mreži je smanjivanje (ponekad velike)
količine IP adresnih područja u popis aktivnih i zanimljivih hostova. Skeniranje svih portova za svaku adresu je
sporo i najčešće nepotrebno. Naravno, ono što nekog hosta čini zanimljivim uvelike ovisi o razlogu samog skena.
Mrežni administratori će možda biti zainteresirani samo za hostove koji imaju pokrenut određeni servis, dok će
sigurnosni auditori biti zainteresirani za svaki uređaj s IP adresom. Administratoru će možda biti dovoljno
korištenje ICMP pinga kako bi pronašao hostove na mreži, dok će vanjski penetration tester koristiti široki
spektar alata i nebrojene sonde u pokušaju da obiđe zabrane postavljene na vatrozidu. Budući da su potrebe korisnika kod pronalaženja hostova tako različite, Nmap nudi široki spektar opcija za
prilagođavanje korištenim tehnikama. Pronalaženje hostova (engl host discovery) se ponekad naziva Ping scan, ali
ide daleko dalje od običnog ICMP echo paketa povezanog sa sveprisutnim
ping alatom. Korisnici mogu preskočiti dio pinganja s list skenom
(-sL) ili isključivanjem pinganja (-P0) ili da pristupe mreži s kombinacijama
multi port TCP SYN/ACK, UDP i ICMP sondi. Namjena tih sondi je iznuđivanje odgovora koji dokazuje da je IP
adresa u stvari aktivna (korištena je od strane hosta ili mrežnog uređaja). Na većini mreža je samo jedan mali
postotak IP adresa aktivan. To je pogotovo točno za mreže blagoslovljene RFC1918 dokumentom (privatni adresni
prostor poput 10.0.0.0/8). Navedena mreža ima 16 miliona IP adresa, ali imao sam prilike vidjeti da je koriste
firme s manje od tisuću mašina. Postupak pronalaženja hostova može pronaći koja su to računala u tom moru
neaktivnih IP adresa. Ukoliko ne navedete nikakvu opciju Postupku pronalaženja hostova, Nmap šalje TCP ACK paket namjenjen portu
80 i ICMP echo zahtijev na ciljano računalo. Izuzetak od ovog pravila je taj da je ARP sken korišten za ciljana
računala na lokalnoj ethernet mreži. Za neprivilegirane UNIX shell korisnike, Nmap šalje SYN paket umjesto ACK-a
korištenjem connect() sistemskog poziva. To je jednako opcijama
-PA -PE. Takav način pronalaženja hostova je obično dostatan kad su u pitanju lokalne mreže, ali
preporučen je malo potpuniji set sondi za istraživanje kod sigurnosnog auditinga. Opcija -P* (koja odabire ping tipove) može biti kombinirana. Možete povećati šanse
provaljivanja vatrozida slanjem mnogo sondi koje koriste različite TCP portove/zastavice (engl. flags) i ICMP
kodove. Također imajte na umu da se po defaultu na lokalnoj mreži za otkrivanje hostova koristi ARP discovery
(-PR) čak i kad navedete druge -P* opcije zbog toga jer je gotovo uvijek brži i
efikasniji. Sljedeće opcije upravljaju postupkom otkrivanja hostova. -
-sL (List Sken) List sken nije skeniranje hosta, već saznavanje nekih javno dostupnih informacija o njemu bez slanja
ijednog paketa prema tom hostu. List scan jednostavno ispiše svakog hosta kojeg smo specificirali i napravi
reverse DNS rezoluciju da bi saznao njegovo ime. Iznenađujuće je koliko korisnih informacija možete dobiti
ovim načinom "skeniranja". Npr. fw.chi.playboy.com je vatrozid Čikaškog
(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 želite uvjeriti da imate ispravne IP adrese koje želite
skenirati. Ukoliko List sken izbaci nazive domena koje ne poznajete bilo bi dobro provjeriti prije nego
pokrenete skeniranje, jer ne bi bilo dobro da počnete skenirati krive hostove ;-). Kako je ideja samo ispisati popis ciljanih hostova, ne možete kombinirati opcije za funkcionalnosti
višeg nivoa, poput skeniranja portova, detekcije OS-a, ping skeniranja isl. Ukoliko želite isključiti ping
skeniranje, a ipak koristiti funkcionalnosti višeg nivoa, pročitajte opis -P0 opcije.
-
-sP (Ping Sken) Ova opcija kaže Nmap-u da napravi samo ping sken (otkrivanje hostova) i da
ispiše hostove koji su odgovorili na skeniranje. Ne radi se nikakvo dodatno testiranje (poput port
skeniranja ili detekcije OS-a). To je način skeniranja koji je stupanj intruzivniji od list skena ali se
može koristiti u istu svrhu. Dozvoljava lagano "pretraživanje neprijateljskog teritorija" (engl.
reconnaissance), bez pretjeranog privlačenja pažnje, jer znati koliko hostova je stvarno "živo" na mreži
je važnija informacija za napadača ili sigurnosnog auditora, nego lista koju je izbacio list scans popisom
svih IP adresa i hostova koji postoje. Sistemski administratori također nalaze ovu opciju poprilično korisnom. Može se koristiti za
pronalaženje dostupnih računala na mreži ili koristiti kao alat za nadgledanje dostupnosti servera. Taj
način primjene se naziva ping sweep i mnogo je pouzdaniji od pinganja broadcast adrese zato jer mnogi
hostovi ne odgovaraju na broadcast upite. (Konkretno windows mašine ne odgovaraju na broadcast ping, ali
odgovaraju na druge tipove broadcast paketa). Po defaultu -sP opcija šalje 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 (korištenjem API poziva connect() ). Kad privilegirani korisnik
pokušava skenirati hostve na lokalnoj mreži, koriste se ARP zahtjevi (-PR) osim ako nije
specificirana opcija --send_ip.
Opciju -sP možete kombinirati s bilo kojim tipom otkrivajućih (discovery) tipova
skeniranja (sve -P* opcije osim -P0 opcije) kako bi postigli veću
fleksibilnost. Ukoliko se koristi bilo koji od tih tipova skeniranja i port broj, automatski su defaultne
postavke skeniranja premošćene (ACK i echo zahtjevi). Ukoliko su između 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 preskače fazu otkrivanja hostova. Ukliko ne koristite ovu opciju, Nmap pokušava ping
skeniranjem saznati koja računala su dostupna kako bi SAMO njih i skenirao. Ukoliko koristite ovu opciju
Nmap će skenirati svakog navedenog hosta bez obzira da li je dostupan ili ne, jer neće raditi provjeru.
Ukoliko odaberete kompletnu klasu B (/16 po CIDR notaciji) Nmap će skenirati svih 65536 hostova, bez obzira
da li su "živi" ili ne. Napomena: drugi karakter u ovoj opciji je NULA, a ne veliko slovo O. Ukoliko je na
hostu zatvoren ICMP protokol (što je slučaj kod 90% računala na internetu), a niste stavili
-P0 opciju, Nmap neće skenirati ta računala, dakle, ukoliko želite skenirati računala koja
ne odgovaraju na ICMP echo upit, a znate da postoje i da su "živi" stavite ovu opciju. -
-PS [lista_portova] (TCP SYN Ping) Ova opcija šalje prazan TCP paket s upaljenim SYN flagom. Defaultni odredišni port je 80 (možete se
konfigurirati kod kompajliranja programa na način da promijenite DEFAULT_TCP_PROBE_PORT u
nmap.h biblioteci), no, možete navesti i neki drugi port kao
parametar.
Isto tako je moguće poslati zarezom odvojenu listu portova kao parametar ovoj opciji (npr. -PS22,
23,25,80,113,1050,35000). U tom će slučaju nmap poslati paket na svaki od navedenih portova
paralelno. SYN flag u paketu kaže ciljanom hostu da se želite spojiti na navedeni port/portove. Ukoliko je port
zatvoren, odgovor koji će Nmap dobiti od ciljanog hosta je RST (reset). Ukoliko je port otvoren, ciljano
računalo će poslati SYN/ACK paket, što je drugi korak u trostrukom rukovanju TCP protokola. Računalo na
kojem je pokrenut Nmap u tom trenutku prekida konekciju na način da pošalje RST paket (umjesto ACK paketa
koji bi završio trostruko rukovanje i uspostavio konekciju sa ciljanim hostom). RST paket je poslao kernel
računala na kojem je pokrenut Nmap, jer je dobio SYN/ACK paket koji nije očekivao. Nmap ne zanima da li je port otvoren ili zatvoren, RST ili SYN/ACK odgovor koji je dobio dovoljan su
odgovor da je računalo "živo". Bez obzira na to RST odgovor znači da je računalo tu i da je "živo",
dok SYN/ACK odgovor uz to znači i da računalo "sluša" na navedenom portu. Na UNIX mašinama samo privilegirani korisnik root može 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 poušaj ostvarivanja konekcije. Ukoliko connect() API vrati brzi odgovor uspješnog
spajanja ili ECONNREFUSED grešku, TCP stack na OS-u je dobio SYN/ACK ili RST od ciljanog hosta i host je
označen kao dostupan. Ukoliko konekcija "visi" dok ne istekne timeout, ciljani host je označen kao
nedostupan (ugašen). Navedeni obilazni put se koristi i kod IPv6 konekcija, je Nmap još nema implementiranu
izradu sirovih (RAW) paketa za IPv6 protokol. -
-PA [lista_portova] (TCP ACK Ping) TCP ACK ping je sličan SYN pingu. Razlika je, što je lako zaključiti iz samog naziva, u tome što se
umjsto SYN flaga upali ACK flag. Takav paket podrazumijeva da je konekcija već uspostavljena iako nije,
samim tim bi ciljani hostovi uvijek trebali odgovoriti s RST paketom, te na taj način potvrditi svoje
postojanje.
-PA opcija koristi isti defaultni port kao i SYN scan (port 80) i isto kao
i SYN scan može primiti listu portova u istom formatu. Ukoliko neprivilegirani korisnik pokuša
pokrenuti Nmap s ovom opcijom ili je u pitanju IPv6 TCP konekcija, koristi se obilazni put opisan u TCP SYN
pingu. Ova opcija nije savršena, jer connect() u stvari šalje SYN pakete umjesto ACK paketa
Razlog zašto koristiti i SYN i ACK sonde je radi povećavanja šansi za obilaženje vatrozida.
Mnogi administratori konfiguriraju rutere i ostale jednostavne vatrozide na način da zaustavljaju dolazeće
SYN pakete osim ako nisu namijenjeni nekim javnim servisima, poput weba ili mail servera. Takav način
podešavanja uređaja sprječava nedozovljene konekcije prema računalima tvrtke, ali omogućava neograničen
izlazni promet prema internetu. Ovakav pristup konekcija bez stanja (engl. stateless) oduzima malo resursa
na vatrozidima/ruterima i podržan 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) će najvjerovatnije biti blokirane kad ih pošaljete na zatvorene
portove. No međutim, ACK sonde će bez problema prolaziti kroz njih. Drugi tip vatrozida podržava konekcije sa stanjem (engl. stateful) koji odbacuju sve neočekivane
pakete. Ova opcija se u početku koristila samo kod naprednijih vatrozid rješenja, ali je vremenom postala
rasprostranjenija. Linux vatrozid Netfilter/iptables podržava ovu opciju korištenjem opcije
--state, koja kategorizira pakete vezano uz stanje konekcije. Skeniranjem takvih sustava
veća je vjerovatnost da ćemo od SYN sonde dobiti nekakvu informaciju, nego od ACK, jer se ACK sonde koje
nemaju uspostavljenu konekciju tretiraju kao lažne i odbačeni su bez ikakvog odgovora. U slučaju dvojbe,
najbolje je poslati i SYN i ACK sonde naviođenjem opcija
-PS i
-PA. -
-PU [lista_portova] (UDP Ping) Još jedna metoda detekcije hostova je i UDP ping. UDP ping šalje prazne UDP pakete (osim ako nije
definirana opcija
--data_length) na navedene portove. Portlist opcija ima isti format kao
i prije obrađene opcije -PS i -PA. Ukoliko nije naveden niti jedan port,
defaultni je 31338. To se može 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 neželjene
rezultate za ovu vrstu skena. Nakon što je ciljano računalo dobilo paket na zatvoreni port, trebalo bi odgovoriti ICMP paketom "
nedostupan port" (engl. port unreachable). Na osnovu toga Nmap može zaključiti da je ciljani host "živ".
Drugi tipovi ICMP grešaka, poput nedostupan host/mreža ili premašen TTL (engl. TTL exceeded) nagovještavaju
da je host ugašen ili nedostupan. Ukoliko nema nikakvog odgovora, Nmap također zaključi da je host ugašen/
nedostupan.
Ukoliko je paket stigao na otvoreni UDP port, većina servisa će jednostavno ignorirati prazan UDP paket i
Nmap neće dobiti nikakav odgovor. Zbog toga je defaultni port 32338, jer je mala mogućnost da će neki
servis koristiti taj port. Postoje i neki servisi, poput chargen-a, koji će odgovoriti na prazan UDP paket
i na taj način otkriti Nmapu da je host "živ". Glavna prednost ovog tipa skeniranja je da obilazi vatrozide i paket filtere koji skeniraju samo
TCP promet. Npr. Linksys BEFW11S4 bežični (wireless) ruter na vanjskom mrežnom 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 može slati i standardne ICMP pakete
korištenjem klasičnog ping programa. Nmap šalje ICMP paket tipa
8 (echo request) na ciljanu IP adresu očekujući odgovor tipa 0 (echo reply), ukoliko je host "živ". Na
štetu mrežnih istraživača, većina hostova i vatrozida na internetu blokira te pakete umjesto da na njih
odgovara kako je opisano u RFC 1122
dokumentu. Zbog toga su ICMP skenovi rijetko ili gotovo nikad pouzdani kad se ciljani host nalazi na
internetu, ali za sistem administratore koji nadgledaju unutrašnje mreže, ovo je praktičan i
najjednostavniji pristup za skeniranje hostova. Opisani način skeniranja možete upaliti korištenjem
-PE opcije. Bez obzira na to što je echo zahtijev standardni ICMP ping upit, Nmap se nije zaustavio na tome. Ako
pogledate ICMP standard (RFC 792) vidjet ćete
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 "živ". Nmap u trenutnoj verziji ne
podržava information zahtijev, jer se ne koristi često. RFC 1122 inzistira na tome da “host NE BI
TREBAO implementirati taj ICMP tip poruka”. Upite za timestamp i adresnu masku možete poslati s
-PP i -PM opcijama. Timestamp odgovor (ICMP kod 14) ili odgovor adresne
maske (kod 18) otkrivaju da je ciljani host "živ". Ta dva upita su korisni u slučajevima kad administratori
blokiraju echo zahtijev pakete, ali zaborave blokirati ostale ICMP pakete. -
-PR (ARP Ping) Jedan od najčešćih scenarija korištenja Nmap-a je skeniranje ethernet LAN-a. Na većini LAN-ova,
posebno na onima koji koriste privatne ip adrese definirane u RFC 1918 dokumentu je većina IP adresa u
stvari neiskorištena. Kad Nmap pokuša poslati sirovi IP paket poput ICMP echo zahtjeva, operativni sustav
mora ustanoviti MAC adresu računala koja pripada ciljanoj IP adresi, kako bi moglo adresirati ethernet
frame. To je obično sporo i problematično jer operativni sustavi nisu napisani s pretpostavkom da će u vrlo
kratkom vremenskom periodu morati poslati milione ARP zahtjeva prema nepostojećim hostovima.
ARP sken zadužuje Nmap i njegove optimizirane algoritme za ARP zahtjeve i ukoliko Nmap dobije
odgovor ne mora uopće pokretati IP bazirani ping, jer već zna da je računalo dostupno. Ovo čini ARP scan
mnogo bržim i pouzdanijim od IP baziranog skena, pa se defaultno koristi kod skeniranje hostova na
ethernetu za koje Nmap zaključi da su na lokalnoj mreži. Čak ako ste i naveli neke druge tipove pinga,
(poput
-PE ili
-PS), Nmap će koristiti ARP sken za sve hostove koji su na istoj mreži. Ukoliko ne želite
koristiti ARP sken, navedite opciju
--send-ip. -
-n (Bez DNS rezolucije)
Ova opcija kaže Nmap-u da
nikad ne radi obrnutu DNS rezoluciju (engl. reverse DNS lookup) na aktivnim IP
adresama koje pronađe. Kako je obrnuta DNS rezolucija često spora, ova opcija ubrzava postupak.
-
-R (DNS rezolucija za sva ciljana računala)
Ova opcija kaže Nmap-u da
uvijek radi obrnutu rezoluciju ciljanih IP adresa. U normalnim okolnostima to se radi
samo kad je potvrđeno da računalo postoji.
-
--system_dns (Koristi sistemski DNS rezolver)
Defaultno Nmap radi rezolving adresa slanjem upita direktno imenskim serverima (engl. name servers)
koji su podešeni na vašem računalu i čeka odgovore. Mnogo zahtjeva je poslano istovremeno (10 i više) kako
bi brže radilo. Ovu opciju navedite ukoliko želite 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 greška -- molim kontaktirajte nas u tom slučaju. Sistemski rezolver se uvijek koristi za IPv6
skenove.
-
--dns_servers <server1[,server2],...>
(Serveri koji će se koristiti za obrnute DNS upite)
U normalnim okolnostima, Nmap će pokušati pronaći vaše DNS servere iz resolv.conf datoteke (na
UNIX-u) ili iz registry baze podataka (na Win32). Naravno, postoji mogućnost da navedete servere po želji
korištenjem ove opcije. Ova opcija se ne koristi ako koristitite opciju
--system_dns
ili IPv6 sken. Korištenje više DNS servera je obično brže nego samo jednog.
|
|