
I. Présentation
Vous avez sous la main deux résultats de scan Nmap, mais comment savoir ce qui a changé entre ces deux scans ? Y a-t-il de nouveaux hôtes, des services en plus ou en moins ? Nous allons voir comment savoir cela rapidement dans cet article.
La comparaison d’un scan Nmap avec un autre peut être très utile dans le contexte d’un suivi régulier de la cartographie du système d’information. Effectuer des scans réguliers, avec les mêmes options et vers les mêmes réseaux cibles, permet de s’assurer que rien n’a changé, ou au contraire référencer les changements observés et s’assurer qu’ils sont attendus et justifiés.
Cette opération peut être effectuée très rapidement et facilement avec la commande ndiff que nous allons apprendre à utiliser ici.
II. La commande ndiff : utilisation et interprétation des résultats
A. Installer la commande ndiff
Ndiff est un utilitaire fourni avec la suite Nmap qui permet de comparer deux scans et de nous afficher les différences de résultats entre les deux. L’avantage de l’outil est qu’il est développé par le même éditeur, on peut donc s’attendre à ce qu’il soit opérationnel dans n’importe quel cas.
Il s’installe généralement en même temps que Nmap, mais il y a toujours des exceptions. Pour vérifier que ndiff est bien présent, utilisez la commande suivante :
# Vérifier la présence de la commande ndiff
$ whereis ndiff
ndiff: /usr/bin/ndiff
Dans mon cas, le binaire ndiff est présent dans le dossier /usr/bin/. Si vous avez un autre retour que celui-ci, vous devrez installer ndiff via les commandes habituelles de gestion des paquets :
# CentOS, Fedora, Red Hat Enterprise Linux (RHEL) & dérivés
$ yum install ndiff
# Debian, Linux Mint, Ubuntu & dérivés
$ apt-get install ndiff
# openSUSE
$ zypper install ndiff
B. Avoir le bon format de résultat nmap
Pour commencer, sachez que ndiff ne peut travailler que sur le format de sortie XML de Nmap. Les autres formats ne disposent pas d’une structure qui est aussi optimisée pour des scripts ou des programmes alors que le format XML est fait pour. Sa structure est connue à l’avance et facile à parcourir via des langages comme Python ou PowerShell.
Pour enregistrer le résultat d’un scan réseau Nmap en XML, vous devez utiliser l’option -oX (Output XML) :
# Enregister la sortie Nmap au format XML
nmap 192.168.56.0/24 -oX scan1.xml
Le résultat s’affiche toujours dans le terminal, mais est également enregistré dans le fichier scan1.xml. Bien entendu, pour comparer deux scans, il vous faut deux fichiers, idéalement avec des différences pour que ce soit plus parlant. Dans mon cas, j’ai choisi d’utiliser l’infrastructure GOAD. Mon premier scan contiendra 4 des 5 machines qui composent le SI, et je démarrerai la 5ᵉ pour le second scan :
nmap 192.168.56.0/24 -oX scan2.xml
Vous ne connaissez pas GOAD ? Il s’agit d’un mini-SI déployable sur Virtual Box, VMware Workstation ou dans le cloud pour vous entrainer à la cybersécurité offensive ou défensive, découvrez-le via notre article dédié :
Maintenant que nous avons nos deux fichiers, nous pouvons utiliser la commande ndiff.
C. Comparer deux scans nmap
Cette commande a l’avantage d’être simple d’utilisation, voyez plutôt :
# Comparer deux scan nmap (format XML)
ndiff
Voici un exemple avec une sortie présentant des différences :
$ ndiff scan1.xml scan2.xml
-Nmap 7.93 scan initiated Fri Aug 29 15:05:01 2025 as: nmap -oX scan1.xml 192.168.56.0/24
+Nmap 7.93 scan initiated Fri Aug 29 15:09:48 2025 as: nmap -oX scan2.xml 192.168.56.0/24
+192.168.56.11, 08:00:27:B4:57:6A:
+Host is up.
+Not shown: 988 closed ports
+PORT STATE SERVICE VERSION
+53/tcp open domain
+88/tcp open kerberos-sec
+135/tcp open msrpc
+139/tcp open netbios-ssn
+389/tcp open ldap
+445/tcp open microsoft-ds
+464/tcp open kpasswd5
+593/tcp open http-rpc-epmap
+636/tcp open ldapssl
+3268/tcp open globalcatLDAP
+3269/tcp open globalcatLDAPssl
+3389/tcp open ms-wbt-server
192.168.56.12, 08:00:27:E9:99:13:
-Not shown: 990 closed ports
+Not shown: 988 closed ports
PORT STATE SERVICE VERSION
+3268/tcp open globalcatLDAP
+3269/tcp open globalcatLDAPssl
Première différence à noter : la date et les options d’exécution. Forcément, il faut s’assurer que les options utilisées et les cibles scannées soient les mêmes pour que les différences remontées par ndiff aient du sens. Cela inclut aussi les flags de détection de services, de version, etc.
Ensuite, la lecture est plutôt simple et ressemble fortement à celle de la commande diff, qui permet de comparer deux fichiers texte. Les lignes qui comment par un “+” sont nouvelles, elles n’existaient pas dans le premier scan (scan1.xml) et les lignes commençant par un “-” ne sont plus présentes dans le second scan (scan2.xml).
Dans mon cas, on comprend donc rapidement qu’un nouvel hôte est apparu sur le réseau (192.168.56.11) avec ses services. Aussi, pour l’hôte 192.168.56.12, qui a déjà été identifié dans le scan précédent, 2 nouveaux ports sont apparus (3268/tcp et 3269/tcp). Ndiff est aussi intéressant pour détecter des changements d’état de ports (ouvert > fermé, filtré > ouvert, etc.), pas seulement l’apparition/disparition de services ou d’hôtes.
Sachez que si vous souhaitez automatiser ce processus de comparaison, vous pouvez aussi demander à ndiff d’enregistrer sa sortie au format XML. Celle-ci devient alors interprétable bien plus facilement via des scripts ou des programmes (pour afficher graphiquement les comparaisons, alimenter une base de données, archiver, etc.).
# Enregistrer les résultats de ndiff au format XML
$ ndiff scan1.xml scan2.xml –xml > ndiff_1.xml
[Aug 29, 2025 – 22:51:33 (CEST)] exegol-20250820_Datalake /workspace # head ndiff_1.xml
Cette sortie XML est différente de celle de Nmap, elle est spécifiquement conçue pour représenter les différences entre les deux scans.
III. Conclusion
La comparaison de scans Nmap permet de suivre l’évolution de votre réseau et détecter rapidement les changements (nouveaux hôtes, services modifiés, etc.). Avec ndiff, cet outil intégré à Nmap, la tâche devient simple et efficace : une commande suffit pour identifier les différences entre deux scans au format XML.
Que vous surveilliez des modifications planifiées ou cherchiez des anomalies, ndiff vous permet d’agir vite, avec une sortie claire et exploitable, même en automatisation.
Pour aller plus loin, découvrez notre ebook pour maîtriser Nmap de A à Z. Conçu pour vous rendre autonome dans la cartographie réseau, l’analyse des vulnérabilités et l’optimisation de vos scans. Que vous soyez administrateur système, étudiant, pentester ou RSSI, on part de 0 pour maitriser complètement cet outil indispensable !
https://bit.ly/ITC-NMAP-LIVRE
N’hésitez pas à nous demander d’autres sujets ou cas spécifiques que nous pourrions traiter sur IT-Connect.
Co-fondateur d’IT-Connect.fr.
Auditeur/Pentester chez Orange Cyberdéfense.