Nessus : Le scanner de vulnérabilités


Nessus est un scan de vulnérabilité, il est utilisé pour scanner tous les ordinateurs d'un réseau et énumérer les failles de sécurité trouvées sur chacun des ordinateurs. Ceci afin bien sûr de corriger les failles.

L'installation

Il y a de grandes chances que nessus soit disponible sous forme de package pour votre distribution.
Nessu a aussi besoin de nmap et OpenSSL
Si Nessus n'est pas disponible sous forme de package, ou si vous désirez utiliser la toute dernière version de nessu, vous pouvez télécharger les sources à partir de ce lien.

Il suffit ensuite de détarer, un petit coup de ./configure suivi de make et make install :)

Utilisation & Configuration

Nessus fonctionne en client / serveur. Vous pouvez bien entendu lancer la partie serveur et cliente sur la même machine.
Sachez qu'il existe aussi un client pour Windows. Vous devez donc vous logguer sur le serveur pour utiliser nessus.

Avant de démarrer la partie serveur et de vous connecter, vous devez créer un utilisateur à partir de la commande nessus-adduser
nessus vous posera des questions avant de créer un user :

Add a new nessusd user
----------------------


Login : Malekal_morte
Authentication (pass/cert) [pass] :
Login password :
Login password (again) :

User rules
----------
nessusd has a rules system which allows you to restrict the hosts
that Malekal_morte has the right to test. For instance, you may want
him to be able to scan his own host only.

Please see the nessus-adduser(8) man page for the rules syntax

Enter the rules for this user, and hit ctrl-D once you are done :
(the user can have an empty rules set)



Login             : Malekal_morte
Password          : ***********
DN                :
Rules             :

Is that ok ? (y/n) [y] y

Dans cette exemple, aucune règle n'est appliquée (la ligne Rules est vide), vous avez la possibilité d'appliquer des règles à un user pour l'interdire de scanner certaines machines du réseau, pour que l'utilisateur n'ait que le droit de scanner sa machine etc..
Ici l'utilisateur aura le droit de scanner tout le réseau.

L'utilisateur s'authentifiera à l'aide d'un mot de passe (ligne avec [pass]), si vous spécifiez [cert] l'authenfication se fera à l'aide d'un certificat ssl. Dans ce cas là, vous devrez créer un certificat avec la commande : nessus-mkcert et répondre aux diverses questions.

L'utilisateur est alors ajouté.

La partie serveur se lance avec la commande : nessusd -D
Vous devez ensuite démarrer le client nessus avec la commande : nessus
(Le fichier de configuration du serveur sur une debian est /etc/nessus/nessusd.conf)

La Partie cliente

Le premier onglet permet de se loguer sur le serveur. Vous devez donc entrer l'utilisateur ainsi que son mot de passe créé dans la partie précédente.

Capture d'écran de la partie login du client nessus

La partie plugin vous permet de choisir les plugins qui seront utilisés par nessus lors du scan. Ces plugins sont en fait les tests qui seront réalisés afin de vérifier si la machine à telle ou telle vulnérabilité.
Certains plugins peuvent faire planter la machine testée, ces plugins ont une icône avec un triangle.

Capture d'écran de la partie plugins nessus

Cet onglet vous permet de définir le type de scan utilisé par nessus (par nmap, SYN scan etc.. ).
Vous pouvez aussi définir l'intervalle de ports qui seront scannés, par ex: 1-8000 soit donc de 1 à 8000, une liste de ports séparés par des virgules, par ex: 21,22,25,80,111 ou scanner seulement les ports utilisés par des services connus.

Capture d'écran des options de scan de nessus

Enfin cet onglet définit la ou les machines qui seront scannées.
Vous pouvez séparer les machines par des virgules, définir une classe par les netmask ou transférer une zone DNS à partir du bouton "perform a DNS zone transfer" à partir du serveur DNS.
Capture d'écran des options de scan de nessus

Pour démarrer le scan, cliquez sur le bouton en bas à gauche "Start the scan". A la fin du scan, vous pouvez visualiser le résultat machine par machine. Vous avez ensuite la possibilité d'exporter le rapport en divers formats notamment html afin de le publier sur un serveur WEB.

voici un exemple de rapport: Nessus Scan Report
Nessus Scan Report
This report gives details on hosts that were tested and issues that were found. Please follow the recommended steps and procedures to eradicate these threats.

Scan Details
Hosts which were alive and responding during test 4
Number of security holes found 0
Number of security warnings found 1


Host List
Host(s) Possible Issue
212.xx.xx.xx No noticeable information found
212.xx.xx.xx Security warning(s) found
212.xx.xx.xx Security note(s) found
212.xx.xx.xx No noticeable information found


Analysis of Host
Address of Host Port/Service Issue regarding Port
212.xx.xx.xx telnet (23/tcp) No Information


Security Issues and Fixes: 212.xx.xx.xx
Type Port Issue and Fix


Analysis of Host
Address of Host Port/Service Issue regarding Port
212.xx.xx.xx ftp (21/tcp) Security notes found
212.xx.xx.xx ssh (22/tcp) Security notes found
212.xx.xx.xx smtp (25/tcp) Security notes found
212.xx.xx.xx www (80/tcp) Security warning(s) found
212.xx.xx.xx https (443/tcp) Security notes found
212.xx.xx.xx pop3 (110/tcp) No Information


Security Issues and Fixes: 212.xx.xx.xx
Type Port Issue and Fix
Informational ftp (21/tcp) An FTP server is running on this port.
Here is its banner :
220 (vsFTPd 2.0.3)
Nessus ID : 10330
Informational ftp (21/tcp) Remote FTP server banner :
220 (vsFTPd 2.0.3)

Nessus ID : 10092
Informational ssh (22/tcp) An ssh server is running on this port
Nessus ID : 10330
Informational ssh (22/tcp) Remote SSH version : SSH-2.0-OpenSSH_3.8.1p1 Debian-8.sarge.4

Remote SSH supported authentication : publickey,password,keyboard-interactive


Nessus ID : 10267
Informational smtp (25/tcp) An SMTP server is running on this port
Here is its banner :
220 mail-ext.xxxxxx.com ESMTP
Nessus ID : 10330
Informational smtp (25/tcp) Remote SMTP server banner :
220 mail-ext.xxxxxx.com ESMTP



This is probably: Qmail
Nessus ID : 10263
Informational smtp (25/tcp) This server could be fingerprinted as being Qmail 1.0.3
Nessus ID : 11421
Warning www (80/tcp) We could upload the file '/puttest1.html' onto your web server
This allows an attacker to run arbitrary code on your server, or set a trojan horse
Solution : disable this method
Risk factor : High
BID : 12141
Nessus ID : 10498
Informational www (80/tcp) A web server is running on this port
Nessus ID : 10330
Informational www (80/tcp) The remote web server type is :

Apache Tomcat/4.1.31 (HTTP/1.1 Connector)

and the 'ServerTokens' directive is ProductOnly
Apache does not permit to hide the server type.

Nessus ID : 10107
Informational www (80/tcp) An information leak occurs on Apache based web servers
whenever the UserDir module is enabled. The vulnerability allows an external
attacker to enumerate existing accounts by requesting access to their home
directory and monitoring the response.


Solution:
1) Disable this feature by changing 'UserDir public_html' (or whatever) to
'UserDir disabled'.

Or

2) Use a RedirectMatch rewrite rule under Apache -- this works even if there
is no such entry in the password file, e.g.:
RedirectMatch ^/~(.*)$ http://my-target-webserver.somewhere.org/$1

Or

3) Add into httpd.conf:
ErrorDocument 404 http://localhost/sample.html
ErrorDocument 403 http://localhost/sample.html
(NOTE: You need to use a FQDN inside the URL for it to work properly).

Additional Information:
http://www.securiteam.com/unixfocus/5WP0C1F5FI.html


Risk factor : Low
CVE : CAN-2001-1013
BID : 3335
Nessus ID : 10766
Informational www (80/tcp) There might be a caching proxy on the way to this web server
Nessus ID : 11040
Informational https (443/tcp) A SSLv2 server answered on this port

Nessus ID : 10330
Informational https (443/tcp) A web server is running on this port through SSL
Nessus ID : 10330
Informational https (443/tcp) The remote web server type is :

Apache-Coyote/1.1

and the 'ServerTokens' directive is ProductOnly
Apache does not permit to hide the server type.

Nessus ID : 10107
Informational https (443/tcp) An information leak occurs on Apache based web servers
whenever the UserDir module is enabled. The vulnerability allows an external
attacker to enumerate existing accounts by requesting access to their home
directory and monitoring the response.


Solution:
1) Disable this feature by changing 'UserDir public_html' (or whatever) to
'UserDir disabled'.

Or

2) Use a RedirectMatch rewrite rule under Apache -- this works even if there
is no such entry in the password file, e.g.:
RedirectMatch ^/~(.*)$ http://my-target-webserver.somewhere.org/$1

Or

3) Add into httpd.conf:
ErrorDocument 404 http://localhost/sample.html
ErrorDocument 403 http://localhost/sample.html
(NOTE: You need to use a FQDN inside the URL for it to work properly).

Additional Information:
http://www.securiteam.com/unixfocus/5WP0C1F5FI.html


Risk factor : Low
CVE : CAN-2001-1013
BID : 3335
Nessus ID : 10766
Informational https (443/tcp) There might be a caching proxy on the way to this web server
Nessus ID : 11040
Informational https (443/tcp) Here is the SSLv2 server certificate:
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
b6:a8:bf:04:53:fc:52:90
Signature Algorithm: md5WithRSAEncryption
Issuer: C=FR, ST=92, L=COLOMBES, O=AGELID, CN=service.asp.xxxxxx.com/emailAddress=webmaster@xxxxxx.com
Validity
Not Before: Jun 14 10:57:21 2005 GMT
Not After : Jun 12 10:57:21 2015 GMT
Subject: C=FR, ST=92, L=COLOMBES, O=AGELID, CN=service.asp.xxxxxx.com/emailAddress=webmaster@xxxxxx.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:c1:bd:98:ab:43:e2:16:51:20:e0:76:84:16:20:
30:27:2b:22:06:d7:06:7a:97:2d:14:8b:71:81:b6:
9d:b7:a3:96:42:be:03:82:ba:e8:83:bf:90:6b:9d:
a5:20:5c:70:a3:67:0e:51:ac:52:ef:f7:a3:81:e1:
f8:5b:09:29:fe:9d:a7:39:97:2b:96:55:08:38:f7:
39:1d:0e:2d:0a:e5:37:b1:29:43:1d:00:d7:7f:a0:
28:d8:11:5d:b9:6b:31:f6:9e:b9:d7:cd:9c:b3:c8:
64:b2:a2:84:99:0a:86:c6:32:b3:2c:77:1a:a9:c2:
c3:14:37:8c:99:64:74:81:59
Exponent: 65537 (0x10001)
Signature Algorithm: md5WithRSAEncryption
53:73:3c:44:6d:b0:3e:d1:24:12:16:66:57:f3:d0:d6:51:38:
14:f3:f2:ac:ab:40:a7:4b:ea:37:ee:5a:95:b2:78:02:f8:f9:
c1:5f:89:bd:d8:5d:cf:1c:65:59:4b:fe:52:43:1d:e6:a7:06:
86:01:83:dd:54:f3:e8:5c:3a:9f:3d:12:45:e7:45:e7:ee:73:
e3:23:1b:c9:41:f3:75:5e:eb:76:d1:fa:05:97:16:33:a4:a2:
1d:bb:d0:51:54:f7:9d:03:29:16:a3:de:a0:64:03:e3:ba:12:
23:01:34:a8:f3:03:14:ad:06:16:db:33:ec:90:a5:cf:5e:45:
10:ea
Here is the list of available SSLv2 ciphers:
RC4-MD5
EXP-RC4-MD5
RC2-CBC-MD5
EXP-RC2-CBC-MD5
DES-CBC-MD5
DES-CBC3-MD5
RC4-64-MD5
The SSLv2 server offers 5 strong ciphers, but also
0 medium strength and 2 weak "export class" ciphers.
The weak/medium ciphers may be chosen by an export-grade
or badly configured client software. They only offer a
limited protection against a brute force attack

Solution: disable those ciphers and upgrade your client
software if necessary.
See http://support.microsoft.com/default.aspx?scid=kb;en-us;216482
or http://httpd.apache.org/docs-2.0/mod/mod_ssl.html#sslciphersuite
This SSLv2 server also accepts SSLv3 connections.
This SSLv2 server also accepts TLSv1 connections.

Nessus ID : 10863


Analysis of Host
Address of Host Port/Service Issue regarding Port
212.xx.xx.xx irc (6668/tcp) Security notes found
212.xx.xx.xx ssh (22/tcp) No Information
212.xx.xx.xx domain (53/tcp) No Information
212.xx.xx.xx imap2 (143/tcp) No Information
212.xx.xx.xx irc (6667/tcp) No Information
212.xx.xx.xx domain (53/udp) Security notes found


Security Issues and Fixes: 212.xx.xx.xx
Type Port Issue and Fix
Informational irc (6668/tcp) An unknown server is running on this port.
If you know what it is, please send this banner to the Nessus team:
00: 4e 4f 54 49 43 45 20 41 55 54 48 20 3a 2a 2a 2a NOTICE AUTH :***
10: 20 4c 6f 6f 6b 69 6e 67 20 75 70 20 79 6f 75 72 Looking up your
20: 20 68 6f 73 74 6e 61 6d 65 2e 2e 2e 0d 0a hostname.....


Nessus ID : 11154
Informational domain (53/udp) BIND 'NAMED' is an open-source DNS server from ISC.org.
Many proprietary DNS servers are based on BIND source code.

The BIND based NAMED servers (or DNS servers) allow remote users
to query for version and type information. The query of the CHAOS
TXT record 'version.bind', will typically prompt the server to send
the information back to the querying source.

The remote bind version is : 9.2.4

Solution :
Using the 'version' directive in the 'options' section will block
the 'version.bind' query, but it will not log such attempts.

Nessus ID : 10028


Analysis of Host
Address of Host Port/Service Issue regarding Port
212.xx.xx.xx pptp (1723/tcp) No Information


Security Issues and Fixes: 212.xx.xx.xx
Type Port Issue and Fix

This file was generated by Nessus, the open-sourced security scanner.