# Nessus (logiciel)

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 fautes de configuration (relais de messagerie ouvert par exemple)
* les patchs de sécurité non appliqués, que les failles corrigées soient exploitables ou non dans la configuration testée
* 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 (de) pour attaquer les mots de passe à l'aide d'un dictionnaire.
* 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

## Architecture et fonctionnement

Nessus détecte les machines vivantes sur un réseau, balaie les ports ouverts, identifie les services actifs, leur version, puis tente diverses attaques.
Nessus se divise en deux parties : nessusd qui est un daemon (service) exécutant les requêtes ainsi que la communication avec la cible, et nessus, une application cliente qui récupère les données et affiche le résultat.
Ce découpage est classique, le daemon tournant avec des privilèges élevés (root) alors que l'interface graphique, plus complexe et donc vulnérable, tourne sous l'identité d'un utilisateur non privilégié. Les tests sont joués par des plugins ; quelques-uns sont en C compilé, mais la majorité sont écrits dans le langage de script NASL (Nessus Attack Scripting Language).
La séquence des opérations est la suivante :
* détection des machines vivantes sur le réseau par ping_host.nasl
* « scan » des ports avec un des quatre analyseurs de ports internes, ou un scanner externe amap ou nmap, ce qui est déconseillé pour des raisons de performance.
* récupération d'informations
** type et version des divers services
** Connexion (SSH, Telnet ou rsh) pour récupérer la liste des packages installés
* attaques simples, peu agressives. Par exemple, directory traversal, test de relais de messagerie ouverts, etc.
* attaques susceptibles d'être destructrices
* dénis de service (contre les logiciels visés)
* dénis de service contre la machine ou les équipements réseaux intermédiaires.
Les dernières catégories de tests, plus agressives, peuvent avoir des conséquences désastreuses sur la disponibilité du système (crash de la machine visée, voire des équipements réseaux) et peuvent être désactivées dans le mode safe checks.
Le logiciel client standard peut exporter les données sous divers formats (XML, HTML, LaTeX). Outre les failles, Nessus présente également diverses informations utiles à un auditeur comme la version des services ou du système d'exploitation.

## Types de tests

Nessus étant un scanner de sécurité réseau (par opposition aux outils locaux comme le grand ancêtre COPS), la présentation des failles a été longtemps biaisée en faveur des failles exploitables à distance. Toutefois, Nessus sait détecter les failles exploitables localement :
* soit en identifiant un numéro de version dans une bannière, mais ce procédé est limité à une classe de failles particulière : les failles de services réseau exploitables seulement localement.
* soit en récupérant la liste des logiciels ou paquets installés sur la machine testée et en la comparant aux patchs publiés par les éditeurs. Ces tests locaux ont été introduits à partir de Nessus 2.2.

## Licence

Nessus est disponible sous licence GPL jusqu'à la version 2. Depuis la version 3, il est distribué sous licence propriétaire, mais toujours gratuit pour utilisation personnelle (Home Feed). La version 2 est maintenue. Il existe aussi un fork de Nessus 2 toujours sous licence GPL qui s'appelle OpenVAS.