Riepilogo di Nmap (ESP)
Reading time: 14 minutes
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
Parametri
IP da scansionare
<ip>,<net/mask>
: Indica gli ip direttamente-iL <ips_file>
: list_IPs-iR <number>
: Numero di Ips casuali, puoi escludere possibili Ips con--exclude <Ips>
o--excludefile <file>
.
Scoperta dell'attrezzatura
Per impostazione predefinita, Nmap avvia una fase di scoperta composta da: -PA80 -PS443 -PE -PP
-sL
: Non è invasivo, elenca i target effettuando richieste DNS per risolvere i nomi. È utile sapere se, ad esempio, www.prueba.es/24 tutti gli Ips sono i nostri target.-Pn
: Nessun ping. Questo è utile se sai che tutti sono attivi (in caso contrario, potresti perdere molto tempo, ma questa opzione produce anche falsi negativi dicendo che non sono attivi), impedisce la fase di scoperta.-sn
: Nessuna scansione delle porte. Dopo aver completato la fase di ricognizione, non scansiona le porte. È relativamente furtivo e consente una piccola scansione di rete. Con privilegi invia un ACK (-PA) a 80, un SYN(-PS) a 443 e una richiesta di echo e una richiesta di Timestamp, senza privilegi completa sempre le connessioni. Se il target è la rete, utilizza solo ARP(-PR). Se usato con un'altra opzione, vengono scartati solo i pacchetti dell'altra opzione.-PR
: Ping ARP. Viene utilizzato per impostazione predefinita quando si analizzano i computer nella nostra rete, è più veloce rispetto all'uso dei ping. Se non vuoi utilizzare pacchetti ARP usa--send-ip
.-PS <ports>
: Invia pacchetti SYN ai quali, se risponde SYN/ACK, è aperto (a cui risponde con RST per non terminare la connessione), se risponde RST è chiuso e se non risponde è irraggiungibile. In caso di mancanza di privilegi, viene utilizzata automaticamente una connessione totale. Se non vengono forniti port, viene inviato a 80.-PA <ports>
: Come il precedente ma con ACK, combinando entrambi si ottengono risultati migliori.-PU <ports>
: L'obiettivo è l'opposto, vengono inviati a porte che ci si aspetta siano chiuse. Alcuni firewall controllano solo le connessioni TCP. Se è chiusa, viene risposto con porta irraggiungibile, se viene risposto con un altro icmp o non viene risposto, viene lasciato come irraggiungibile.-PE, -PP, -PM
: ICMP PINGS: echo replay, timestamp e addresmask. Vengono lanciati per scoprire se il target è attivo.-PY<ports>
: Invia probe SCTP INIT a 80 per impostazione predefinita, può rispondere INIT-ACK(aperto) o ABORT(chiuso) o nulla o ICMP irraggiungibile(inattivo).-PO <protocols>
: Viene indicato un protocollo negli header, per impostazione predefinita 1(ICMP), 2(IGMP) e 4(Encap IP). Per i protocolli ICMP, IGMP, TCP (6) e UDP (17) vengono inviati gli header del protocollo, per il resto viene inviato solo l'header IP. Lo scopo di questo è che a causa della malformazione degli header, vengono risposte Protocol irraggiungibile o risposte dello stesso protocollo per sapere se è attivo.-n
: Nessun DNS-R
: DNS sempre
Tecniche di scansione delle porte
-sS
: Non completa la connessione quindi non lascia tracce, molto buono se può essere usato.(privilegi) È quello utilizzato per impostazione predefinita.-sT
: Completa la connessione, quindi lascia una traccia, ma può essere utilizzato con certezza. Per impostazione predefinita senza privilegi.-sU
: Più lento, per UDP. Principalmente: DNS(53), SNMP(161,162), DHCP(67 e 68), (-sU53,161,162,67,68): aperto(risposta), chiuso(porta irraggiungibile), filtrato (un altro ICMP), aperto/filtrato (nulla). In caso di aperto/filtrato, -sV invia numerose richieste per rilevare una delle versioni che nmap supporta e può rilevare il vero stato. Aumenta molto il tempo.-sY
: Il protocollo SCTP non riesce a stabilire la connessione, quindi non ci sono log, funziona come -PY-sN,-sX,-sF
: Null, Fin, Xmas, possono penetrare alcuni firewall ed estrarre informazioni. Si basano sul fatto che le macchine conformi agli standard dovrebbero rispondere con RST a tutte le richieste che non hanno ritardi SYN, RST o ACK: aperto/filtrato(nulla), chiuso(RST), filtrato (ICMP irraggiungibile). Inaffidabile su Windows, Cisco, BSDI e OS/400. Su unix sì.-sM
: Scansione Maimon: Invia flag FIN e ACK, utilizzato per BSD, attualmente restituirà tutto come chiuso.-sA, sW
: ACK e Window, viene utilizzato per rilevare firewall, per sapere se le porte sono filtrate o meno. Il -sW distingue tra aperto/chiuso poiché quelli aperti rispondono con un valore di finestra diverso: aperto (RST con finestra diversa da 0), chiuso (RST finestra = 0), filtrato (ICMP irraggiungibile o nulla). Non tutti i computer funzionano in questo modo, quindi se è tutto chiuso, non funziona, se è pochi aperti, funziona bene, e se è molti aperti e pochi chiusi, funziona al contrario.-sI
: Scansione Idle. Per i casi in cui c'è un firewall attivo ma sappiamo che non filtra a un certo Ip (o quando vogliamo semplicemente anonimato) possiamo utilizzare lo scanner zombie (funziona per tutte le porte), per cercare possibili zombie possiamo usare lo script ipidseq o l'exploit ausiliario/scanner/ip/ipidseq. Questo scanner si basa sul numero IPID dei pacchetti IP.--badsum
: Invia la somma errata, i computer scarterebbero i pacchetti, ma i firewall potrebbero rispondere a qualcosa, viene utilizzato per rilevare firewall.-sZ
: Scanner SCTP "strano", quando invia probe con frammenti di echo cookie dovrebbero essere scartati se aperti o rispondere con ABORT se chiusi. Può passare attraverso firewall che init non passa, il brutto è che non distingue tra filtrato e aperto.-sO
: Scansione del protocollo Ip. Invia header errati e vuoti in cui a volte non può essere nemmeno distinto il protocollo. Se arriva un protocollo ICMP irraggiungibile è chiuso, se arriva una porta irraggiungibile è aperta, se arriva un altro errore, filtrato, se non arriva nulla, aperto|filtrato.-b <server>
: FTPhost--> Viene utilizzato per scansionare un host da un altro, questo viene fatto collegando l'ftp di un'altra macchina e chiedendole di inviare file alle porte che vuoi scansionare da un'altra macchina, in base alle risposte sapremo se sono aperte o meno. [<user>:<password>@]<server>[:<port>] Quasi tutti i server ftps non ti permettono più di farlo e quindi è di poco uso pratico.
Analisi Focalizzata
-p: Utilizzato per specificare le porte da scansionare. Per selezionare tutte le 65.335 porte: -p- o -p all. Nmap ha una classificazione interna basata sulla popolarità. Per impostazione predefinita, utilizza le prime 1000 porte. Con -F (scansione veloce) analizza le prime 100. Con --top-ports
-sV Scansione delle versioni, l'intensità può essere regolata da 0 a 9, il valore predefinito è 7.
--version-intensity
-O Rilevamento del sistema operativo
--osscan-limit Per una corretta scansione degli host, sono necessarie almeno una porta aperta e una chiusa. Se questa condizione non è soddisfatta e abbiamo impostato questo, non tenterà la previsione del sistema operativo (risparmia tempo)
--osscan-guess Quando il rilevamento del sistema operativo non è perfetto, questo lo fa provare di più
Script
--script
Per utilizzare script predefiniti, usa -sC o --script=default
I tipi disponibili sono: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version e vuln
- Auth: esegue tutti gli script di autenticazione disponibili
- Default: esegue gli script degli strumenti di base predefiniti
- Discovery: recupera informazioni dal target o dalla vittima
- External: script per utilizzare risorse esterne
- Intrusive: utilizza script considerati intrusivi per la vittima o il target
- Malware: controlla le connessioni aperte da codice dannoso o backdoor
- Safe: esegue script non intrusivi
- Vuln: scopre le vulnerabilità più conosciute
- All: esegue assolutamente tutti gli script di estensione NSE disponibili
Per cercare script:
nmap --script-help="http-*" -> Quelli che iniziano con http-
nmap --script-help="not intrusive" -> Tutti tranne quelli
nmap --script-help="default or safe" -> Quelli in uno o entrambi
nmap --script-help="default and safe" --> Quelli in entrambi
nmap --script-help="(default or safe or intrusive) and not http-*"
--script-args
--script-args-file
--script-help
--script-trace ---> Fornisce informazioni su come sta procedendo lo script
--script-updatedb
Per utilizzare uno script, digita semplicemente: nmap --script Script_Name target --> Quando utilizzi lo script, sia lo script che lo scanner verranno eseguiti, quindi possono essere aggiunte anche opzioni dello scanner. Possiamo aggiungere "safe=1" per eseguire solo quelli sicuri.
Controllo del Tempo
Nmap può modificare il tempo in secondi, minuti, ms: --host-timeout arguments 900000ms, 900, 900s, e 15m fanno tutte la stessa cosa.
Nmap divide il numero totale di host da scansionare in gruppi e analizza questi gruppi a blocchi, quindi non passa al blocco successivo fino a quando tutti sono stati analizzati (e l'utente non riceve aggiornamenti fino a quando il blocco non è stato analizzato). In questo modo, è più ottimale per Nmap utilizzare grandi gruppi. Per impostazione predefinita nella classe C, utilizza 256.
Questo può essere cambiato con --min-hostgroup
Puoi controllare il numero di scanner paralleli, ma è meglio non farlo (Nmap incorpora già un controllo automatico basato sullo stato della rete): --min-parallelism
Possiamo modificare il timeout RTT, ma di solito non è necessario: --min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout
Possiamo modificare il numero di tentativi: --max-retries _
Possiamo modificare il tempo di scansione di un host: --host-timeout _
Possiamo modificare il tempo tra ciascun test per rallentarlo: --scan-delay ; --max-scan-delay _
Possiamo modificare il numero di pacchetti al secondo: --min-rate
Molte porte impiegano molto tempo a rispondere quando sono filtrate o chiuse. Se siamo interessati solo a quelle aperte, possiamo andare più veloci con: --defeat-rst-ratelimit
Per definire quanto aggressivo vogliamo che sia Nmap: -T paranoid|sneaky|polite|normal|aggressive|insane
-T (0-1)
-T0 --> Scansiona solo 1 porta alla volta e aspetta 5min fino alla successiva
-T1 e T2 --> Molto simili ma aspettano solo 15 e 0.4sec rispettivamente tra ciascun test
-T3 --> Operazione predefinita, include scansione parallela
-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms
-T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms
Firewall/IDS
Non consentono l'accesso alle porte e analizzano i pacchetti.
-f Per frammentare i pacchetti, per impostazione predefinita li frammenta in 8byte dopo l'header, per specificare quella dimensione usiamo ..mtu (con questo, non usare -f), l'offset deve essere un multiplo di 8. Gli scanner di versioni e gli script non supportano la frammentazione
-D decoy1,decoy2,ME Nmap invia scanner ma con altri indirizzi IP come origine, in questo modo ti nascondono. Se metti ME nella lista, Nmap ti posizionerà lì, è meglio mettere 5 o 6 prima di te per mascherarti completamente. Gli IP casuali possono essere generati con RND:
Per utilizzare IP casuali: nmap -D RND:10 Target_IP
-S IP Per quando Nmap non cattura il tuo indirizzo IP devi fornirlo con questo. Serve anche per far pensare che un altro target ti sta scansionando.
-e
Molti amministratori lasciano porte di ingresso aperte affinché tutto funzioni correttamente ed è più facile per loro che trovare un'altra soluzione. Queste possono essere porte DNS o porte FTP... per trovare questa vulnerabilità Nmap incorpora: --source-port
--data
--data-string
--data-length
Per configurare completamente il pacchetto IP usa --ip-options
Se desideri vedere le opzioni nei pacchetti inviati e ricevuti, specifica --packet-trace. Per ulteriori informazioni ed esempi sull'uso delle opzioni IP con Nmap, vedere http://seclists.org/nmap-dev/2006/q3/52.
--ttl
--randomize-hosts Per rendere l'attacco meno ovvio
--spoof-mac <MAC address, prefix, or vendor name> Per cambiare il MAC esempi: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, e Cisco
--proxies
-sP Per scoprire host nella nostra rete tramite ARP
Molti amministratori creano una regola firewall che consente a tutti i pacchetti provenienti da una particolare porta di passare (come 20,53 e 67), possiamo dire a Nmap di inviare i nostri pacchetti da queste porte: nmap --source-port 53 IP
Output
-oN file Output normale
-oX file Output XML
-oS file Output script kiddies
-oG file Output greppable
-oA file Tutto tranne -oS
-v level verbosità
-d level debug
--reason Perché dell'host e stato
--stats-every time Ogni quel tempo ci dice come sta andando
--packet-trace Per vedere quali pacchetti escono, possono essere specificati filtri come: --version-trace o --script-trace
--open mostra aperto, aperto|filtrato e non filtrato
--resume file Fornisce un riepilogo
Varie
-6 Consente IPv6
-A è lo stesso di -O -sV -sC --traceroute
Tempo di esecuzione
Mentre Nmap è in esecuzione possiamo cambiare opzioni:
v / V Aumenta / diminuisci il livello di verbosità
d / D Aumenta / diminuisci il livello di debug
p / P Accendi / spegni il tracciamento dei pacchetti
? Stampa uno schermo di aiuto per l'interazione in tempo reale
Vulscan
Script Nmap che guarda le versioni dei servizi ottenute in un database offline (scaricato da altri molto importanti) e restituisce possibili vulnerabilità
I DB che utilizza sono:
- Scipvuldb.csv | http://www.scip.ch/en/?vuldb
- Cve.csv | http://cve.mitre.org
- Osvdb.csv | http://www.osvdb.org
- Securityfocus.csv | http://www.securityfocus.com/bid/
- Securitytracker.csv | http://www.securitytracker.com
- Xforce.csv | http://xforce.iss.net
- Exploitdb.csv | http://www.exploit-db.com
- Openvas.csv | http://www.openvas.org
Per scaricare e installare nella cartella Nmap:
wget http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar -czvf nmap_nse_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/
Dovresti anche scaricare i pacchetti DB e aggiungerli a /usr/share/nmap/scripts/vulscan/
Utilizzo:
Per utilizzare tutto: sudo nmap -sV --script=vulscan HOST_TO_SCAN
Per utilizzare un DB specifico: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_TO_SCAN
Accelerare la scansione dei servizi Nmap x16
Secondo questo post puoi accelerare l'analisi dei servizi nmap modificando tutti i valori totalwaitms
in /usr/share/nmap/nmap-service-probes
a 300 e tcpwrappedms
a 200.
Inoltre, le probe che non hanno un servicewaitms
specificamente definito utilizzano un valore predefinito di 5000
. Pertanto, possiamo aggiungere valori a ciascuna delle probe, oppure possiamo compilare nmap noi stessi e cambiare il valore predefinito in service_scan.h.
Se non vuoi cambiare i valori di totalwaitms
e tcpwrappedms
affatto nel file /usr/share/nmap/nmap-service-probes
, puoi modificare il codice di parsing in modo che questi valori nel file nmap-service-probes
vengano completamente ignorati.
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.