Formats de sortie Nmap

NmapBeginner
Pratiquer maintenant

Introduction

Lors de la réalisation de tests d'intrusion ou d'évaluations de sécurité réseau, l'exécution des analyses ne représente que la moitié du travail. Documenter et enregistrer correctement vos résultats est crucial pour le reporting, le suivi de la progression et l'alimentation d'autres outils de sécurité.

Le choix du format de sortie détermine ce que vous pourrez faire de vos résultats par la suite. Un format lisible par l'humain est idéal pour une vérification rapide, tandis qu'un format structuré est préférable pour l'automatisation. Les flux de travail matures conservent généralement les deux.

Nmap, l'outil de cartographie réseau standard de l'industrie, propose plusieurs formats de sortie pour répondre à différents besoins. Les trois formats les plus courants sont Normal (lisible par l'humain), Grepable (conçu pour l'analyse en ligne de commande) et XML (données structurées pour l'importation dans d'autres logiciels).

Dans ce laboratoire, vous apprendrez à générer ces trois formats de sortie et à utiliser les outils de ligne de commande Linux de base pour analyser les résultats et extraire des informations précieuses.

Sortie au format Normal (-oN)

Dans cette étape, vous apprendrez à enregistrer les résultats d'analyse Nmap au format Normal. Ce format est essentiellement une copie conforme de ce que vous voyez sur votre terminal lors de l'exécution d'une analyse Nmap. Il est très lisible et parfait pour examiner rapidement les résultats ou les partager avec des collègues dans un document texte.

Ce format est optimisé pour les humains, pas pour les pipelines de données. C'est le choix approprié lorsque le destinataire immédiat est un analyste humain lisant l'analyse sous forme de rapport.

Pour enregistrer vos résultats d'analyse au format Normal, utilisez l'option -oN suivie du nom du fichier que vous souhaitez créer. Nous allons analyser notre machine locale (127.0.0.1) pour découvrir les ports ouverts et enregistrer la sortie.

Exécutez la commande suivante dans votre terminal pour effectuer une analyse et l'enregistrer sous le nom normal_scan.txt :

nmap -p 22,8080 -oN normal_scan.txt 127.0.0.1

Une fois l'analyse terminée, vous pouvez visualiser le contenu du fichier à l'aide de la commande cat. Cela affichera exactement la même sortie que celle qui a été imprimée sur votre écran pendant l'analyse.

cat normal_scan.txt

Vous devriez voir une sortie similaire à celle-ci, indiquant les ports ouverts et leurs services associés :

## Nmap 7.80 scan initiated Sat Mar  7 16:07:07 2026 as: nmap -p 22,8080 -oN normal_scan.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000057s latency).

PORT     STATE SERVICE
22/tcp   open  ssh
8080/tcp open  http-proxy

## Nmap done at Sat Mar  7 16:07:07 2026 -- 1 IP address (1 host up) scanned in 0.02 seconds

Sortie au format Grepable (-oG)

Dans cette étape, vous explorerez le format de sortie Grepable. Bien que le format Normal soit idéal pour les yeux humains, il est difficile à traiter par programme car les informations s'étendent sur plusieurs lignes. Le format Grepable résout ce problème en plaçant toutes les informations relatives à un hôte sur une seule ligne longue.

Aplatir les données de cette manière rend l'analyse via le shell très pratique. C'est un exemple classique d'adaptation de la sortie pour des outils en aval plutôt que pour un confort de lecture directe.

Ce format est spécifiquement conçu pour être utilisé avec des outils de ligne de commande Linux tels que grep, awk et cut. Pour générer une sortie Grepable, utilisez l'option -oG.

Exécutez la commande suivante pour effectuer la même analyse, mais cette fois en enregistrant les résultats au format Grepable sous le nom grepable_scan.txt :

nmap -p 22,8080 -oG grepable_scan.txt 127.0.0.1

Maintenant, visualisez le contenu du fichier nouvellement créé :

cat grepable_scan.txt

La sortie sera très différente du format Normal. Remarquez comment les informations de l'hôte et tous ses ports ouverts sont condensés sur une seule ligne :

## Nmap 7.80 scan initiated Sat Mar  7 16:07:20 2026 as: nmap -p 22,8080 -oG grepable_scan.txt 127.0.0.1
Host: 127.0.0.1 (localhost)     Status: Up
Host: 127.0.0.1 (localhost)     Ports: 22/open/tcp//ssh///, 8080/open/tcp//http-proxy///
## Nmap done at Sat Mar  7 16:07:20 2026 -- 1 IP address (1 host up) scanned in 0.02 seconds

Cette structure facilite incroyablement la recherche de mots-clés spécifiques, tels que "open", et l'extraction des adresses IP correspondantes, ce que vous pratiquerez dans une étape ultérieure.

Sortie au format XML (-oX)

Dans cette étape, vous apprendrez à générer une sortie XML. Le XML (eXtensible Markup Language) est un format hautement structuré qui est largement pris en charge par de nombreuses applications logicielles différentes.

La sortie structurée lisible par machine devient plus importante à mesure que les évaluations prennent de l'ampleur. Une fois que vos résultats d'analyse doivent être intégrés dans d'autres outils, l'analyse de texte ad hoc devient fragile et coûteuse à maintenir.

Dans le contexte des tests d'intrusion, le XML est le format privilégié lorsque vous devez importer vos résultats d'analyse Nmap dans d'autres outils de sécurité, tels que le framework Metasploit, des scanners de vulnérabilités ou des scripts de reporting personnalisés. Pour créer un fichier de sortie XML, utilisez l'option -oX.

Exécutez la commande suivante pour effectuer l'analyse et enregistrer les résultats sous le nom xml_scan.xml :

nmap -p 22,8080 -oX xml_scan.xml 127.0.0.1

Vous pouvez inspecter le contenu du fichier XML à l'aide de la commande cat :

cat xml_scan.xml

La sortie sera un large bloc de balises XML structurées. Bien qu'il ne soit pas très facile à lire rapidement pour un humain, il est parfaitement formaté pour être analysé par des machines :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nmaprun>
<?xml-stylesheet href="file:///usr/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
<!-- Nmap 7.80 scan initiated Sat Mar  7 16:07:30 2026 as: nmap -p 22,8080 -oX xml_scan.xml 127.0.0.1 -->
<nmaprun scanner="nmap" args="nmap -p 22,8080 -oX xml_scan.xml 127.0.0.1" start="1772870850" startstr="Sat Mar  7 16:07:30 2026" version="7.80" xmloutputversion="1.04">
...
<host starttime="1772870850" endtime="1772870850"><status state="up" reason="conn-refused" reason_ttl="0"/>
<address addr="127.0.0.1" addrtype="ipv4"/>
<hostnames>
<hostname name="localhost" type="PTR"/>
</hostnames>
<ports><port protocol="tcp" portid="22"><state state="open" reason="syn-ack" reason_ttl="0"/><service name="ssh" method="table" conf="3"/></port>
...

Analyser la sortie Grepable avec Awk

Dans cette dernière étape, vous mettrez en pratique le format de sortie Grepable. Un scénario courant lors des tests d'intrusion consiste à analyser un grand réseau, à trouver des hôtes avec des ports ouverts spécifiques, puis à extraire uniquement les adresses IP de ces hôtes pour les transmettre à un autre outil (comme un outil de cassage de mots de passe ou un exploit de vulnérabilité).

Nous utiliserons deux outils puissants de traitement de texte Linux : grep et awk. La commande grep filtre les lignes contenant un mot spécifique, et awk peut extraire des colonnes spécifiques de ces lignes.

Tout d'abord, voyons comment filtrer notre fichier Grepable pour n'afficher que les lignes contenant le mot "open" :

grep "open" grepable_scan.txt

Cette commande affiche la ligne contenant l'hôte et ses ports ouverts.

Host: 127.0.0.1 (localhost)     Ports: 22/open/tcp//ssh///, 8080/open/tcp//http-proxy///

Maintenant, nous voulons extraire uniquement l'adresse IP. Dans le format Grepable, l'adresse IP est toujours le deuxième "mot" (ou colonne) de la ligne. Nous pouvons rediriger (|) la sortie de grep vers awk et lui demander d'imprimer la deuxième colonne ($2).

Exécutez la commande suivante pour extraire l'adresse IP et l'enregistrer dans un nouveau fichier appelé open_hosts.txt :

grep "open" grepable_scan.txt | awk '{print $2}' > open_hosts.txt

Vérifions le contenu de notre nouveau fichier :

cat open_hosts.txt

Vous devriez voir uniquement l'adresse IP affichée :

127.0.0.1

En maîtrisant cette simple combinaison de commandes, vous pouvez rapidement analyser des fichiers d'analyse massifs et extraire exactement les cibles dont vous avez besoin pour la phase suivante de votre évaluation.

Résumé

Dans ce laboratoire, vous avez appris à documenter et gérer efficacement les résultats d'analyse Nmap en utilisant différents formats de sortie. Vous avez exploré le format Normal (-oN) pour la lisibilité humaine, le format Grepable (-oG) pour l'analyse en ligne de commande, et le format XML (-oX) pour l'intégration d'outils. Enfin, vous vous êtes exercé à utiliser des utilitaires de traitement de texte Linux comme grep et awk pour extraire des informations cibles spécifiques à partir de fichiers de sortie Grepable. Ces compétences sont essentielles pour organiser les données et rationaliser les flux de travail lors des évaluations de sécurité.