Nmap Summary (ESP)
Last updated
Last updated
Impara e pratica l'Hacking su AWS: HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)
<ip>,<net/mask>
: Indica gli ip direttamente
-iL <ips_file>
: lista_IPs
-iR <numero>
: Numero di Ips casuali, è possibile escludere possibili Ips con --exclude <Ips>
o --excludefile <file>
.
Per impostazione predefinita, Nmap avvia una fase di scoperta composta da: -PA80 -PS443 -PE -PP
-sL
: Non invasivo, elenca i target facendo richieste DNS per risolvere i nomi. È utile per sapere se ad esempio www.prueba.es/24 tutti gli Ips sono i nostri target.
-Pn
: Nessun ping. Questo è utile se si sa che tutti sono attivi (altrimenti si potrebbe perdere molto tempo, ma questa opzione produce anche falsi negativi dicendo che non sono attivi), impedisce la fase di scoperta.
-sn
: Nessuna scansione di porte. Dopo aver completato la fase di ricognizione, non esegue la scansione delle porte. È relativamente stealthy e consente una piccola scansione di rete. Con privilegi invia un ACK (-PA) a 80, un SYN(-PS) a 443 e una richiesta di eco e una richiesta di timestamp, senza privilegi completa sempre le connessioni. Se il target è la rete, utilizza solo ARP(-PR). Se utilizzato con un'altra opzione, vengono scartati solo i pacchetti dell'altra opzione.
-PR
: Ping ARP. Viene utilizzato per impostazione predefinita quando si analizzano computer nella nostra rete, è più veloce dell'utilizzo di ping. Se non si desidera utilizzare i pacchetti ARP, utilizzare --send-ip
.
-PS <porte>
: Invia pacchetti SYN a cui 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 specificate porte, le invia a 80.
-PA <porte>
: Come il precedente ma con ACK, combinando entrambi si ottengono risultati migliori.
-PU <porte>
: L'obiettivo è opposto, vengono inviati a porte che si prevede siano chiuse. Alcuni firewall controllano solo le connessioni TCP. Se è chiuso viene risposto con porta irraggiungibile, se viene risposto con un altro icmp o non viene risposto viene lasciato come destinazione irraggiungibile.
-PE, -PP, -PM
: PING ICMP: risposta echo, timestamp e addresmask. Vengono inviati per scoprire se il target è attivo.
-PY<porte>
: Invia sonde SCTP INIT a 80 per impostazione predefinita, INIT-ACK(aperto) o ABORT(chiuso) o niente o ICMP irraggiungibile(inattivo) possono essere risposti.
-PO <protocolli>
: 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 ciò è che a causa della malformazione degli header, vengono risposti Protocol unreachable o risposte dello stesso protocollo per sapere se è attivo.
-n
: Nessun DNS
-R
: DNS sempre
-sS
: Non completa la connessione quindi non lascia traccia, molto buono se può essere utilizzato (privilegi). È quello utilizzato per impostazione predefinita.
-sT
: Completa la connessione, quindi lascia una traccia, ma può essere utilizzato con sicurezza. Di default 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 (niente). In caso di aperto/filtrato, -sV invia numerose richieste per rilevare una delle versioni supportate da nmap e può rilevare lo stato reale. Aumenta notevolmente 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 allo standard dovrebbero rispondere con RST a tutte le richieste che non hanno sollevato flag SYN, RST o ACK: aperto/filtrato(niente), chiuso(RST), filtrato (ICMP irraggiungibile). Non affidabile 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 i 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 (finestra RST = 0), filtrato (ICMP irraggiungibile o niente). Non tutti i computer funzionano in questo modo, quindi se sono tutti chiusi, non funziona, se sono pochi aperti, funziona correttamente, e se sono molti aperti e pochi chiusi, funziona al contrario.
-sI
: Scansione inattiva. Nei casi in cui c'è un firewall attivo ma sappiamo che non filtra verso un certo Ip (o quando vogliamo semplicemente l'anonimato) possiamo utilizzare lo scanner zombie (funziona per tutte le porte), per cercare possibili zombie possiamo utilizzare lo script ipidseq o l'exploit auxiliary/scanner/ip/ipidseq. Questo scanner si basa sul numero IPID dei pacchetti IP.
--badsum
: Invia il sommario sbagliato, i computer scarterebbero i pacchetti, ma i firewall potrebbero rispondere qualcosa, viene utilizzato per rilevare i firewall.
-sZ
: Scanner SCTP "strano", quando invia sonde con frammenti di cookie echo dovrebbero essere scartati se aperti o risposti con ABORT se chiusi. Può passare attraverso i firewall che init non riesce a superare, il brutto è che non distingue tra filtrato e aperto.
-sO
: Scansione del protocollo Ip. Invia intestazioni errate e vuote in cui a volte non è nemmeno possibile distinguere il protocollo. Se arriva un protocollo ICMP irraggiungibile è chiuso, se arriva una porta irraggiungibile è aperto, se arriva un altro errore, filtrato, se non arriva nulla, aperto|filtrato.
-b <server>
: FTPhost--> Viene utilizzato per scansionare un host da un altro, ciò viene fatto collegandosi all'ftp di un'altra macchina e chiedendo di inviare file alle porte che si desidera scansionare da un'altra macchina, in base alle risposte sapremo se sono aperte o no. [<user>:<password>@]<server>[:<port>] Quasi tutti i server ftp non ti permettono più di farlo e quindi è di scarsa utilità pratica.
-p: Serve per specificare le porte da scansionare. Per selezionare le 65335: -p- o -p all. Nmap ha una classificazione interna in base alla sua popolarità. Di default utilizza le 1000 principali. Con -F (scansione veloce) analizza le prime 100. Con --top-ports <numero> Analizza quel numero di porte principali (da 1 a 65335). Controlla le porte in ordine casuale, per evitare ciò -r. È anche possibile selezionare le porte: 20-30,80,443,1024- Quest'ultimo significa di controllare in avanti dal 1024. È anche possibile raggruppare le porte per protocolli: U:53,T:21-25,80,139,S:9. È anche possibile scegliere un intervallo all'interno delle porte popolari di nmap: -p [-1024] controlla fino al 1024 incluso nei servizi nmap. --port-ratio <ratio> Controlla le porte più comuni rispetto a un rapporto che deve essere compreso tra 0 e 1
-sV Scansione della versione, è possibile regolare l'intensità da 0 a 9, di default 7.
--version-intensity <numero> Regola l'intensità, in modo che quanto più bassa sarà, lancerà solo le sonde più probabili, ma non tutte. Con questo possiamo accorciare notevolmente il tempo di scansione UDP
-O Rilevamento del sistema operativo
--osscan-limit Per scansionare correttamente un host è necessario che ci sia almeno una porta aperta e una chiusa, se questa condizione non è soddisfatta e abbiamo impostato questo, non tenta di fare previsioni sul sistema operativo (risparmia tempo) --osscan-guess Quando la rilevazione dell'OS non è perfetta, questo sforza ulteriormente
Scripts
--script <filename>|<category>|<directory>|<expression>[,...]
Per utilizzare quelli predefiniti, è sufficiente usare -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 i suoi scripts disponibili per l'autenticazione
Default: esegue gli scripts di base predefiniti dello strumento
Discovery: recupera informazioni sul target o vittima
External: script per utilizzare risorse esterne
Intrusive: utilizza scripts considerati intrusivi per la vittima o il target
Malware: controlla se ci sono connessioni aperte da codici dannosi o backdoors
Safe: esegue scripts non intrusivi
Vuln: scopre le vulnerabilità più conosciute
All: esegue tutti i scripts NSE disponibili
Per cercare scripts:
nmap --script-help="http-*" -> Quelli che iniziano con http-
nmap --script-help="not intrusive" -> Tutti tranne quelli
nmap --script-help="default or safe" -> Quelli che sono in uno o in altro o in entrambi
nmap --script-help="default and safe" --> Quelli che sono in entrambi
nmap --script-help="(default or safe or intrusive) and not http-*"
--script-args <n1>=<v1>,<n2>={<n3>=<v3>},<n4>={<v4>,<v5>}
--script-args-file <filename>
--script-help <filename>|<category>|<directory>|<expression>|all[,...]
--script-trace ---> Fornisce informazioni sullo stato dello script
--script-updatedb
Per utilizzare uno script basta digitare: nmap --script Nome_dello_script obiettivo --> Quando si specifica lo script, verrà eseguito sia lo script che lo scanner, quindi è possibile 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 la stessa cosa.
Nmap divide il numero totale di host da scansionare in gruppi e analizza quei gruppi a blocchi in modo che non passi al blocco successivo fino a quando tutti i blocchi non sono stati analizzati (e l'utente non riceve alcun aggiornamento fino a quando il blocco non è stato analizzato). In questo modo, è più efficiente per nmap utilizzare gruppi più grandi. Di default, in classe C usa 256.
Può essere modificato con**--min-hostgroup** <numhosts>; --max-hostgroup <numhosts> (Regola le dimensioni dei gruppi di scansione parallela)
È possibile controllare il numero di scanner paralleli, ma è meglio evitarlo (nmap incorpora già un controllo automatico in base allo stato della rete): --min-parallelism <numprobes>; --max-parallelism <numprobes>
È possibile modificare il timeout rtt, ma di solito non è necessario: --min-rtt-timeout <time>, --max-rtt-timeout <time>, --initial-rtt-timeout <time>
È possibile modificare il numero di tentativi: --max-retries <numtries>
È possibile modificare il timeout di un host: --host-timeout <time>
È possibile modificare il tempo tra ogni scansione per rallentare: --scan-delay <time>; --max-scan-delay <time>
È possibile modificare il numero di pacchetti al secondo: --min-rate <number>; --max-rate <number>
Molti porti impiegano molto tempo a rispondere se sono filtrati o chiusi, se siamo interessati solo a quelli aperti, possiamo accelerare con: --defeat-rst-ratelimit
Per definire il livello di aggressività di nmap: -T paranoid|sneaky|polite|normal|aggressive|insane
-T (0-1)
-T0 --> Scansiona solo 1 porta alla volta e attende 5 minuti prima della successiva
-T1 e T2 --> Molto simili ma attendono rispettivamente 15 e 0,4 secondi tra ogni scansione
-T3 --> Funzionamento predefinito, include in parallelo
-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
Bloccano le porte e analizzano i pacchetti.
-f Per frammentare i pacchetti, di default li frammenta in 8 byte dopo l'intestazione, per specificare quella dimensione usiamo ..mtu (con questo, non usare -f), l'offset deve essere multiplo di 8. Version scan e script non supportano la frammentazione
-D decoy1,decoy2,ME Nmap invia scansioni ma con altri indirizzi IP come origine, in questo modo ti nasconde. Se inserisci ME nell'elenco, nmap ti posizionerà lì, è meglio inserire 5 o 6 prima di te per mascherarti completamente. È possibile generare IP casuali con RND:<numero> per generare <numero> di IP casuali. Non funzionano con il rilevamento delle versioni senza connessione TCP. Se sei all'interno di una rete, è consigliabile utilizzare IP attivi, altrimenti sarà molto facile capire che sei l'unico attivo.
Per utilizzare IP casuali: nmap-D RND: 10 Ip_obiettivo
-S IP Quando Nmap non rileva il tuo indirizzo IP, devi fornirlo con questo. Serve anche per far pensare che ci sia un altro obiettivo che li sta scansionando.
-e <interfaccia> Per scegliere l'interfaccia
Molti amministratori lasciano aperte le porte di ingresso affinché tutto funzioni correttamente e sia più facile per loro che cercare un'altra soluzione. Queste possono essere le porte DNS o quelle FTP... per cercare questa vulnerabilità nmap include: --source-port <portnumber>;-g <portnumber> Sono equivalenti
--data <stringa esadecimale> Per inviare testo esadecimale: --data 0xdeadbeef e --data \xCA\xFE\x09
--data-string <stringa> Per inviare un testo normale: --data-string "Scansione condotta da Security Ops, estensione 7192"
--data-length <numero> Nmap invia solo intestazioni, con questo facciamo in modo che aggiunga a queste un numero di byte in più (che verranno generati casualmente)
Per configurare completamente il pacchetto IP utilizzare --ip-options
Se si desidera visualizzare le opzioni nei pacchetti inviati e ricevuti, specificare --packet-trace. Per ulteriori informazioni ed esempi sull'utilizzo delle opzioni IP con Nmap, vedere http://seclists.org/nmap-dev/2006/q3/52.
--ttl <valore>
--randomize-hosts Per rendere l'attacco meno ovvio
--spoof-mac <indirizzo MAC, prefisso o nome del produttore> Per cambiare il MAC esempi: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2 e Cisco --proxies <Elenco separato da virgole di URL proxy> Per utilizzare i proxy, a volte un proxy non mantiene tante connessioni aperte come nmap desidera, quindi potrebbe essere necessario modificare la parallelità: --max-parallelism
-sP Per scoprire gli host nella rete in cui ci troviamo tramite ARP
Molti amministratori creano una regola nel firewall che consente il passaggio di tutti i pacchetti provenienti da una porta specifica (come la 20, 53 e 67), possiamo dire a nmap di inviare i nostri pacchetti da tali porte: nmap --source-port 53 Ip
Output
-oN file Output normale
-oX file Output XML
-oS file Output per script kiddies
-oG file Output grepable
-oA file Tutti tranne -oS
-v level verbosità
-d level debug
--reason Motivo dell'host e dello stato
--stats-every time Ogni tot tempo mostra lo stato
--packet-trace Per visualizzare i pacchetti inviati, è possibile specificare filtri come: --version-trace o --script-trace
--open mostra gli host aperti, aperti|filtrati e non filtrati
--resume file Genera un riassunto
Miscellanea
-6 Abilita ipv6
-A Equivale a -O -sV -sC --traceroute
Run time
Durante l'esecuzione di nmap è possibile modificare le opzioni:
v / V Aumenta / diminuisce il livello di verbosità
d / D Aumenta / diminuisce il livello di debug
p / P Attiva / disattiva il tracciamento dei pacchetti
? Stampa un aiuto interattivo durante l'esecuzione
Vulscan
Script di nmap che controlla le versioni dei servizi ottenuti in un database offline (scaricato da fonti molto importanti) e restituisce le possibili vulnerabilità
I database utilizzati 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 scaricarlo e installarlo nella cartella di 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/
Inoltre è necessario scaricare i pacchetti dei database e aggiungerli a /usr/share/nmap/scripts/vulscan/
Utilizzo:
Per utilizzare tutti: sudo nmap -sV --script=vulscan HOST_A_ESCANEAR
Per utilizzare un database specifico: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_A_ESCANEAR
Secondo questo post è possibile accelerare l'analisi dei servizi nmap modificando tutti i valori di totalwaitms
in /usr/share/nmap/nmap-service-probes
a 300 e tcpwrappedms
a 200.
Inoltre, le sonde che non hanno un servicewaitms
definito specificamente utilizzano un valore predefinito di 5000
. Pertanto, possiamo aggiungere valori a ciascuna delle sonde, oppure possiamo compilare nmap noi stessi e modificare il valore predefinito in service_scan.h.
Se non si desidera modificare affatto i valori di totalwaitms
e tcpwrappedms
nel file /usr/share/nmap/nmap-service-probes
, è possibile modificare il codice di analisi in modo che questi valori nel file nmap-service-probes
vengano completamente ignorati.
Impara e pratica l'hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)