Nessus vs OpenVAS: installazione, configurazione, caso d’uso

Nessus e OpenVAS sono due scanner di rete in grado di analizzare e riportare eventuali vulnerabilità trovate.
In altre parole, prima eseguono una ricerca per determinare quali servizi (porte) sono disponibili nel computer analizzato, per poi eseguire una serie di test (plugin) mirati alla ricerca di bug/exploit.

Inutile dire, l’estrema utilità che rivestono per gli amministratori di rete o per programmatori di servizi dedicati ad Internet o Intranet.

Un piccolo appunto.
Nessus per fini/utilizzi commerciali è a pagamento (1200 dollari all’anno). Scelta condivisibile, visto la qualità del prodotto e che nessuno lavora per niente. Il fatto che dal 2008 sia diventato un prodotto closed source, invece mi lascia un pò perplesso.
Ci sono esempi vincenti nel mercato attuale dove la politica open source aiuta e ripaga (parecchio!).
OpenVAS al contrario è gratuito e sotto GPL.

Installazione

Nessus

Due parole: semplice e rapida.

Nel sito sono disponibili i relativi pacchetti suddivisi per Sistema Operativo.

Per Ubuntu/Debian, ad esempio, basta scaricare il .deb adatto alla propria architettura (32 bit o 64 bit), ed installarlo con il comando:
sudo dpkg -i Nessus-4.2.1-ubuntu910_i386.deb

Si aggiunge un utente al servizio:
sudo /opt/nessus/sbin/nessus-adduser

Ci si registra per ottenere una chiave indispensabile per scaricare i plugin:
sudo /opt/nessus/bin/nessus-fetch –register xxxx-xxxx-xxxx-xxxx-xxxx

Si lancia il demone con il comando:
sudo /etc/init.d/nessusd start

Fatto.

OpenVAS

Qui le cose si complicano leggermente.

Attualmente, l’ultima versione disponibile di OpenVAS è la 3.0.1, che non è ancora nei repository ufficiali di Ubuntu.

Pertanto, dobbiamo installare le varie componenti compilando il codice manualmente.
Un ottima guida su come farlo la trovate qua.

Giusto un paio di suggerimenti.

Ricordatevi l’ordine dei pacchetti da installare:

  1. le librerie (openvas-libraries)
  2. la parte server (openvas-scanner 3.0.1)
  3. la parte client (openvas-client 3.0.0)

In secondo luogo invece di installarli al termine della compilazione con il comando:
sudo make install
è più comodo pacchettizarli con il comando:
sudo checkinstall.

In questo modo la loro gestione ed eventuale rimozione sarà più semplice.

Configurazione

Nessus

Per accedere a Nessus basta un semplice browser (puntandolo di norma su questo indirizzo: https://127.0.0.1:8834/).
Questo aspetto non è da sottovalutare. Avere la GUI su web mi permette di:

  • accedervi facilmente da qualsiasi postazione (poco importa dove sia o che sistema stia usando)
  • evitare di scaricare ad ogni connessione tutti i plugins installati (parliamo di svariate decine di migliaia)

Una volta autenticati, per prima cosa si devono creare delle policy.
Ovvero l’insieme delle regole che stabiliranno il tipo di scansione da effettuare e quali test di vulnerabilità eseguire.
NOTA: Nella sezione “Preferences” delle famiglie di plugin abilitati, si possono impostare svariati parametri che all’inizio svuggono.

Poi possiamo procedere alla scansione effettiva di un host.

Di ogni servizio esaminato, Nessus fornisce l’elenco dei plugin che hanno ottenuto esito positivo (ovvero che hanno trovato qualcosa di significativo) ed una descrizione accurata del problema.

La scansione può essere visionata sempre sul sito oppure esportata in vari formati (tra cui il sempreverde HTML).

OpenVAS

Per accedere a OpenVAS bisogna necessariamente utilizzare il client.
Andrebbe tutto bene, se non fosse che ad ogni connessione il client si scarica tutti i plugin in modo da lasciare all’utente la possibilità di abilitarli o meno. Questo aspetto alla lunga diventa particolarmente fastidioso.

Una volta collegati, c’è una sezione chiamata “Global settings” dove si possono impostare i parametri di scansione e plugins (un pò come le policy di Nessus).

Poi bisogna necessariamente richiamare il “Scan Assistant”, che eseguirà l’analisi dopo aver richiesto l’anagrafica del target:

Anche OpenVAS permette di esportare i report in molteplici formati (HTML, PDF, LaTEX, ASCII, etc).

Caso d’uso

NOTA.
Entrambi i programmi sono stati impostati abilitando tutti i plugins ed i vari settaggi associati.
Un esperto ovviamente li modificherebbe per effettuare dei controlli mirati.
Il mio obiettivo è di paragonare il risultato di due scansioni lanciate verso uno stesso host, avendo a disposizione tutta la cavalleria possibile.

Come ambiente di test ho preso di mira il server di un mio carissimo amico (spero non se la prenda a male).
Per questioni di rigorosa privacy, lo chiameremo con lo pseudonimo: MM

Nessus

La scansione di MM con nessus ha rilevato 14 servizi disponibili ed il tipo di OS.
In totale, l’analisi ha impiegato approssimativamente 8 minuti.

Sui 14 servizi, sono stati applicati 49 plugins, trovando:

  • 34 segnalazioni a basso rischio (ovvero solo informative)
  • 2 segnalazione a medio rischio (ahi ahi :P)

OpenVAS

Anche qui la scansione di MM ha rilevato 14 servizi disponibili ed il tipo di OS.
In totale, l’analisi ha impiegato approssimativamente 16 minuti.

In questo caso i risultati sono parecchio diversi, trovando

  • 19 segnalazioni e basso rischio (solo informative)
  • 15 segnalazioni a medio rischio
  • 9 segnalazioni ad alto rischio

Analisi sui risultati.

Tra Nessus e OpenVAS c’è una discrepanza nelle segnalazioni piuttosto marcata.
Le possibili cause che mi vengono in mente sono due:

  1. Nessus si è perso per strada qualche controllo
  2. OpenVAS è incappato in qualche falso positivo di troppo

La teoria numero 1. è difficile da sostenere.
Nessus vanta più di 34000 plugins al suo attivo. E’ ampiamente usato in ambito professionale e viene considerato il miglior analizzatore di vulnerabilità disponibile nel mercato.

La teoria numero 2. sembra prender piede.
Analizzando effettivamente le 9 segnalazioni ad alto rischio, mi sono accorto che OpenVAS, determinato che nell’host remoto è presente una particolare versione di PHP, ne ha elencato tutti gli bug associati. Ovvero, non si è preoccupato di verificare se quel tipo di bug poteva essere realmente sfruttato.
Per dare credito a questa mia tesi, ho ispezionato di persona il sito ottenendo questo:

E’ ovvio che dietro quella strana scritta, non ci può essere chissà quale articolata funzione di PHP :)

In conclusione

Non è certo possibile giudicare due prodotti, facendo solo qualche test.
Mi rendo conto, che non solo andrebbero condotti esperimenti verso diversi tipi di OS (*nix, Windows, *bsd), ma anche impostando i programmi in modo differente per far emergere qualità e difetti.

Nel mio piccolo posso dire che Nessus sembra valere tutti i 1200 dollari richiesti.
D’altro canto per questioni di principio sono portato a tifare per OpenVAS in quanto programma open source.

Happy scanning.