Come fare un vulnerability Assessment con nmap
Diciamolo subito, se il nostro scopo è quello di implementare un processo di Vulnerability Management e ci serve tenere sotto scansione centinaia o migliaia di server organizzati per produzione, test e sviluppo, allora quello che ci serve è un tool di vulnerability assessment più potente.
Possiamo sceglierlo opensource come OpenVAS o commerciale come Nessus o Nexpose. Questo dipende dal nostro budget e dalle nostre esigenze.
A volte però ci serve qualcosa di veloce che ci dia una rapida overview sullo stato di salute di una macchina, o più semplicemente possiamo non avere accesso momentaneamente ai nostri strumenti più blasonati.
Proprio ieri cercavo una soluzione per un mio vecchio netbook, un Asus Aspire D257. Anche con tutta la pazienza del mondo, far girare Nexpose Community è un bagno di sangue. Ho trovato, facendo un po’ di ricerche un’estensione di nmap, Vulscan che sembra fare al caso mio.
Vulscan è uno script NSE, quindi del codice scritto in lua che
estende le funzionalità di nmap, che sfrutta le informazioni che il
portscanner ha ricavato dall’identificazione dei servizi, vitale sarà lanciare
nmap con l’opzione -sV
, per elencare le
vulnerabilità note per quella versione.
Questo grazie ad una serie di file CSV che fungono da base dati delle vulnerabilità.
Cos’è un vulnerability assessment?
Prima di vedere come installare Vulscan chiariamo quale sia il problema che vogliamo risolvere. Noi abbiamo un indirizzo IP, o una subnet, e vogliamo sapere quali sono le vulnerabilità dei servizi in ascolto su quelle macchine.
Perché mi serve quest’informazione? Mi serve innanzitutto per fare un censimento della versione del software che espone servizi per la mia società o per un mio cliente. Mi serve perché posso creare un piano di patching sulla base delle priorità assegnate a ciascuna vulnerabilità e posso partire da questi risultati per prendere il controllo di una macchina se sto facendo un penetration test. Ovviamente devo essere stato autorizzato a questo step ulteriore.
Un portscan non è illegale e molte società o non lo rilevano o lo ignorano. Avere una knowledge base che ci permette di sapere che esposto ho un IIS 5.0 e che è vulnerabile a X, Y e Z continua a non essere illegale. In fondo ho solo fatto una GET / per sapere la versione del web server. Cercare di bucarlo, sì diventa illegale, quindi a meno che non sia un’attività concordata col cliente, evitate di cacciarvi nei guai.
Come si installa Vulscan
Vulscan è disponibile per il download a questa
URL. Una volta scaricato
e scompattato, avrete una directory vulscan
contenente lo script nse e il
file CSV che costituiscono la knowledge base. Questi file CSV sono disponibili,
in una versione più aggiornata, sempre nella pagina di download del
progetto.
Il percorso dove copiare vulscan dipende in realtà dal sistema operativo che
state utilizzando. Ho verificato che per almeno Kali linux e OS X, la directory
degli script di nmap è in /usr/local/share/nmap/scripts
Una volta installato, possiamo vedere che i file CSV con le vulnerabilità sono fermi al 2013. Sul sito ci sono delle versioni più aggiornate, in particolare sono 3 i file modificati rispetto ad Agosto 2013.
Qui possiamo vedere una pecca, grossa. La bontà di questo strumenti dipende esclusivamente dalla knowledge base. Se è aggiornata, allora tutto ha un senso, altrimenti stiamo facendo delle scansioni ma ci stiamo perdendo dietro dei pezzi.
L’archivio aggiornato costantemente è quello del SCIP, forse perché l’autore di Vulscan è svizzero. Se vogliamo migliorare l’accuratezza delle nostre scansioni, nessuno ci vieta di aggiungere un altro feed.
Vi invito a leggervi la documentazione di Vulscan, presente nello stesso file
nse. Descrive come creare il proprio file CSV con vulnerabilità custom e come
usare l’opzione --script-args vulscandb=your_own_database
per specificare
il proprio database.
Come si usa Vulscan
Ricordate, Vulscan ha bisogno che chiediate ad nmap di fare il fingerprint della versione del servizio per poter funzionare.
Vi consiglio di usare l’opzione -oA
di nmap per salvare l’output. Vulscan
sa essere molto verboso, soprattutto se ci sono tante issue.
Off by one
Vulscan basa la sua accuratezza su quanto è stato in grado nmap di rilevare la versione di un particolare software e sulla bontà della propria base dati. La mia opinione è che ci sia tanto rumore quindi i risultati vanno presi con le pinze e soprattutto con il cervello.
Vulscan è una buona estensione quando siete in emergenza o quando non potete usare strumenti che fanno un’intelligence più sofisticata.
Una pecca è che Vulscan fa assessment solo dei servizi, non del sistema operativo. Per questo dovete sbrigarvela da soli o, visto che il codice è open, dare una mano allo sviluppatore aggiungendo questa funzionalità.
Sicuramente ci offre un punto di partenza, per le nostre analisi. Vale sempre la solita regola: non fidatevi solamente del tool, usate anche il vostro cervello.
Enjoy it!
Vuoi aiutarmi a portare avanti il progetto Codice Insicuro con una donazione? Fantastico, allora non ti basta che premere il pulsante qui sotto.
Supporta il progetto