Introduction
Dans cet atelier, vous allez acquérir les bases de l'exploration réseau à l'aide de Nmap (Network Mapper), un outil open-source incontournable pour la découverte de réseaux et l'audit de sécurité. Vous commencerez par des scans de ports élémentaires, passerez à la détection de services et de versions, puis explorerez le moteur de script Nmap (NSE) pour effectuer des vérifications de vulnérabilités. Enfin, vous apprendrez à analyser et à sauvegarder vos résultats de scan dans différents formats pour la rédaction de rapports. Cet atelier propose une introduction pratique et progressive aux fonctionnalités clés de Nmap pour une évaluation efficace de la sécurité réseau.
Effectuer un scan réseau de base
Dans cette première étape, vous allez vous familiariser avec Nmap en effectuant un scan de base. Un scan de base sert à découvrir quels ports sont ouverts sur une machine cible. Un port ouvert indique qu'un service (comme un serveur web ou SSH) est actif et en attente de connexions.
L'environnement de l'atelier a été pré-configuré avec plusieurs services s'exécutant sur localhost (votre propre machine virtuelle) pour vous permettre de vous exercer. L'outil nmap est déjà installé.
Tout d'abord, vérifions que Nmap est bien installé et consultons sa version. Ouvrez le terminal et exécutez la commande suivante :
nmap --versionVous devriez voir une sortie confirmant la version de Nmap, semblable à ceci :
Nmap version 7.80 ( https://nmap.org ) Platform: x86_64-pc-linux-gnu Compiled with: liblua-5.3.3 openssl-1.1.1f libssh2-1.8.0 libz-1.2.11 libpcre-8.39 nmap-libpcap-1.9.1 Compiled without: Available nsock engines: epoll poll selectMaintenant, effectuez votre premier scan sur
localhost. Cette commande demande à Nmap de vérifier les ports ouverts les plus courants sur votre machine locale.nmap localhostExaminez le résultat. Nmap listera les ports qu'il a trouvés ouverts, ainsi que leur état et le service habituellement associé à ce port. La sortie ressemblera à ceci, affichant les services préparés pour cet atelier :
Starting Nmap 7.80 ( https://nmap.org ) at ... Nmap scan report for localhost (127.0.0.1) Host is up (0.000092s latency). Not shown: 995 closed ports PORT STATE SERVICE 22/tcp open ssh 2121/tcp open ccproxy-ftp 2222/tcp open EtherNetIP-1 3001/tcp open nessus 8080/tcp open http-proxy Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
Ce scan initial vous donne une cartographie des services en cours d'exécution, ce qui constitue la première étape de toute évaluation de la sécurité réseau.
Détecter les versions des services
Savoir quels ports sont ouverts est utile, mais connaître précisément le logiciel et la version qui tournent sur ces ports est bien plus précieux pour un analyste en sécurité. Les logiciels obsolètes sont une source majeure de vulnérabilités. Dans cette étape, vous allez utiliser Nmap pour détecter les services et leurs versions.
Nous utiliserons le drapeau -sV, qui ordonne à Nmap de sonder les ports ouverts pour déterminer des informations détaillées sur le service et sa version.
Lancez un scan de détection de version sur
localhost. Pour rendre le scan plus efficace, nous allons cibler les ports spécifiques découverts à l'étape 1 (22, 2121, 2222, 3001, 8080) plutôt que de scanner tous les ports.nmap -sV -p 22,8080 localhostConseil d'expert : Cibler des ports spécifiques réduit considérablement le temps de scan. Un scan complet de la plage de ports avec
-sVpeut prendre plusieurs minutes, alors que cette approche ciblée se termine généralement en quelques secondes.Comparez le résultat avec le scan de base de l'étape 1. Vous verrez maintenant une colonne supplémentaire,
VERSION, qui fournit des détails sur le logiciel s'exécutant sur chaque port.La sortie sera plus détaillée, semblable à celle-ci :
Starting Nmap 7.80 ( https://nmap.org ) at ... Nmap scan report for localhost (127.0.0.1) Host is up (0.00011s latency). Not shown: 995 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0) 8080/tcp open http nginx 1.18.0 (Ubuntu) Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Nmap done: 1 IP address (1 host up) scanned in 2.15 seconds
Ces informations sont cruciales. Par exemple, si le scan révélait une ancienne version de nginx présentant une vulnérabilité critique connue, vous sauriez exactement où concentrer vos efforts de remédiation.
Utiliser le moteur de script Nmap (NSE)
Le moteur de script Nmap (NSE - Nmap Scripting Engine) est l'une des fonctionnalités les plus puissantes de Nmap. Il permet d'automatiser une grande variété de tâches réseau grâce à une bibliothèque de scripts. Ces scripts peuvent être utilisés pour une découverte avancée, la détection de vulnérabilités et même l'exploitation.
Dans cette étape, vous utiliserez le drapeau -sC, qui exécute un ensemble de scripts par défaut considérés comme sûrs et utiles pour la phase de découverte.
Lancez un scan Nmap avec les scripts par défaut activés sur
localhost. Le drapeau-sCest un moyen pratique d'obtenir plus d'informations sans avoir à spécifier chaque script individuellement.nmap -sC localhostExaminez le résultat. Vous verrez des informations supplémentaires indentées sous chaque port. Il s'agit de la sortie des scripts NSE. Par exemple, le script
http-titlepeut récupérer le titre de la page web sur le port8080, et les scripts SSL peuvent fournir des détails sur les certificats.La sortie sera encore plus verbeuse :
Starting Nmap 7.80 ( https://nmap.org ) at ... Nmap scan report for localhost (127.0.0.1) Host is up (0.000099s latency). Other addresses for localhost (not scanned): ::1 Not shown: 995 closed ports PORT STATE SERVICE 22/tcp open ssh 2121/tcp open ccproxy-ftp 2222/tcp open EtherNetIP-1 3001/tcp open nessus | ssl-cert: Subject: commonName=localhost | Subject Alternative Name: DNS:localhost | Not valid before: 2024-07-18T03:37:05 |_Not valid after: 2034-07-16T03:37:05 8080/tcp open http-proxy |_http-open-proxy: Proxy might be redirecting requests |_http-title: Site doesn't have a title (text/html). Nmap done: 1 IP address (1 host up) scanned in 0.62 seconds
Comme vous pouvez le constater, les scripts par défaut ont découvert que la connexion FTP anonyme est autorisée sur le port 2121 et ont récupéré le titre de la page web sur le port 8080. Ce sont des renseignements précieux collectés automatiquement.
Exécuter un scan de vulnérabilités
Il est maintenant temps de traquer les vulnérabilités. Le NSE comprend une catégorie de scripts spécifiquement conçus pour vérifier les failles de sécurité connues. Vous pouvez exécuter tous les scripts de la catégorie vuln pour effectuer un scan de vulnérabilités large.
Il est recommandé de toujours sauvegarder la sortie des scans longs ou importants dans un fichier. Nous utiliserons le drapeau -oN pour enregistrer le résultat au format normal de Nmap.
Tout d'abord, combinons ce que vous avez appris. Lancez un scan incluant la détection de service (
-sV) et exécutant tous les scripts de vulnérabilité (--script vuln). Sauvegardez le résultat dans un fichier nommévuln_scan.txt.nmap -sV --script vuln -oN vuln_scan.txt localhostCe scan peut prendre quelques minutes car il exécute de nombreux scripts sur chaque port ouvert.
Une fois le scan terminé, un fichier nommé
vuln_scan.txtsera créé dans votre répertoire actuel (/home/labex/project). Vous pouvez consulter son contenu avec la commandecat:cat vuln_scan.txtLe fichier de sortie est long, il est donc plus efficace de rechercher des mots-clés. Utilisez
greppour chercher les lignes indiquant une vulnérabilité. Le terme "VULNERABLE" est un indicateur fort.grep "VULNERABLE" vuln_scan.txtVous devriez voir s'afficher les vulnérabilités trouvées. Dans cet environnement d'atelier, vous verrez probablement une vulnérabilité liée au filtre byterange d'Apache :
| VULNERABLE: | State: VULNERABLEPour voir les détails complets de la vulnérabilité, vous pouvez rechercher le CVE spécifique ou consulter l'intégralité de la sortie du scan. Par exemple, vous pourriez trouver une vulnérabilité de déni de service (DoS) Apache (CVE-2011-3192) sur le port 8080. Notez que vous pourriez également voir des erreurs de script (comme
clamav-exec: ERROR), ce qui est normal et peut être ignoré ; cela arrive lorsque certains scripts de vulnérabilité ne peuvent pas s'exécuter correctement dans l'environnement de l'atelier.
Cette étape démontre comment sonder activement les faiblesses, passant d'une simple découverte à un audit de sécurité ciblé.
Sauvegarder et formater les résultats du scan
Documenter et rapporter correctement vos découvertes est une compétence essentielle pour tout professionnel de la sécurité. Nmap prend en charge plusieurs formats de sortie adaptés à différents usages. Dans cette dernière étape, vous apprendrez à sauvegarder vos résultats dans plusieurs formats et à créer un rapport HTML convivial.
Tout d'abord, créez un répertoire dédié pour organiser vos rapports.
mkdir -p ~/project/reportsMaintenant, relancez le scan, mais cette fois-ci, sauvegardez la sortie dans deux formats simultanément : texte normal (
-oN) et XML (-oX). Le XML est un format structuré idéal pour être traité par d'autres outils.nmap -sV -p 8080 --script vuln -oN ~/project/reports/scan_report.txt -oX ~/project/reports/scan_report.xml localhostLe format XML n'est pas très lisible par l'homme. Nmap fournit un utilitaire appelé
xsltprocpour convertir le fichier XML en un rapport HTML clair. Exécutez la commande suivante pour générerscan_report.html.xsltproc ~/project/reports/scan_report.xml -o ~/project/reports/scan_report.htmlVérifions que tous vos fichiers de rapport ont été créés dans le répertoire
~/project/reports. Utilisez la commandels -lpour lister les fichiers et leurs détails.ls -l ~/project/reportsVous devriez voir vos trois fichiers de rapport :
total 40 -rw-rw-r-- 1 labex labex 14276 Aug 28 15:12 scan_report.html -rw-rw-r-- 1 labex labex 5686 Aug 28 15:11 scan_report.txt -rw-rw-r-- 1 labex labex 14924 Aug 28 15:11 scan_report.xml
Vous disposez maintenant d'un fichier texte brut pour une consultation rapide, d'un fichier XML pour un traitement automatisé et d'un fichier HTML pour un partage et une présentation facilités.
Résumé
Dans cet atelier, vous avez acquis une expérience pratique de Nmap, un outil fondamental en cybersécurité. Vous avez commencé par effectuer des scans de ports de base pour identifier les services ouverts sur un hôte réseau. Vous avez ensuite progressé vers des techniques plus avancées, notamment la détection de version de service (-sV) pour identifier les logiciels spécifiques et leurs versions. Vous avez également exploré la puissance du moteur de script Nmap (NSE) en exécutant des scripts par défaut (-sC) et un scan de vulnérabilités complet (--script vuln). Enfin, vous avez appris la pratique professionnelle consistant à sauvegarder les résultats de scan dans plusieurs formats (-oN, -oX) et à les convertir en un rapport HTML lisible pour l'analyse et la documentation. Ces compétences constituent une base solide pour utiliser Nmap lors d'évaluations de sécurité réseau en conditions réelles.



