Nessus : l’outil d’audit réseau
description
Transcript of Nessus : l’outil d’audit réseau
Nessus : l’outil d’audit de services réseau
Description :
Nessus est un outil de sécurité informatique. Il signale les faiblesses potentielles ou avérées
sur les machines testées. Ceci inclut entre autres :
Les services vulnérables à des attaques permettant :
la prise de contrôle de la machine
l'accès à des informations sensibles (lecture de fichiers confidentiels par
exemple)
des dénis de service...
Les services jugés faibles (on suggère par exemple de remplacer Telnet par SSH)
Les dénis de service contre la pile TCP/IP
Les mots de passe par défaut, quelques mots de passe communs, et l'absence de mots
de passe sur certains comptes systèmes. Nessus peut aussi appeler le programme
externe Hydra pour attaquer les mots de passe à l'aide d'un dictionnaire.
Nessus est également capable de :
détecter une version d'un service, sans utiliser la bannière d'accueil que l'on peut
spécifier pour un service, mais en étudiant son comportement.
Principe de Fonctionnement :
Nessus détecte les machines vivantes sur un réseau, balaie les ports ouverts, identifie les
services actifs, leurs versions, puis tente diverses attaques.
Nessus utilise des logiciels tiers s’ils sont disponibles :
Le scanner de port Nmap qui fournit des fonctionnalités avancées dans le domaine du
balayage de port ;
Le logiciel Nitko ou Whisker qui permet de faire des tests et des attaques spécifiques
sur les serveurs Web
enfin l’outil Hydra cité plus haut qui fournit des attaques brute-force pour des
services tels que Telnet, IMAP …
Le fait que Nessus utilise des logiciels tiers tient du principe qu’il n’est pas nécessaire
d’implémenter de nouveau ce qui existe déjà et répond parfaitement aux besoins.
Nessus est basé sur une architecture client / serveur qui permet de multiples
Configurations ; il se divise donc en deux parties :
nessusd qui est un daemon exécutant les requêtes ainsi que la communication avec la
cible, et
nessus, une application client qui récupère les données et affiche le résultat.
Le démon de Nessus est placé à l’extérieur du réseau de l’entreprise sur Internet (WAN) afin
d’effectuer des séries de tests externes.
Le client lui est à l’intérieur du réseau. Il permet de contrôler le serveur et de configurer le
serveur qui effectue l’attaque proprement dite de la machine cible. Il est ainsi possible d’avoir
une vision claire des services effectivement vulnérables à partir d’Internet.
Nessus intègre d’importantes bases de connaissances relatives aux services proposés sur
divers systèmes d’exploitation, aux failles de vulnérabilité et aux résolutions des problèmes
crées par la présence des failles de vulnérabilité. La base de données a l’avantage d’être
largement évolutive grâce au système de plug-in.
En effet, chaque test de sécurité se présente sous forme d’un plug-in extérieur. Les plug-in
correspondant aux failles de sécurité les plus récentes sont disponibles sur Internet. Nous en
dénombrons plus de 2000 à ce jour. Ces plug-in, sur un système d’exploitation de type
Linux, sont placés dans le répertoire dédié /usr/lib/nessus/plugin/. Dans l’interface cliente, il
est possible de choisir les plug-in que nous voulons prendre en compte.
Le principe de fonctionnement de Nessus se résume comme suit :
1. Le client Nessus se connecte et s’identifie.
2. Le client et le serveur s’échangent leurs certificats afin de crypter les données et que
le serveur authentifie le client. Les certificats sont des fichiers chiffrés qui permettent
d’authentifier les différents intervenants lors de transactions sur Internet.
3. Le serveur informe le client des différents tests et options disponibles.
4. Le client envoie les différents paramétrages au serveur.
5. Le serveur Nessus effectue un balayage de la cible à l’aide des différents scanners de
port à sa disposition. Le scanner de port employé peut être Nmap.
6. La réalisation du scan.
7. Les informations récoltées lors du scan sont enregistrées dans la base de données.
8. Le serveur Nessus effectue les tests correspondant aux données recueillies lors du
balayage des ports. Par exemple si le port 23 est ouvert, les tests correspondant à
Telnet sont lancés.
9. Les plug-in de tests analysent la cible en se reposant sur la base de données.
10. Les plug-in enregistrent les informations relatives aux tests dans la base de données.
11. Toutes les informations sont envoyées au serveur Nessus lors de l’exécution des tests.
12. Les informations récoltées ainsi que leurs analyses sont mises à la disposition de
l’utilisateur.
Nous pouvons obtenir la représentation schématique suivante :
Mise en œuvre :
L’utilisation de Nessus peut se faire sur différents systèmes d’exploitation tel que : les
différentes versions de Windows et de nombreuses déclinaison d’Unix telles que Linux,
FreeBSD, etc.
Ici nous utilisons une distribution LINUX : DEBIAN
I. Details de l’Installation :
Installation de la partie serveur sur la machine distante :
On procède à une installation en ligne de commande :
$ sudo apt-get install nessusd
Congratulations. Your server certificate was properly created.
/etc/nessus/nessusd.conf updated
The following files were created :
. Certification authority :
Certificate = /var/lib/nessus/CA/cacert.pem
Private key = /var/lib/nessus/private/CA/cakey.pem
. Nessus Server :
Certificate = /var/lib/nessus/CA/servercert.pem
Private key = /var/lib/nessus/private/CA/serverkey.pem
#
Ensuite on crée un compte nessus :
$ sudo nessus-adduser
Using /var/tmp as a temporary file holder
Add a new nessusd user
----------------------
Login : l-laforet
Authentication (pass/cert) [pass] :
Login password :
Login password (again) :
User rules
----------
nessusd has a rules system which allows you to restrict the hosts
that l-laforet 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)
192.168.1.0/24
default deny
Login : test
Password : ******
DN :
Rules :
192.168.1.0/24
default deny
Is that ok ? (y/n) [y]
user added.
#
Ici, nous avons spécifié que notre utilisateur l-laforet est seulement en
mesure d'accéder au réseau 192.168.1.0/24.
Installation du client :
# apt-get install nessus
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
libatk1.0-0 libgd-gif1 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common
libnessus2 libpango1.0-0 libpango1.0-common libtiff4
Suggested packages:
ttf-kochi-gothic ttf-kochi-mincho ttf-thryomanes ttf-baekmuk
ttf-arphic-gbsn00lp ttf-arphic-bsmi00lp ttf-arphic-gkai00mp
ttf-arphic-bkai00mp nessusd
Recommended packages:
libatk1.0-data hicolor-icon-theme x-ttcidfont-conf
The following NEW packages will be installed:
libatk1.0-0 libgd-gif1 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common
libnessus2 libpango1.0-0 libpango1.0-common libtiff4 nessus
0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
Need to get 6323kB of archives.
After unpacking 18.8MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
II. Configuration :
1. Configuration du serveur :
Pour vérifier la configuration, par défaut ici, du serveur nessusd, nous pouvons utiliser la
commande nessusd -s :
$ sudo nessusd -s
plugins_folder = /var/lib/nessus/plugins
email = root
max_hosts = 255
max_checks = 15
logfile = /var/log/nessus/nessusd.messages
log_whole_attack = yes
log_plugins_name_at_load = no
dumpfile = /var/lib/nessus/nessusd.dump
rules = /etc/nessus/nessusd.rules
users = /etc/nessus/nessusd.users
per_user_base = /var/lib/nessus/users
cgi_path = /cgi-bin
optimize_test = yes
checks_read_timeout = 15
delay_between_tests = 1
test_file = /etc/passwd
port_range = 1-15000
ping_hosts = yes
reverse_lookup = no
host_expansion = dns;ip
subnet_class = C
scan_level = normal
outside_firewall = no
plugin_upload = no
language = english
peks_username = nessusd
peks_keylen = 1024
peks_keyfile = /etc/nessus/nessusd.private-keys
peks_usrkeys = /etc/nessus/nessusd.user-keys
peks_pwdfail = 5
track_iothreads = yes
cookie_logpipe = /etc/nessus/nessusd.logpipe
cookie_logpipe_suptmo = 2
cert_file = /var/lib/nessus/CA/servercert.pem
key_file = /var/lib/nessus/private/CA/serverkey.pem
ca_file = /var/lib/nessus/CA/cacert.pem
config_file = /etc/nessus/nessusd.conf
$
La configuration du serveur s'effectue par le fichier /etc/nessus/nessusd.conf.
Nous lançons le serveur par la commande suivante :
$ sudo nessusd -D
Loading the plugins... 1530 (out of 2063)
------------------------------------------------------------
You are running a version of Nessus which is not configured
to receive a full plugin feed. As a result, your security
audits might produce incomplete results.
To obtain a full plugin feed, you need to register your
Nessus scanner at the following URL :
http://www.nessus.org/register/
------------------------------------------------------------
All plugins loaded
$
Ici le chargement des plugins s'effectue en premier. Ces plugins chargés permettront au client
de sélectionner les différents types d'attaques.
On regarde si le processus est bien lancé :
$ ps aux | grep nessus root 4864 0.0 1.2 7324 4704 ? Ss 21:49 0:00 \
nessusd: waiting for incoming connections
$
2. Configuration des tests de sécurité :
On lance l'application sur la machine cliente par la commande suivante:
$ sudo nessus
On obtient alors l’interface ci-dessous :
Nessusd host : permet de définir le serveur Nessus et de s’y connecter
Plug-ins : il est possible ici de choisir la liste des plug-in que nous
exécuterons lors de la détection des vulnérabilités.
Prefs : cet onglet permet d’indiquer des informations complémentaires à
Nessus, que des pirates sont susceptibles d’avoir en leur possession. Cela peut
être par exemple le nom et le mot de passe correspondant à un compte de type
FTP, SMB, IMAP … etc. La connaissance de ces informations
complémentaires peut permettre à Nessus de détecter davantage de
vulnérabilités et rendre ainsi le scan plus complet.
Scan options : c’est ici que nous indiquons la plage de ports que nous
souhaitons scanner. Il est également possible d’activer l’option « safe checks »
pour éviter de faire tomber le serveur ciblé. Il est également possible d’activer
ou de désactiver de nombreuses autres options : le nombre d’ordinateurs à
tester en même temps, choix des scanners de port utilisé …
Target selection : nous effectuons le choix de la ou les machines visées. Nous
pouvons spécifier une adresse IP ou une plage d’adresse IP. La notion CIDR
est supportée.
User : permet de spécifier des règles pour, par exemple, exclure une adresse
IP sur laquelle nous ne désirons pas effectuer de tests.
Configuration des plugins : Il est possible de choisir quels plug-in on désire lancer
au moyen de cet écran. En cliquant sur le nom d’un plug-in, une fenêtre expliquant ce
que fait le plug-in s’affiche.
Configuration des options de scan : Ici, nous spécifions les options générales du
scan. Cet onglet permet d'ajuster la plage des ports que l'on souhaite scanner. C'est
aussi ici que nous positionnons l'option Safe check, qui, comme son nom l'indique,
permet de limiter les risques lors du scan.
Cette option proposée par Nessus permet de limiter les risques lors d'un scan. En effet,
le principe d'un scan est d'interagir avec les équipements du réseau. Cependant,
certains des types de scan utilisés ne respectent par les RFC. Cela a pour effet de
rendre instable certains de ces équipements. Il est donc recommandé de limiter les
types de scans sur des équipements en production.
Configuration de la portée des tests : Il est possible d’indiquer la cible de diverses
façons. On peut utiliser :
une simple adresse IP
une plage d’adresse IP. Ici nous prenons la classe C entière.
Activation de la base de connaissance : Grand intérêt de ce logiciel, la base de
connaissance permet de rendre intelligente l'application. Lors d'un scan d'un réseau
entier, ce dernier, rencontrant éléments ou services identiques, ne va perdre son temps
à reproduire ses tests. Cette base contenant les ports et services ouvert peut également
être sauvegardée, pour effectuer un comparatif par exemple avec un futur scan d'une
même partie d'un réseau.
Autres configurations :
D’autre configurations sont disponibles, notamment celles relatives aux règles (Prefs)
permettant aux utilisateurs de limiter leurs tests. Il est possible par exemple d’exclure une
adresse IP que l’on ne veut pas tester.
III. Test :
Une fois toutes les configurations effectuées on peut alors procéder aux différents tests à
l’aide de la touche Start the scan visible sur l’interface ci-dessus.
Après exécutions des tests on obtient les résultats dans l’interface ci-dessous :
Interprétation des tests :
Le rapport généré par Nessus permet de sélectionner chaque machine du réseau détécté. Pour
chaque machine, il fait remonter les services à l'écoute sur le réseau. Pour chaque service il
effectue un rapport sur la sécurité mise en place. Il fournit des conseils forts utiles, et, fait
prendre conscience d'un réel risque en terme de sécurité s’il y en a lors du déploiement d'un
service quelconque.
En résumé on a :
Une première zone permet de sélectionner un sous réseau qui vient d’être
testé ; ici on a un seul sous-réseau.
Une seconde zone permet de choisir un ordinateur ou un serveur au moyen de
son adresse IP.
Une troisième zone indique les ports qui ont été découverts avec une indication
du niveau de gravité maximale associé à chaque port.
Exemple de résultats pour un port:
Warning found on port echo (7/tcp)
The 'echo' port is open. This port is
not of any use nowadays, and may be a source of problems,
since it can be used along with other ports to perform a denial
of service. You should really disable this service.
Risk factor : Low
Solution : comment out 'echo' in /etc/inetd.conf
CVE : CVE-1999-0103
Nessus ID : 10061
Information found on port echo (7/tcp)
An echo server is running on this port
Nessus ID : 10330
On remarque que Nessus retourne le détail de ses recherches, on peut lister tous les ports et
ainsi voir quel est le trou de sécurité. Dans l’exemple on est devant un risque de Dos, en plus
comble du luxe il nous propose une « solution » ce qui s’avère très pratique.
Il est à noter que les informations ainsi obtenues sont exportables sous divers formats. Nous
pouvons citer par exemple les formats : ASCII text, LaTeX, HTML ou « Spiffy » HTML,
c’est-à-dire des documents HTML qui comportent des graphiques et des graphes.
Conclusion :
En résumé nous pouvons dire que:
Nessus est un analyseur de sécurité de machine et réseau. Il permet de détecter un
grand nombre de vulnérabilités sur les systèmes les plus connus. Nessus est basé sur le
scanner Nmap, dont il intègre l'ensemble des fonctionnalités. Il y ajoute cependant un
grand nombre de connaissances.
Sa particularité première est qu'il fonctionne en mode client / serveur. Le client permet
de configurer le serveur qui effectue une attaque de la machine visée.
Nessus donne trois types d’indications qui sont les suivantes :
Trou de sécurité : indique les failles de vulnérabilités présentent
Alerte de sécurité : indique des failles qui peuvent devenir des trous de sécurité
Message de sécurité : donne la possibilité à un attaquant de fournir des
informations sur le poste.
Depuis la version 3, le code est propriétaire mais le logiciel reste gratuit sauf pour une
exploitation en entreprise (1200 dollars par an). Un fork de Nessus 2, OpenVAS, est
lui disponible sous licence GPL (libre).
Nessus est adapté pour les entreprises de petite et moyenne taille (entreprises de moins
de 1000 machines). Les limites de son utilisation apparaissent avec des réseaux de
tailles importantes. En effet, dans le cas des tests réalisés sur un petit réseau de trois
postes qui ne propose pas énormément de services, les rapports d’audit atteignaient
jusqu'à 16 pages. Dans un véritable réseau d’entreprise, où le nombre de machines
présentes sur le réseau peut dépasser le millier, la question de l’exploitation
convenable des résultats obtenus se pose. Des rapports volumineux peuvent vite
devenir inexploitables.
Documentation :
http://www.nessus.org.