# Nmap Sažetak (ESP) {{#include ../../banners/hacktricks-training.md}} ``` nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24 ``` ## Parametri ### IP adrese za skeniranje - **`,`:** Indikujte IP adrese direktno - **`-iL `:** list_IPs - **`-iR `**: Broj nasumičnih IP adresa, možete isključiti moguće IP adrese sa `--exclude ` ili `--excludefile `. ### Otkriće opreme Podrazumevano, Nmap pokreće fazu otkrivanja koja se sastoji od: `-PA80 -PS443 -PE -PP` - **`-sL`**: Nije invazivan, navodi ciljeve praveći **DNS** zahteve za razrešavanje imena. Korisno je znati da li su, na primer, www.prueba.es/24 sve IP adrese naši ciljevi. - **`-Pn`**: **Bez pinga**. Ovo je korisno ako znate da su svi aktivni (ako ne, mogli biste izgubiti mnogo vremena, ali ova opcija takođe proizvodi lažne negativne rezultate govoreći da nisu aktivni), sprečava fazu otkrivanja. - **`-sn`** : **Bez skeniranja portova**. Nakon završetka faze izviđanja, ne skenira portove. Relativno je neprimetan i omogućava malo skeniranje mreže. Sa privilegijama šalje ACK (-PA) na 80, SYN(-PS) na 443 i echo zahtev i zahtev za vremenskom oznakom, bez privilegija uvek završava veze. Ako je cilj mreža, koristi samo ARP(-PR). Ako se koristi sa drugom opcijom, samo se paketi druge opcije odbacuju. - **`-PR`**: **Ping ARP**. Koristi se podrazumevano prilikom analize računara u našoj mreži, brži je od korišćenja pinga. Ako ne želite da koristite ARP pakete, koristite `--send-ip`. - **`-PS `**: Šalje SYN pakete na koje, ako odgovori SYN/ACK, port je otvoren (na koji odgovara sa RST kako ne bi završio vezu), ako odgovori RST, port je zatvoren, a ako ne odgovori, port je nedostupan. U slučaju da nemate privilegije, automatski se koristi potpuna veza. Ako nisu dati portovi, šalje se na 80. - **`-PA `**: Kao prethodni, ali sa ACK, kombinovanjem oboje daje bolje rezultate. - **`-PU `**: Cilj je suprotan, šalju se na portove za koje se očekuje da su zatvoreni. Neki vatrozidi proveravaju samo TCP veze. Ako je zatvoren, odgovara se sa port nedostupan, ako se odgovara sa drugim icmp ili ne odgovara, ostavlja se kao odredište nedostupno. - **`-PE, -PP, -PM`** : ICMP PINGS: echo replay, vremenska oznaka i maska adrese. Pokreću se da bi se saznalo da li je cilj aktivan. - **`-PY`**: Šalje SCTP INIT probe na 80 podrazumevano, INIT-ACK (otvoren) ili ABORT (zatvoren) ili ništa ili ICMP nedostupan (neaktivan) može biti odgovoreno. - **`-PO `**: Protokol se označava u zaglavljima, podrazumevano 1 (ICMP), 2 (IGMP) i 4 (Encap IP). Za ICMP, IGMP, TCP (6) i UDP (17) protokole šalju se zaglavlja protokola, za ostale se šalje samo IP zaglavlje. Svrha ovoga je da zbog deformacije zaglavlja, odgovori na Protokol nedostupan ili odgovori istog protokola se šalju da bi se znalo da li je aktivan. - **`-n`**: Bez DNS - **`-R`**: DNS uvek ### Tehnike skeniranja portova - **`-sS`**: Ne završava vezu, tako da ne ostavlja trag, veoma dobro ako se može koristiti. (privilegije) To je ono što se koristi podrazumevano. - **`-sT`**: Završava vezu, tako da ostavlja trag, ali se može sigurno koristiti. Podrazumevano bez privilegija. - **`-sU`**: Sporije, za UDP. Uglavnom: DNS(53), SNMP(161,162), DHCP(67 i 68), (-sU53,161,162,67,68): otvoren (odgovor), zatvoren (port nedostupan), filtriran (drugi ICMP), otvoren/filtriran (ništa). U slučaju otvorenog/filtriranog, -sV šalje brojne zahteve da otkrije bilo koju od verzija koje nmap podržava i može otkriti stvarno stanje. Povećava vreme skeniranja. - **`-sY`**: SCTP protokol ne uspeva da uspostavi vezu, tako da nema logova, radi kao -PY - **`-sN,-sX,-sF`:** Null, Fin, Xmas, mogu proći kroz neke vatrozide i izvući informacije. Zasnovani su na činjenici da standardne mašine treba da odgovore sa RST na sve zahteve koji nemaju SYN, RST ili ACK kašnjenja: otvoren/filtriran (ništa), zatvoren (RST), filtriran (ICMP nedostupan). Nepouzdano na Windows, Cisco, BSDI i OS/400. Na unixu da. - **`-sM`**: Maimon skeniranje: Šalje FIN i ACK zastavice, koristi se za BSD, trenutno će sve vratiti kao zatvoreno. - **`-sA, sW`**: ACK i Window, koristi se za otkrivanje vatrozida, da bi se znalo da li su portovi filtrirani ili ne. -sW razlikuje između otvorenog/zatvorenog, pošto otvoreni odgovaraju sa različitom vrednošću prozora: otvoren (RST sa prozorom različitim od 0), zatvoren (RST prozor = 0), filtriran (ICMP nedostupan ili ništa). Ne rade sve mašine na ovaj način, tako da ako je sve zatvoreno, ne radi, ako je nekoliko otvorenih, radi dobro, a ako je mnogo otvorenih i malo zatvorenih, radi obrnuto. - **`-sI`:** Idle skeniranje. U slučajevima kada postoji aktivni vatrozid, ali znamo da ne filtrira za određeni IP (ili kada jednostavno želimo anonimnost) možemo koristiti zombie skener (radi za sve portove), da bismo tražili moguće zombije možemo koristiti skriptu ipidseq ili exploit auxiliary/scanner/ip/ipidseq. Ovaj skener se zasniva na IPID broju IP paketa. - **`--badsum`:** Šalje pogrešnu sumu, računari bi odbacili pakete, ali vatrozidi bi mogli odgovoriti na nešto, koristi se za otkrivanje vatrozida. - **`-sZ`:** "Čudan" SCTP skener, kada šalje probe sa fragmentima cookie echo, trebali bi biti odbijeni ako su otvoreni ili odgovoreni sa ABORT ako su zatvoreni. Može proći kroz vatrozide koje init ne može, loša stvar je što ne razlikuje između filtriranih i otvorenih. - **`-sO`:** Protokol IP skeniranje. Šalje loša i prazna zaglavlja u kojima ponekad ni protokol ne može biti razlikovan. Ako stigne ICMP nedostupan protokol, zatvoren je, ako stigne nedostupan port, otvoren je, ako stigne druga greška, filtriran je, ako ništa ne stigne, otvoren|filtriran. - **`-b `:** FTPhost--> Koristi se za skeniranje hosta sa drugog, ovo se radi povezivanjem na ftp druge mašine i traženjem da pošalje datoteke na portove koje želite da skenirate sa druge mašine, prema odgovorima ćemo znati da li su otvoreni ili ne. \[\:\@]\\[:\] Gotovo svi ftps serveri više ne dozvoljavaju ovo i stoga je malo praktične upotrebe. ### **Analiza fokusa** **-p:** Koristi se za određivanje portova za skeniranje. Da biste odabrali svih 65,335 portova: **-p-** ili **-p all**. Nmap ima internu klasifikaciju zasnovanu na popularnosti. Podrazumevano koristi 1000 najpopularnijih portova. Sa **-F** (brzo skeniranje) analizira 100 najpopularnijih. Sa **--top-ports ** analizira taj broj najpopularnijih portova (od 1 do 65,335). Proverava portove nasumičnim redosledom; da biste to sprečili, koristite **-r**. Takođe možemo odabrati specifične portove: 20-30,80,443,1024- (potonje znači da tražimo od 1024 nadalje). Takođe možemo grupisati portove po protokolima: U:53,T:21-25,80,139,S:9. Takođe možemo odabrati opseg unutar popularnih portova Nmap-a: -p [-1024] analizira do porta 1024 iz onih uključenih u nmap-services. **--port-ratio ** Analizira najčešće portove unutar odnosa između 0 i 1 **-sV** Skeniranje verzija, intenzitet se može regulisati od 0 do 9, podrazumevano je 7. **--version-intensity ** Reguliramo intenzitet, tako da što je niži, samo će pokrenuti najverovatnije probe, ali ne sve. Ovime možemo značajno skratiti vreme skeniranja UDP-a **-O** Otkrivanje operativnog sistema **--osscan-limit** Za pravilno skeniranje hosta, potrebna su najmanje jedan otvoren port i jedan zatvoren port. Ako ova uslov nije ispunjen i postavili smo ovo, neće pokušati predikciju OS-a (štedi vreme) **--osscan-guess** Kada otkrivanje OS-a nije savršeno, ovo ga tera da se više potrudi **Skripte** --script __|__|__|__[,...] Da biste koristili podrazumevane skripte, koristite -sC ili --script=default Dostupne vrste su: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, i vuln - **Auth:** izvršava sve dostupne skripte za autentifikaciju - **Default:** izvršava osnovne podrazumevane skripte alata - **Discovery:** preuzima informacije sa cilja ili žrtve - **External:** skripta za korišćenje spoljašnjih resursa - **Intrusive:** koristi skripte koje se smatraju invazivnim za žrtvu ili cilj - **Malware:** proverava veze otvorene od strane zlonamernog koda ili backdoor-a - **Safe:** izvršava neinvazivne skripte - **Vuln:** otkriva najpoznatije ranjivosti - **All:** izvršava apsolutno sve dostupne NSE ekstenzijske skripte Da biste pretražili skripte: **nmap --script-help="http-\*" -> One koje počinju sa http-** **nmap --script-help="not intrusive" -> Sve osim onih** **nmap --script-help="default or safe" -> One u bilo kojoj ili obe** **nmap --script-help="default and safe" --> One u obe** **nmap --script-help="(default or safe or intrusive) and not http-\*"** --script-args __=__,__={__=__},__={__,__} --script-args-file __ --script-help __|__|__|__|all[,...] --script-trace ---> Pruža informacije o tome kako skripta napreduje --script-updatedb **Da biste koristili skriptu, jednostavno otkucajte: nmap --script Script_Name target** --> Kada koristite skriptu, i skripta i skener će se izvršiti, tako da se opcije skenera takođe mogu dodati. Možemo dodati **"safe=1"** da bismo izvršili samo sigurne. **Kontrola vremena** **Nmap može modifikovati vreme u sekundama, minutima, ms:** --host-timeout argumenti 900000ms, 900, 900s, i 15m svi rade isto. Nmap deli ukupan broj hostova za skeniranje u grupe i analizira te grupe u blokovima, tako da ne prelazi na sledeći blok dok svi nisu analizirani (i korisnik ne prima nikakve ažuriranja dok blok nije analiziran). Na ovaj način, Nmap je optimalniji kada koristi velike grupe. Podrazumevano u klasi C, koristi 256. Ovo se može promeniti sa **--min-hostgroup** _****_**;** **--max-hostgroup** _****_ (Prilagodite veličine paralelnih skeniranja) Možete kontrolisati broj paralelnih skenera, ali je bolje ne (Nmap već uključuje automatsku kontrolu zasnovanu na statusu mreže): **--min-parallelism** _****_**;** **--max-parallelism** _****_ Možemo modifikovati RTT timeout, ali obično nije potrebno: **--min-rtt-timeout** _**