Descrizione nmap ci permette di determinare quali host sono disponibili su una rete, che servizi vengono offerti, che sistema operativo è in esecuzione, che tipo di firewall e packet filters sono presenti e molte altre caratteristiche. L'output di nmap è un elenco di host scansionati, con informazioni supplementari per ognuno a seconda delle opzioni usate. Tra queste informazioni è essenziale la tabella delle porte interessanti, ovvero una tabella che elenca il numero di porta, il protocollo, il nome del servizio e lo stato attuale di esso. Lo stato può essere: - open, indica che sulla porta è in ascolto un applicazione. - filtered, indica che un firewall o un altro dispositivo di protezione blocca la porta, nmap non riesce quindi a capire se la porta è aperta o chiusa. - closed, indica che sulla porta non c'è niente in ascolto. - unfiltered, indica che le porte rispondono alla scansione ma nmap non riesce a capire se sono effettivamente in ascolto o meno. A volte nmap usa le combinazioni: - chiusa | filtrata - aperta | filtrata quando non riesce a determinare lo stato della porta. Usando l'opzione -sO, nmap con una scansione IP fornisce informazioni sui protocolli IP supportati anziché sulle porte in ascolto. In aggiunta alla tabella delle porte nmap può fornire ulteriori informazioni come i nomi DNS risolti, il probabile sistema operativo, il tipo di device e l'indirizzo fisico. Una scansione di esempio può essere: # nmap -A -T4 scanme.nmap.org dove: - "-A" abilita la scansione del sistema operativo, l'utilizzo dello script scanning e il traceroute- - "-T4" velocizza la scansione. Il risultato è: Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-02 16:42 CEST Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.18s latency). Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f Not shown: 996 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0) ... ... ... 80/tcp open http Apache httpd 2.4.7 ((Ubuntu)) ... ... ... 9929/tcp open nping-echo Nping echo 31337/tcp open tcpwrapped Aggressive OS guesses: Linux 2.6.32 (92%), Linux 3.4 (91%), Synology DiskStation Manager 5.1 (91%), Linux 3.10 (90%), Linux 2.6.32 or 3.10 (90%), Linux 2.6.39 (90%), Linux 3.10 - 3.12 (90%), Linux 3.5 (90%), Linux 4.2 (90%), Linux 4.4 (90%) No exact OS matches for host (test conditions non-ideal). Network Distance: N hops Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE (using port 8080/tcp) HOP RTT ADDRESS ... ... ... OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 24.61 seconds Alcune opzioni Opzioni per la specifica del/dei target: - "-iL ", specifica un file contenente una lista di host o reti. Ogni host deve essere separato da uno o più spazi oppure da un a capo. - "-iR ", esegue uno scan a n host casuali. Se imposto il valore 0 la scansione è infinita. Con nmap -sS -PS80 -iR 0 -p 80 si trovano web server casuali. - "--exclude ", esclude gli host o le reti dallo scanning. - "--excludefile ", esclude host o reti presenti in un file. Opzioni per la scoperta degli host: - "-sL" (List Scan), lista i target su cui fare lo scanning. - "-sn" (Ping Scan), disabilita il port scanning. Di default usa un ICMP echo Request. - "-Pn", tratta tutti gli host come online, quinidi non esegue il ping. Utile se il firewall blocca appunto i ping, quasi sempre nelle macchine azure/aws di default. - "PS/PA/PU/PY ", esegue un TCP SYN o ACK o UDP o SCTP scan sulle porte specificate. - "PE/PP/PM", esegue un ICMP echo, timestamp o netmask scan. - "PO [protocol list]", esegue un IP scan sui protocolli listati. - "-n", non fa richieste DNS. - "-R", fa sempre richieste DNS. - "--dns-server ", specifica un DNS custom. - "--system-dns", usa il DNS di default. - "--traceroute", lista tutti gli hop in cui passa il pacchetto. Opzioni per la tecnica di scanning: - "-sS/sT/sA/sW/sM", esegue un TCP SYN/Connect()/ACK/Window/Maimon scan. - "-sU", esegue un UDP scan. - "-sN/sF/sX", esegue un TCP Null/Fin/Xmas scan. - "-sI ", esegue un idle scan. - "-sY/sZ", esegue un SCTP INIT/COOKIE-ECHO scan. - "-sO", esegue un IP protocol scan. - "-b ", esegue un FTP bounce scan. Opzioni per la specifica delle porte: - "-p ", esegue lo scan sulle porte specificate, se uso "-p-" lo esegue dalla 0 alla 65535, posso anche specificare una lista di porte: "-p 80,443" e i protocolli da usare su quelle porte: "-p T:80,U:38899". - "--exclude-ports ", come "-p" ma esclude le porte specificate dallo scanning. - "-F" (Fast Mode), esegue lo scanning su meno porte. - "-r", esegue lo scanning sequenzialmente e non randomicamente. - "--top-ports ", esegue lo scanning su N porte delle più comuni. Opzioni per le scoperta di servizi: - "-sV", esegue lo scan sulle porte aperte e determina servizio e versione del servizio in ascolto. - "--version-inntensity ", specifica un livello da 0 a 9 per cui provare a chiedere versione e servizio. Opzioni per l'utilizzo di script: - "-sC", utilizza lo script di default. - "--script=scriptname", utilizza lo script indicato. Da tenere a mente gli script vuln, malware, version, discovery. Opzioni per la ricerca del sistema operativo: - "-O", cerca di capire il sistema operativo usato. Opzioni varie: - "-T<0-5>", setta un tempo massimo, 0 è più lento, 5 più veloce. - "-S ", spoofa l'indirizzo mittente. - "-e", utilizza un'interfaccia specifica. - "-d", stampa informazioni di debug. - "-oN ", redirige lo stdout su un file. - "-oX ", redirige l'output in un file XML. - "-oG ", redirige l'output in un file "greppabile". - "-6", permette lo scan di IPv6. Interazioni runtime Durante l'esecuzione di uno scanning possiamo interagire con: - v/V, aumentando o diminuendo le informazioni. - d/D, aumentando o diminuendo le informazioni di debug. - p/P, attivando o disattivando le informazioni di tracing. - ?, stampa una schermata di aiuto per le interazioni. - Qualsiasi altro tasto, stampa un messaggio con informazioni sullo stato dello scanning. Esempi nmap -sS -O ammicco.net/24 -> esegue un SYN scan su tutte le macchine che risiedono nella rete di ammicco.net, cerca di risalire inoltre al nome e la versione del sistema operativo. nmap -sV -p 22,53,110,443 192.168.0-255.1-100 -> esegue uno scan dei servizi presenti sulle porte 22,53,110 e 443 dei primi 100 host presenti nelle reti da 192.168.0 a 192.168.255. nmap -iR 2000 -Pn -p 80 -> esegue una scansione della porta 80 su 2000 host casuali.