Nmap è uno strumento di scansione di rete open source che viene utilizzato per esplorare una rete e determinare i dispositivi connessi alla stessa. Inoltre, Nmap è in grado di determinare le porte di rete aperte sui dispositivi, i protocolli di rete in uso e altre informazioni utili.
Per i professionisti della sicurezza è di vitale importanza identificare su di un host quali siano le porte in ascolto, in modo da evitare che eventuali malintenzionati utilizzino queste informazioni per identificare il sistema operativo dell’host. Queste potrebbero consentire loro di accedere al sistema, sfruttando magari problemi di sicurezza proprio sui servizi in ascolto. Capita sovente che dopo aver proceduto all’installazione si lascino attivi alcuni servizi superflui. Una scansione del sistema è sicuramente un prerequisito essenziale che permette di eliminare o fermare processi superflui che utilizzano alcune porte. Esistono numerosi tool per piattaforma Linux/Unix, ma ci limiteremo a citare alcuni dei più popolari come strobe, udp_scan, netcat oramai superati e nmap che approfondiremo meglio nel corso del tutorial.
CARATTERISTICHE GENERALI DEL PROGRAMMA
Nmap, nato proprio dall’esigenza dell’autore, il celebre hacker Fyodor, di utilizzare un unico tool che implementasse diverse funzionalità per svolgere attività di scansione delle porte. Questo programmatore, oltre alle sue eccellenti capacità di sviluppatore, crede fortemente nell’importanza del lavoro di equipe, e proprio per questo motivo è riuscito a creare attorno a nmap una vera e propria community, che si occupa regolarmente di apportarvi migliorie e nuove funzionalità. A differenza di quanto si possa pensare, Nmap non è soltanto un semplice tool di scansione, dispone di numerose caratteristiche e funzionalità che ne hanno fatto uno fra i piu popolari tool di security attualmente utilizzati. Quali cono le caratteristiche che ci colpiscono maggiormente? Eccone alcune:
- Riconoscimento del sistem operativo. Nmap è in grado di identificare il sistema operativo remoto non basandosi semplicemente sulla cattura di un banner su di una determinata porta,ma in base alle risposte TCP, UDP e IP provenienti da centinaia di sistemi operativi diversi contenute in un database. Il programma interroga il sistema e confronta le risposte con quelle contenute nel database in modo da capire di quale sistema operativo si possa trattare.
- Test della configurazione del firewall. Grazie alla possibilità di customizzare le nostre richieste verso un target, saremo in grado di capire alcune delle policy adottate dal firewall e di provare diversi tipi di scansione cercando cosi di bypassare le protezioni.
- Funzionalità di spoofing. La possibilità di eseguire scansioni inmodo da fingersi un altro host. Questa funzione si rivela anche molto utile per testare la configurazione del nostro firewall.
- Controllo della velocità della scansione. Come è risaputo, molti sistemi di rilevamento di intrusioni sono in grado di rilevare tentativi di scansione, specie se questi vengono eseguiti rapidamente. Nmap offre anche la possibilità di rallentare queste scansioni, funzionalità molto utile proprio per controllare il funzionamento del nostro IDS.
Nmap è disponibile per GNU/Linux, Microsoft Windows, FreeBSD, OpenBSD, Solaris, IRIX, Mac OS X, HPUX, NetBSD, Sun OS, Amiga e molti altri sistemi.
SCARICARE E INSTALLARE NMAP
L’installazione di Nmap dipende dal sistema operativo che si sta utilizzando. Ecco alcuni esempi di come installare Nmap su alcuni dei sistemi operativi più comuni:
Su Linux:
- Su Debian e Ubuntu, eseguire il comando:
$sudo apt-get install nmap
- Su Fedora e Red Hat, eseguire il comando:
$sudo yum install nmap
- Su Arch Linux, eseguire il comando:
$sudo pacman -S nmap
Su macOS:
- Utilizzando Homebrew, eseguire il comando:
$brew install nmap
- Utilizzando MacPorts, eseguire il comando:
$sudo port install nmap
Su Windows:
- Scaricare il file di installazione dal sito ufficiale di Nmap (https://nmap.org/download.html) e seguire le istruzioni di installazione.
Ricorda che, per eseguire Nmap, potrebbe essere necessario eseguire il comando da una finestra della riga di comando o del terminale. Inoltre, per eseguire alcune delle opzioni avanzate, potrebbe essere necessario eseguire Nmap con privilegi amministrativi.
Esempi di Utlizzo di Nmap
Di seguito alcuni esempi di come utilizzare Nmap
Presumendo di essere in una rete LAN di classe C cioè 192.168.1.0 con maschera 255.255.255.0
- Scansione di una singola macchina:
Per eseguire una scansione su una singola macchina, utilizzare il seguente comando:
$ nmap [IP address] $nmap 192.168.1.25
- Scansione di una rete:
Per eseguire una scansione di una rete, utilizzare il seguente comando:
$ nmap [IP range] $ nmap -sn 192.168.1.0/24
- Scansione di una rete tramite il nome del dominio:
Per eseguire una scansione di una rete utilizzando il nome di dominio, utilizzare il seguente comando:
$ nmap [domain name]
- Scansione di un range di porte:
Per eseguire una scansione di un range di porte, utilizzare il seguente comando:
$ nmap -p [port range] [IP address]
- Scansione di tutte le porte:
Per eseguire una scansione di tutte le porte, utilizzare il seguente comando:
$ nmap -p- [IP address]
- Scansione furtiva:
Per eseguire una scansione furtiva, utilizzare il seguente comando:
$ nmap -sS [IP address]
Una delle scansioni più utilizzate da coloro che eseguono dei test oppure da hacker professionisti è la scansione furtiva (Stealth Scan) è una tecnica utilizzata da Nmap per eseguire una scansione di una rete o di un singolo host senza essere rilevati dai dispositivi di sicurezza della rete, come i firewall.
La scansione furtiva utilizza una serie di tecniche per ridurre al minimo il rumore di rete che normalmente verrebbe generato da una scansione di rete. Ciò include l’utilizzo di tecniche come la scansione SYN, la scansione TCP ACK e la scansione TCP FIN.
In una scansione SYN, Nmap invia una richiesta di connessione SYN al dispositivo di destinazione senza completare la connessione. In questo modo, Nmap può determinare se una porta è aperta o chiusa senza attivare un’intera connessione.
In una scansione TCP ACK, Nmap invia una richiesta di connessione ACK al dispositivo di destinazione. Se la porta è aperta, il dispositivo di destinazione invierà una risposta ACK. Altrimenti, invierà una risposta RST.
In una scansione TCP FIN, Nmap invia una richiesta di connessione FIN al dispositivo di destinazione senza completare la connessione. In questo modo, Nmap può determinare se una porta è aperta o chiusa senza attivare un’intera connessione.
La scansione furtiva può essere utile per esplorare una rete senza essere rilevati dai dispositivi di sicurezza della rete. Tuttavia, è importante ricordare che l’utilizzo della scansione furtiva può essere considerato un comportamento sospetto e potrebbe essere rilevato da alcuni dispositivi di sicurezza della rete.
Questi sono solo alcuni dei comandi e delle opzioni disponibili in Nmap. Si prega di consultare la documentazione ufficiale per ulteriori informazioni.
Nel pannello sottostante sono elencati i flag del tipo di scansione che si vuole effettuare. E’ possibile scegliere la modalita di “attacco” verso l’host. Ognuna delle scelte corrisponderà ad un flag che dovrà essere utilizzato in modalità riga di comando.
Nel pannello sottostante sono indicati i flag per selezionare il modo in cui effettuare il controllo sugli host per verificare se siano attivi oppure no. Questa sezione di opzioni è molto utile se ci si trova di fronte all’analisi di un intero segmento di rete. Come nella precedente scheda, anche qui ogni parametro scelto corrisponderà ad un flag da utilizzare nella riga di comando di nmap. Segue una descrizione dei FLAG inerenti la check box:
Esempio 1. Una scansione di tipo SYN STEALTH zipixel@zpxc321:~/temp$ sudo nmap -sS 192.168.166.28 Starting Nmap 7.80 ( https://nmap.org ) at 2023-03-12 23:13 CET Nmap scan report for zpxsyno.fritz.box (192.168.166.28) Host is up (0.00021s latency). Not shown: 988 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 139/tcp open netbios-ssn 443/tcp open https 445/tcp open microsoft-ds 548/tcp open afp 873/tcp open rsync 2105/tcp open eklogin 5000/tcp open upnp 5001/tcp open commplex-link 50001/tcp open unknown 50002/tcp open iiimsf MAC Address: XX:XX:XX:XX:XX:XX (Synology Incorporated) Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds zipixel@zpxc321:~/temp$
Una tipica scansione con Nmap è mostrata su Esempio 2. Le uniche opzioni usate di Nmap in questo esempio sono -A, per abilitare la rilevazione del sistema operativo e della versione, lo script scanning e il traceroute, -T4 per un'esecuzione più rapida e infine l'host obiettivo. Esempio 2. # nmap -A -T4 scanme.nmap.org Nmap scan report for scanme.nmap.org (74.207.244.221) Host is up (0.029s latency). rDNS record for 74.207.244.221: li86-221.members.linode.com Not shown: 995 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu7 (protocol 2.0) | ssh-hostkey: 1024 8d:60:f1:7c:ca:b7:3d:0a:d6:67:54:9d:69:d9:b9:dd (DSA) |_2048 79:f8:09:ac:d4:e2:32:42:10:49:d3:bd:20:82:85:ec (RSA) 80/tcp open http Apache httpd 2.2.14 ((Ubuntu)) |_http-title: Go ahead and ScanMe! 646/tcp filtered ldp 1720/tcp filtered H.323/Q.931 9929/tcp open nping-echo Nping echo Device type: general purpose Running: Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6.39 OS details: Linux 2.6.39 Network Distance: 11 hops Service Info: OS: Linux; CPE: cpe:/o:linux:kernel TRACEROUTE (using port 53/tcp) HOP RTT ADDRESS [Cut first 10 hops for brevity] 11 17.65 ms li86-221.members.linode.com (74.207.244.221) Nmap done: 1 IP address (1 host up) scanned in 14.40 seconds
ZenMap GUI di Nmap
Zenmap è la GUI multipiattaforma ufficiale per Nmap Security Scanner. È gratuito e funziona su Linux, Windows, Mac OS X, ecc. Zenmap mira a rendere Nmap facile da usare per i principianti, fornendo al contempo funzionalità avanzate per gli utenti esperti di Nmap.
Alternative a Nmap
Vecchie Glorie
STROBE – È un tool di scansione delle porte TCP, sviluppato da Julian Assange. Tra le caratteristiche principali offre la possibilità di ottimizzare l’utilizzo delle risorse per eseguire scansioni in maniera
più efficiente. Inoltre strobe, attraverso la cattura del banner, è in grado di identificare il sistema operativo ed il servizio in esecuzione sulla macchina target.
UDP_SCAN – Si occupa, invece, della scansione delle porte UDP (strobe è solo TCP), parte di un famoso tool di sicurezza SATAN (adesso denominato SAINT), e nonostante sia abbastanza datato (il suo sviluppo risale al 1995) è ancora in grado di soddisfare appieno le necessità.
NETCAT – È un ottimo tool, definito per la sua completezza ed efficienza il “coltellino svizzero” grazie alle numerose funzionalità che ci offre. A differenza dei precedenti tool, netcat permette la scansione delle porte TCP e UDP, si occupa del controllo del dettaglio degli input e può essere integrato con altri tool.
Nuovi Strumenti
WireShark – Analizzatore di protocolli di rete che aiuta le aziende ad acquisire dati in tempo reale e a monitorare, gestire e analizzare il traffico di rete a livello microscopico.
Angry IP Scanner – Angry IP scanner è uno scanner di indirizzi IP e porte molto veloce.
Può scansionare gli indirizzi IP in qualsiasi intervallo e qualsiasi porta. È multipiattaforma e leggero. Non richiede alcuna installazione, può essere liberamente copiato e utilizzato ovunque.
Angry IP scanner esegue semplicemente il ping di ogni indirizzo IP per verificare se è vivo, quindi opzionalmente sta risolvendo il suo nome host, determina l’indirizzo MAC, scansiona le porte, ecc. La quantità di dati raccolti su ciascun host può essere estesa con l’ausilio di plugin.
Ha anche funzionalità delle aggiuntive, come le informazioni NetBIOS (nome del computer, nome del gruppo di lavoro e utente Windows attualmente connesso), intervalli di indirizzi IP preferiti, rilevamento del server Web, apritori personalizzabili, ecc.
I risultati della scansione possono essere salvati in file di elenco CSV, TXT, XML o IP-Port. Con l’aiuto dei plugin, Angry IP Scanner può raccogliere qualsiasi informazione sugli IP scansionati. Chiunque sia in grado di scrivere codice Java è in grado di scrivere plugin ed estendere le funzionalità di Angry IP Scanner.
Per aumentare la velocità di scansione, utilizza un approccio multithread: viene creato un thread di scansione separato per ogni indirizzo IP scansionato. Il codice sorgente completo è disponibile, potete verificare sulla pagina di download del programma.
Conclusioni
Quanto sopra descritto sono soltanto alcuni esempi che è possibile eseguire tramite nmap, ma le possibilità offerte da questo programma sono solo legate alla vostra immaginazione. È importante capire che molto spesso un hacker utilizza proprio la scansione come uno dei primi approcci prima di sferrare un attacco al vostro sistema. È di conseguenza importante riconoscere questo tipo di attività in modo da prevenire una eventuale intrusione. Uno dei principali metodi utilizzabili per l’intercettazione di tentavi di scansione delle porte è l’uso di programmi IDS basati sulla rete, un ottimo tool che può venirci incontro è
SNORT. Ci aiuterà anche il settaggio del firewall in modo da riconoscere tentativi anche particolari di scansione. Come abbiamo spiegato, è possibile grazie a nmap utilizzare diverse tecniche di scansione, in modo da forzare tutte le policy dei nostri firewall.
Non vi resta che utilizzare namp strumento per incrementare la sicurezza della vostra rete.
Enjoy