Le puissant outil de scanning — Nmap
Super, nous avons vu les concepts généraux du scanning.
Dans cette leçon, nous allons nous concentrer sur l'utilisation pratique de Nmap.
Tout d'abord, j'ai ici une adresse IP cible que nous allons utiliser comme exemple pour illustrer le fonctionnement de Nmap.
La première chose à faire est d'ouvrir un terminal.
Je vais zoomer un peu.
Je passe ensuite en superutilisateur avec `sudo su` ou `sudo -i`, car certains types de scans avancés avec Nmap requièrent des privilèges root pour pouvoir envoyer des paquets bruts (raw packets).
Nmap est installé par défaut sur Kali Linux.
Si vous tapez simplement `nmap` dans le terminal, vous afficherez son menu d'aide.
Celui-ci liste toutes les options disponibles pour étendre les fonctionnalités de l'outil.
Chaque option a un rôle bien précis.
Par exemple, l'option `-Pn` permet de dire à Nmap de ne pas effectuer de ping de découverte (le host discovery) et de considérer que la cible est active.
C'est très utile si le pare-feu de la cible bloque les requêtes ICMP.
Vous avez l'option `-sU` pour lancer un scan UDP (le scan par défaut étant en TCP).
L'option `-sV` permet de détecter les versions des services en cours d'exécution sur les ports ouverts.
Enfin, l'option `-O` est utilisée pour tenter d'identifier le système d'exploitation de la machine cible.
Voyons quelques exemples concrets.
Nous allons scanner notre adresse IP cible.
Commençons par un scan Nmap classique, sans aucun argument supplémentaire, en tapant simplement `nmap <adresse_IP>`.
Avec Nmap, vous pouvez scanner une seule adresse IP, une liste d'adresses, ou un réseau entier en utilisant la notation CIDR (par exemple `/24` pour scanner un sous-réseau complet).
Vous pouvez également scanner un nom de domaine comme `google.fr`.
Mais ici, nous allons nous concentrer sur notre adresse IP cible.
Nmap lance l'analyse.
Le temps nécessaire dépend de la taille et de la complexité de l'architecture du réseau cible.
Si vous appuyez sur la barre d'espace pendant le scan, Nmap affichera le pourcentage d'avancement de la tâche.
Par défaut, Nmap effectue un scan de type « SYN stealth scan » (scan furtif SYN).
Pour rappel, lors d'une connexion TCP classique, le protocole utilise un processus d'établissement de liaison en trois étapes (le Three-Way Handshake) : l'envoi d'un paquet SYN, la réponse en SYN-ACK par le serveur, puis l'envoi d'un paquet ACK (acknowledgement) par le client pour initier l'échange de données.
Dans le cas d'un scan SYN (ou scan demi-ouvert), Nmap envoie uniquement le paquet SYN.
Si le port est ouvert, le serveur répond par un SYN-ACK.
Nmap lui répond alors immédiatement par un paquet RST (reset) pour couper la connexion avant qu'elle ne soit complètement établie.
Cela permet de détecter le port ouvert tout en évitant que la connexion ne soit enregistrée dans les fichiers de logs de l'application.
Une fois le scan terminé, Nmap affiche le résultat : l'adresse IP de la cible, une mention indiquant que l'hôte est actif (« host is up »), le nombre de ports fermés, et un tableau listant les ports ouverts.
Pour chaque port, on retrouve le numéro du port, le protocole (TCP ou UDP), l'état (« open » pour ouvert), et le service associé par défaut.
C'est un exemple d'utilisation basique de Nmap.
Vous constaterez que parfois, Nmap n'arrive pas à identifier précisément le service qui tourne derrière un port ouvert.
Ce n'est pas grave, nous pouvons utiliser d'autres options pour affiner les résultats.
Par exemple, si nous voulons identifier le système d'exploitation de la cible, nous pouvons ajouter l'option `-O` (`nmap -O <adresse_IP>`).
Comme mentionné précédemment, soyez prudent.
Les pare-feu, IDS (Intrusion Detection Systems) et IPS (Intrusion Prevention Systems) sont conçus pour détecter les activités suspectes.
Un scan de ports est généralement considéré comme une signature d'attaque, et ces systèmes de défense peuvent bloquer automatiquement votre adresse IP dès les premiers paquets détectés.
Ici, avec l'option `-O`, Nmap tente de deviner le système d'exploitation.
Les résultats de détection d'OS ne sont pas toujours d'une précision absolue, mais ici il détecte une forte probabilité de système Windows ou Linux.
Vous pouvez également ajuster la vitesse du scan avec les options de temporisation de `-T0` (le plus lent, pour éviter la détection) à `-T5` (le plus rapide et agressif).
Plus le scan est rapide, plus vous risquez d'être détecté ou de perturber les services de la cible.
Pour obtenir des informations encore plus précises, vous pouvez utiliser l'option `-sV` pour forcer la détection de version des services.
C'est une étape cruciale pour notre rapport et pour la phase d'exploitation, car elle nous permet de savoir si des versions obsolètes et vulnérables de logiciels sont utilisées.
Le scan avec détection de version prend un peu plus de temps car Nmap interroge activement chaque port ouvert pour obtenir sa bannière applicative.
Dans notre cas, Nmap nous révèle que les ports 135, 139 et 445 sont ouverts.
Il identifie la présence de Microsoft Windows, ce qui confirme que la cible est une machine Windows.
Le port 3389 correspond au service Bureau à distance (RDP, affiché comme ms-wbt-server).
Toutes ces informations doivent être copiées et documentées dans votre outil de prise de notes (comme CherryTree).
Par exemple, vous pouvez créer une note intitulée « Scanning avec Nmap » et y coller vos résultats pour y faire référence plus tard lors de la phase d'exploitation.
Si nous regardons le résultat détaillé de notre scan, nous y découvrons le nom NetBIOS de la machine (par exemple « john-PC »).
Nmap identifie également les services Microsoft RPC (MSRPC) sur le port 135 et Microsoft-DS (SMB) sur le port 445, typique de Windows 7 ou Windows 10.
Nmap offre bien d'autres possibilités.
Il intègre notamment le moteur de scripts NSE (Nmap Scripting Engine) qui permet d'automatiser des tâches avancées de diagnostic ou même d'exploitation de vulnérabilités.
Vous pouvez appeler ces scripts en utilisant l'option `--script` suivie du nom du script ou de sa catégorie.
Il existe également des techniques d'évasion, comme l'idle scan (option `-sI`), qui utilise une machine tierce (appelée machine zombie) pour relayer les paquets de scan afin de masquer votre propre adresse IP.
Si vous êtes certain qu'une machine est active, vous pouvez aussi utiliser l'option `-Pn` (anciennement `-PN`) pour ignorer l'étape de ping de découverte, ce qui permet de gagner du temps et de limiter le trafic suspect.
Enfin, l'option `-A` permet de lancer un scan complet et agressif.
Ce scan combine la détection d'OS, la détection de version des services, le lancement des scripts par défaut de l'NSE et le traceroute.
Attention : n'utilisez pas cette option à la légère car elle est extrêmement bruyante sur le réseau et génère un trafic important qui sera facilement détecté.
Utilisez-la uniquement lorsque vous avez l'autorisation et que vous savez que cela ne perturbera pas les services.
Dans notre exemple, le scan agressif `-A` nous apporte des informations très précieuses : il confirme avec précision que le système cible est un Windows 7 Professional Service Pack 1, nous donne son nom NetBIOS, le nom du groupe de travail (Workgroup), et nous fournit des détails sur la configuration du protocole SMB (comme le niveau de sécurité et si les connexions invités sont autorisées).
C'est une véritable mine d'or pour un pentesteur.
Nous mettons à jour notre CherryTree avec ces résultats détaillés.
Si vous souhaitez cibler uniquement certains ports spécifiques, vous pouvez utiliser l'option `-p`.
Par exemple, `nmap -p 80 <adresse_IP>` scannera uniquement le port 80.
Vous pouvez spécifier plusieurs ports en les séparant par des virgules (par exemple `-p 80,443,22,445`).
Nmap concentrera alors toute son analyse uniquement sur ces ports.
Voilà l'essentiel de ce qu'il faut savoir sur l'utilisation de Nmap pour le scanning de ports et de services.
Pour vous entraîner légalement, Nmap met à disposition le nom de domaine `scanme.nmap.org`.
Vous êtes autorisé à le scanner pour tester l'outil.
En revanche, ne scannez jamais des serveurs ou des domaines sans en avoir reçu l'autorisation écrite explicite.
Veillez à toujours bien documenter vos résultats Nmap pour préparer au mieux la suite de votre test d'intrusion.