Détecter les vulnérabilités avec Nessus dans un réseau informatique - sécuriser son réseau
Détecter les vulnérabilités
Comme indiqué au chapitre 2, les protocoles, les applications et les systèmes d’exploitation peuvent présenter
des vulnérabilités. Dès qu’une vulnérabilité est recensée, un bulletin d’alerte est diffusé (cf. section 2.4), la disponibilité d’exploits peut alors être très rapide.
Des outils permettent de détecter les vulnérabilités, ils peuvent même être configurés pour être intrusifs, ils sont à la disposition des administrateurs de réseaux pour évaluer les risques encourus. Ces outils sont également accessibles aux personnes mal intentionnées, il est donc très important de les connaître et de les utiliser régulièrement.
La suite de ce chapitre présente le scanner de vulnérabilités Nessus ainsi que l’outil d’exploitation de vulnérabilités Metasploit.
1 - Scanner les vulnérabilités avec Nessus
Nessus est un outil qui automatise la découverte de vulnérabilités connues sur les machines d’un réseau. C’est un produit commercial diffusé par la société TENABLE Network Security. Il peut toutefois être utilisé gratuitement en utilisant une base des vulnérabilités dont la mise à jour est décalée d’une semaine. Nessus est organisé en mode client/serveur : le serveur effectue les tests tandis que les clients sont chargés de la configuration et de la présentation des résultats. Les principales fonctionnalités de Nessus sont les suivantes :
- mise à jour automatique de la base des vulnérabilités ;
- disponibilités des tests sous formes de plugins développés en NASL (Nessus Attack Scripting Language). NASL permet de développer rapidement des scripts de tests de vulnérabilités, il propose des méta-instructions pour interroger des serveurs HTTP, FTP, ... ou pour fabriquer des paquets IP, TCP,UDP ou ICMP, ... ;
- reconnaissance automatique des services attachés aux ports scannés ;
- sélection par l’utilisateur des types de détection à mettre en œuvre (avec ou sans activation des options intrusives, ...).
1.1 - Quelques exemples d’utilisation avec Nessus
Le client Nessus est disponible dans tous les environnements (Windows, Mac OS X, mode ligne sous Unix, X11), les tests suivants ont été effectués à l’aide de NessusClient (le client Nessus pour X11).
La figure 1.1 montre l’écran d’accueil de NessusClient et notamment les options générales utilisées pour les scans (safe checks ici pour ne pas risquer de corrompre une machine). La figure 1.2 montre le résultat d’une analyse sur un serveur où un service FTP très vulnérable est installé. Nessus indique la solution (mettre à jour) ainsi que les références des bulletins d’alertes qui correspondent et qu’il est nécessaire de consulter :
Figure 1: écran d’accueil de NessusClient
Figure 2: Le résultat d’un scan Nessus
Figure 3: Le choix des vulnérabilités à tester avec Nessus
1.2 Conclusion
Nessus est très largement utilisé. Il recense plus de 13000 plugins dont le code est assez simple à comprendre (cf. /opt/nessus/lib/nessus/plugins sous Linux).
Comme tous les scanners, Nessus peut engendrer des faux positifs (des alertes alors que le produit est sain), une connaissance de NASL est alors utile pour déterminer si l’alerte est justifiée. Dans ce cas il convient d’effectuer les seuls tests qui ont généré l’alerte en y pla¸cant des traces. La commande nasl permet de soumettre un test rapidement comme dans l’exemple suivant :
nasl -T /tmp/trace -t serv-1 /opt/nessus/lib/nessus/plugins/mod_auth_any.nasl
Ouf, ce serveur n’est pas vulnerable
Le code modifié de mod_auth_any.nasl est le suivant :
----------------------------------------------------------------------------
#
# The script code starts here
#
include("http_func.inc");
include("http_keepalive.inc");
include("global_settings.inc");
port = get_http_port(default:80);
if ( report_paranoia < 2 )
{
banner = get_http_banner(port port);
if ( ! banner || "Apache" >!< banner ) exit(0);
}
pages = get_kb_list(string("www/", port, "/content/auth_required"));
if(isnull(pages)) {
display ("Ouf, ce serveur n’est pas vulnerable");
exit(0);
}
pages = make_list(pages);
foreach file (pages)
{
req = http_get(item file, port port);
auth = egrep(pattern:"^Authorization", string:req);
if(auth) req = req - auth;
res = http_keepalive_send_recv(port:port, data:req);
....
----------------------------------------------------------------------------
L’utilisation de Nessus est très intéressante, les premiers scans sont en général surprenants, il faut prévoir beaucoup de temps pour les analyser. Pour cette raison, il est recommandé effectuer les analyses en classifiant les serveurs et en évitant de lancer des scans sur la globalité d’un réseau (l’administrateur serait alors noyé sous un déluge d’informations).
2 - Exploiter les vulnérabilités
Bien qu’il puisse être configuré pour être intrusif, Nessus reste surtout un outil de détection de vulnérabilités. Des outils nettement plus agressifs sont également disponibles, ils recensent et diffusent des méthodes pour exploiter les failles connues. La suite de cette section présente Metasploit et SecWatch.org qui peuvent sembler ambigus car ils vulgarisent des techniques d’intrusion. Le concept de base de ces outils est que si des pirates disposent d’outils simples pour attaquer, il est alors très important que les administrateurs de réseaux soient informés et réactifs
2.1 - Metasploit
Metasploit5 est une base de tests d’intrusions. Les exploits sont développés sous forme de modules Perl, ils partagent un même cadre comme dans l’exemple suivant
La dernière version de Metasploit comporte 164 exploits, ils sont classés par architecture, système d’exploitation et application. Les paramètres principaux d’un exploit sont la machine cible (RHOST) et le port cible (RPORT), il convient en outre de stipuler une sentence (payload) à exécuter si la tentative d’intrusion est réussie. Les sentences sont développées indépendamment des exploits, il existe donc, en général, plusieurs sentences pour un même exploit. Parmi les sentences disponibles pour un exploit en environnement Linux, on peut citer les suivantes :
- exécution d’un interpréteur de commandes ;
- ajout d’un utilisateur ;
- exécution d’une commande ;
- démarrage d’un tunnel SSH (reverse shell ).
Metasploit propose plusieurs interfaces d’utilisation : msfconsole et msfcli en mode lignes de commandes et msfweb qui est adaptée à l’utilisation d’un navigateur Web. Les 3 exemples des figures 4, 5 et 6 ont été réalisés avec msfweb, ils montrent respectivement la sélection des exploits de l’environnement Solaris (figure 5), l’introduction des paramètres d’un exploit (figure 6) et la preuve de l’intrusion (figure 7). L’exploit choisi ici à titre d’exemple (Arbitrary Read File) ne propose pas de choix de sentence car il ne s’agit pas d’une intrusion complète, mais simplement d’un accès illicite à des fichiers protégés (/etc/shadow ici).
Metasploit permet d’ajouter de développer de nouveaux exploits, pour plus d’informations consulter le contenu du répertoire sdk d’une installation.
2.2. Exploiter les vulnérabilités
Figure 4: Le choix des exploits avec msfweb
Figure 5: Les paramètres de l’exploit solaris_kcms_readfile
Figure 6: Le résultat de l’exploit solaris_kcms_readfile
2.2.1 SecWatch.org
http://www.secwatch.org propose une archive des vulnérabilités et des exploits connus (cf. figure 7).
Fig. 7 – Les exploits du mois de janvier 2007
3 - Conclusion
Les outils présentés dans ce chapitre sont à la disposition de tous, il est indispensable que les administrateurs de réseaux les connaissent. L’utilisation régulière de Nessus ne dispense pas de faire le tour des intrusions proposées par Metasploit ou SecWatch.org : la faille Arbitrary Read File présentée en exemple n’a pas été détectée. Comme précisé en section 2.4, il est nécessaire de consulter journellement les avis et alertes diffusés par le CERTA.
------------------------------------------------------------------------------------------------------
>>> CHAPITRE V : Détecter les attaques
------------------------------------------------------------------------------------------------------
>>> CHAPITRE V : Détecter les attaques
Article plus récent Article plus ancien