Vai al contenuto
Home » Come fare un vulnerability Assessment con nmap

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

$ tar xfvz nmap_nse_vulscan-2.0.tar.gz
$ sudo cp -a vulscan /usr/local/share/nmap/scripts
...
$ ls -l /usr/local/share/nmap/scripts/vulscan
total 74976
-rwxr-xr-x@ 1 thesp0nge  staff    16M Aug 14  2013 cve.csv
-rwxr-xr-x@ 1 thesp0nge  staff   1.7M Aug 14  2013 exploitdb.csv
-rwxr-xr-x@ 1 thesp0nge  staff   1.5M Aug 14  2013 openvas.csv
-rwxr-xr-x@ 1 thesp0nge  staff   6.5M Aug 14  2013 osvdb.csv
-rwxr-xr-x@ 1 thesp0nge  staff   675K Aug 14  2013 scipvuldb.csv
-rwxr-xr-x@ 1 thesp0nge  staff   4.0M Aug 14  2013 securityfocus.csv
-rwxr-xr-x@ 1 thesp0nge  staff   1.8M Aug 14  2013 securitytracker.csv
-rwxr-xr-x@ 1 thesp0nge  staff    16K Aug 14  2013 vulscan.nse
-rwxr-xr-x@ 1 thesp0nge  staff   4.4M Aug 14  2013 xforce.csv

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.

$ cd /usr/local/share/nmap/scripts/vulscan
$ curl http://www.computec.ch/projekte/vulscan/download/exploitdb.csv -o exploitdb.csv
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1848k  100 1848k    0     0   783k      0  0:00:02  0:00:02 --:--:--  783k
$ curl http://www.computec.ch/projekte/vulscan/download/scipvuldb.csv -o scipvuldb.csv
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 5080k  100 5080k    0     0  1003k      0  0:00:05  0:00:05 --:--:-- 1038k
$ curl http://www.computec.ch/projekte/vulscan/download/securityfocus.csv -o securitytracker.csv
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 4399k  100 4399k    0     0   805k      0  0:00:05  0:00:05 --:--:--  818k

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.

nmap -sV --script=vulscan/vulscan.nse localhost -oA localhost

# Nmap 6.47 scan initiated Fri Jul 24 09:11:51 2015 as: nmap -sV --script=vulscan/vulscan.nse -oA localhost localhost
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0026s latency).
Not shown: 497 closed ports, 495 filtered ports
PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 6.2 (protocol 2.0)
| vulscan: scip VulDB - http://www.scip.ch/en/?vuldb:
| [11124] OpenSSH 6.2/6.3 Post Authentication sshd process initialize mm_newkeys_from_blob privilege escalation
| [76326] OpenSSH 6.8 XSECURITY ForwardX11Trusted privilege escalation
| [12724] OpenSSH up to 6.6 Fingerprint Record Check sshconnect.c verify_host_key HostCertificate weak authentication
| [12683] OpenBSD OpenSSH up to 6.5 Configuration Handler child_set_env() Wildcard privilege escalation
| [12124] OpenSSH 6.4 J-PAKE Protocol Handler schnorr.c hash_buffer denial of service
| [7775] Red Hat Linux/Fedora 6 OpenSSH glibc error() privilege escalation
...
631/tcp  open  ipp        CUPS 2.0
| vulscan: scip VulDB - http://www.scip.ch/en/?vuldb:
| [75844] CUPS up to 2.0.2 Templating Engine cross site scripting
| [75843] CUPS up to 2.0.2 Admin Control List Localized String privilege escalation
| [69199] CUPS 2.0.1 cupsRasterReadPixels() buffer overflow
| [46101] Apple CUPS 2008.0 Symlink privilege escalation
...

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!

Tag:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.