Phase de scan de vulnérabilités
Pour faire suite aux étapes de récolte d'informations et de mise en oeuvre des exploits, il est nécessaire de parcourir l’ensemble des serveurs du périmètre du pentesting afin d’en déterminer les failles potentielles. Il s’agit de la phase d’évaluation ou de scan de vulnérabilités. Deux outils vont aider à mettre en place une véritable stratégie, permettant de scanner les machines à la recherche de vulnérabilités potentielles:
- Nessus
- OpenVAS
REMARQUE : Nessus est devenu commercial au fil du temps. C’est pourquoi il existe un fork, appelé OpenVAS offrant des services complets, en lieu et place de ceux, devenus payant, pour Nessus.
A. Utilisation de Nessus
Si l’on souhaite installer Nessus sur une machine Kali Linux (donc, hébergée sur une distribution Linux Debian), on va donc télécharger le package depuis le site www.tenable.com. Cela permet alors de récupérer un code d’enregistrement qui va nous permettre de tester la version professionnelle pendant 7 jours (c’est-à-dire sans aucune limitation) :
Ensuite, on peut aller sur la page www.tenable.com/downloads/nessus, afin de pouvoir télécharger le package nécessaire à la mise en place sur notre plateforme Kali Linux :
Après avoir validé l’agrément de licence, on peut télécharger le package et le rapatrier sur notre machine Kali Linux en vue de l’installer :
# dpkg –i "Nessus-8.2.2-debian6_amd64.deb"
Au final, lorsque le package est installé, on dispose de l’affichage ci-dessous. Ce qu’il faut en retenir, c’est que l’interface web est alors accessible depuis l’url https://<Server>:8834/:
Le logiciel est alors installé sur le répertoire /opt/nessus. On peut alors activer le service Nessus en exécutant la commande suivant :
# systemctl start nessusd
Bien évidemment, le code d’enregistrement va alors nous être réclamé. On peut le saisir via la commande ci-dessous :
# /opt/nessus/bin/nessus-fetch –register XXXX-XXXX-XXXX-XXXX-XXXX
REMARQUE: on peut également télécharger le plugin le plus récent depuis le site http://plugins.nessus.org/. On récupère alors un fichier all-2.0.tar.gz que l’on peut placer sur notre machine Kali Linux. Ensuite, on place le fichier de license (appelé nessus.license) dans le répertoire /opt/nessus/var/nessus, et on peut activer l’enregistrement via la commande suivante :
# /opt/nessus/sbin/nessuscli fetch --register-offline nessus.license
Théoriquement, si tout se passe bien, on devrait alors voir apparaître une confirmation d’enregistrement de l’agrément de licence sous la forme de l’écran suivant :
Le fichier nessus.license est généralement fourni sur la page où l’on récupère le plugin le plus récent sous la forme d’une fenêtre telle que celle-ci-dessous :
On peut alors créer un compte spécifique de scan de vulnérabilités, que l’on appellera admnessus. Pour cela, on doit se connecter à l’interface web via l’url http://127.0.0.1:8834. L’assistant nous propose automatiquement de créer un premier compte d’administration :
Juste après, l’assistant nous redemande notre code d’activation :
Pour des plateformes déconnectées d’Internet, on peut malgré tout s’enregistrer grâce au code généré dans le premier champ ci-dessous et au code d’activation précédemment récupéré par mail. Il suffit de remplir alors les champs de la façon suivante en sélectionnant l’option offline :
En effet, si l’on ne dispose pas d’une connexion Internet, il est évident que la vérification de l’enregistrement du code d’activation ne pourra se faire. Aussi, on doit exécuter cette étape de façon déconnectée. Ainsi, l’assistant peut alors initialiser la plateforme de scan de vulnérabilités :
A ce stade, on a alors accès à l’interface Nessus et on peut commencer à analyser les vulnérabilités sur les serveurs de notre infrastructure. Nous allons voir maintenant comment spécialiser ces différents scans en fonction du type de machine évaluées. Commençons par créer une stratégie permettant d’analyser localement la plateforme Kali Linux. On va donc ouvrir l’interface graphique Nessus et sélectionner le menu Policies et on peut alors cliquer sur le lien ‘Create a new policy’ :
On peut alors sélectionner un des nombreux modèles de détection proposé par l’outil. En l’occurrence, on choisira le modèle de base (Basic Network Scan):
On peut alors donner un nom et une description à notre nouvelle stratégie :
Pour le moment, aucun plugin n’est encore détecté. Pour pourvoir les visualiser (en ayant au préalable téléchargé le fichier all-2.0.tar.gz sur le site de Tenable, on doit exécuter la commande suivante, dans le répertoire /opt/nessus/var/nessus :
# /opt/nessus/sbin/nessuscli update all-2.0.tar.gz * Update successful. The changes will be automatically processed by Nessus.
Lorsqu’on rafraîchit la page de l’interface graphique, on visualise alors les différents plugins disponibles et on peut sélectionner les deux enregistrements suivants :
- Ubuntu Local Security Checks
- Default Unix Accounts
On peut ensuite créer un nouvel enregistrement de scan en sélectionnant le menu principal et en cliquant sur le choix ‘Scan’ :
Il faut alors sélectionner l’onglet concernant les scans utilisateur définis afin d’y retrouver notre stratégie créée précédemment. On pourra alors fournir un nom et une description pour ce nouvel enregistrement de scan:
En sélectionnant l’onglet ‘Schedule’, il est possible de préciser la date et l’heure du scan programmé. Il est conseillé de l’exécuter une première fois de façon unique :
Au final, on doit donc disposer dans la liste des scans programmés de notre nouvel enregistrement défini ci-dessus. On peut le cocher et laisser la tâche s’exécuter ou la déclencher manuellement. Lorsque la tâche s’exécute, on doit alors voir apparaître l’affichage suivant :
Dès lors, dans le menu ‘My Scan’ on va retrouver la tâche ou le scan précédemment déclenché et on peut consulter le rapport en cliquant sur le lien. On dispose d’un premier aperçu du résulta via l’affichage ci-dessous :
On peut alors analyser plus finement le résultat en ouvrant l’onglet ‘Vulnerabilities’ et en listant un à un les différents éléments détectés :
REMARQUE : comme on peut le constater, notre plateforme Kali Linux ne présente guère de vulnérabilités (ce qui est un peu normal pour ce type de plateforme sécurisée dès l’installation) et ne liste pratiquement que des informations (étiquetées en bleu ci-dessus).
Maintenant que nous disposons de l’outil, il ne reste plus qu’à créer autant de stratégie que nécessaire. On peut par exemple créer des stratégies pour les besoins suivants:
- Vulnérabilités Réseau interne
- Vulnérabilités Linux
- Vulnérabilités Windows
B. Utilisation d’OpenVAS
Le logiciel OpenVAS est la version open Source de l’outil de scan de vulnérabilités Nessus. Il arrive que ce programme soit d’ores et déjà disponible sur la plateforme Kali Linux. L’outil se compose d’éléments s’exécutant en arrière-plan :
- Un scanner en charge de la détection des vulnérabilités
- Un manager contenant l’intelligence du framework et contrôlant le scanner (écrit en SQLite) et planifiant les audits et générant les rapports.
- Un agent administrator se chargeant de la gestion des utilisateurs, de l’alimentation du modèle de vulnérabilités et /ou des plugins.
Il existe aussi certains processus s’exécutant en avant-plan :
- L’interface CLI pour transmettre les ordres d’audit au Manager.
- Le tableau de bord (aussi appelé greenbone security desktop) interface complète suivant l’état des audits, des vulnérabilités.
- Le client HTTPS/HTTP pour le Manager (aussi appelé greenbone security assistant).
OpenVAS s’appuie sur un ensemble de vulnérabilités connues et reconnus stockée au sein d’une base de données. Pour disposer d’OpenVAS sur la plateforme Kali Linux, si ce n’est pas le cas, il faut s’assurer que la machine est à jour et ensuite mettre à jour les dépôts officiels de la distribution :
# apt-get update # apt-get dist-upgrade
ATTENTION: pour disposer de la version Kali Linux en mode rolling, il est nécessaire de s’assurer que le dépôt est bien celui correspondant à kali-rolling :
# cd /etc/apt # vi sources.list
On doit alors trouver la ligne suivante :
deb http://http.kali.org/kali kali-rolling main
Seulement alors, on peut effectuer les mises à jour automatiques et permettre l’installation de la suite OpenVAS en exécutant les instructions suivantes:
# apt-get update # apt-get install kali-archive-keyring # apt-get install -t kali-rolling openvas
On peut alors installer le package openvas et lancer l’initialisation:
# apt-get install openvas # openvas-setup
Une fois que le programme openvas-setup s’est correctement exécuté, les services sous-jacents devraient être opérationnels. Pour s’en assurer on peut exécuter la commande suivante :
# netstat -antp
On devrait alors visualiser les processus en écoute suivants :
Par défaut, les services OpenVAS ne sont pas configurés. Mais, si l’on a déjà paramétrés ceux-ci, on peut alors démarrer l’application permettant d’activer les agents gsad, openvassd, openvasmd et openvasd:
# openvas-start
REMARQUE : si l’on rencontre des difficultés lors de la phase de démarrage, on peut évaluer la cohérence de la syntaxe du paramétrage OpenVAS en exécutant la commande openvas-check-setup.
Pour se connecter à l’interface graphique de l’application OpenVAS, il suffit d’exécuter la page web https://127.0.0.1:9392 et d’accepter le certificat auto-signé. De la même façon que pour Nessus, il faut alors créer un compte d’administration admin dont le mot de passe est initialisé lors de la phase de configuration.
On peut effectuer la configuration en mode ligne de commande, en commençant par changer le mot de passe initial du compte admin :
# openvasmd --user=admin --new-password=++++++++
Pour arrêter et redémarrer le service OpenVAS, après une quelconque modification de la configuration, on devra utiliser les directives suivantes:
# openvas-stop # openvas-start
Au niveau de la suite OpenVAS, il est conseillé d’effectuer un scan complet. Pour cela, on doit définir les éléments suivants :
- le type de scan
- les identifiants (aussi appelés credentials)
- la liste des ports à scanner
- la ou les cible(s) à scanner
Lorsque ces paramètres sont fixés, on peut alors cliquer sur le bouton ‘Create’ pour ensuite aller créer une nouvelle tâche dans le menu Scan -> Tasks. De la même façon que pour Nessus, on doit fournir un nom et une description à ce nouvel enregistrement et préciser le périmètre du scan à effectuer :
Lorsque la tâche est créée, il ne reste plus qu’à l’exécuter via le bouton ‘Play’. Dès que la tâche se termine, le status de celle-ci passe à l’état ‘DONE’. En cliquant sur la ligne de la tâche de scan on peut alors faire afficher le rapport complet :
REMARQUE: le rapport ainsi récupéré peut alors être exporté dans divers format dont ; XML, HTML, ou encore PDF. Si l’on clique sur chaque vulnérabilité détectée, on accède alors au détail de celle-ci ainsi qu’à la solution proposée, le ou les logiciels affectés ainsi que les références CVE/CERT (éventuellement d’autres organismes de sécurité).
Avec ces différents outils, nous disposons alors d’un véritable laboratoire d’analyse et de sécurité, nous permettant de pousser les recherches de failles jusqu'aux extrêmes limites de ce qui est possible, y compris dans des domaines assez sensibles tels que :
- Ingénierie inverse
- Wifi et autres applications sans-fil
- Réseaux sociaux
- Compte-rendu et reporting
- Analyse légale (post-mortem)