Nmap Summary (ESP)

Impara l'hacking su AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24

Parametri

IP da scansionare

  • <ip>,<net/mask>: Indica direttamente gli IP

  • -iL <ips_file>: lista_IPs

  • -iR <numero>: Numero di IP casuali, è possibile escludere gli IP possibili 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 gli obiettivi facendo richieste DNS per risolvere i nomi. È utile per sapere se ad esempio www.prueba.es/24 tutti gli IP sono i nostri obiettivi.

  • -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 dei 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 fornite 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

Tecniche di scansione delle porte

  • -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 lo sfruttamento ausiliario/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 sbagliate e vuote in cui a volte nemmeno il protocollo può essere distinto. 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, questo 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 scarso utilizzo pratico.

Centrare l'analisi

-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 100 principali. Con --top-ports <numero> Analizza quel numero di 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 che controlla a partire 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 a 1024 tra quelli inclusi in nmap-services. --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 dell'OS

--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 una previsione dell'OS (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, and 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 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 una 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. Gli scanner di versione 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 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 FTP... per cercare questa vulnerabilità nmap incorpora: --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 sì che aggiunga a queste un numero casuale di byte in più

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 dei proxy> Per utilizzare i proxy, a volte un proxy potrebbe non mantenere aperte abbastanza connessioni 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

Varie

-6 Abilita ipv6

-A Equivale a -O -sV -sC --traceroute

Tempo di esecuzione

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 una schermata di aiuto interattiva durante l'esecuzione

Vulscan

Script di nmap che confronta le versioni dei servizi ottenute in un database offline (scaricato da fonti molto importanti) e restituisce le possibili vulnerabilità

I database utilizzati sono:

  1. Securitytracker.csv | http://www.securitytracker.com

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

Accelerare la scansione dei servizi Nmap x16

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 l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated