
Tout outil de sécurité n'est vraiment utile qu'en fonction des
comptes rendus qu'il génère. Des tests aussi complexes soient-ils et des algorithmes n'ont
finalement qu'une faible valeur s'ils ne sont pas présentés et organisés de façon compréhensible.
Étant donné que les utilisateurs emploient Nmap et d'autres
Logiciels de diverses façons, il n'y a pas un format qui puisse convenir à tout le monde. Nmap propose donc
plusieurs formats, y compris le mode interactif permettant d'être directement intelligible
et le XML pour une meilleure portabilité entre logiciels (parsing). Outre le fait de proposer différents formats de sortie, Nmap comporte
des options permettant aussi bien de contrôler la verbosité des comptes rendus que
le déboggage. Les différents types de sorties peuvent être envoyés à des comptes rendus normalisés ou
à des fichiers spécifiques, dont le contenu peut s'agrémenter des scans successifs ou remplacer un contenu précédent.
Ces fichiers de sortie peuvent aussi être utilisés pour reprendre un scan temporairement suspendu. Nmap rend les résultats disponibles en 5 formats différents.
Le format par défaut est appelé interactive output. Il est envoyé en sortie standard
(stdout). On trouve aussi le normal output,
qui est semblable à interactive à ceci près qu'il
affiche moins d'informations de fonctionnement et d'alertes étant donné qu'il est plutôt destiné à
être analysé à la fin des scans au lieu de façcon interactive. La sortie au format XML est l'une des plus importante qui peut être
converti en HTML. Elle est facilement traitée par des programmes tiers comme les interfaces
graphiques pour Nmap, ou importée au sein de bases de données. Les deux autres formats restants sont le simple grepable
output, qui inclus la plupart des informations concernant une cible dans une
seule ligne, et le sCRiPt KiDDi3 0utPUt pour les utilisateurs qui
se prennent au sérieux |<-r4d. Alors que le format interactif représente la sortie par défaut et ne nécessite pas d'option
de ligne de commande particulière, les quatre autres options de format utilisent la même
syntaxe. Ils prennent un argument qui représente le nom du fichier dans lequel
les résultats devraient être inscrits. Des formats multiples peuvent être spécifiés mais chaque
format ne devrait être spécifié qu'une seule fois. Par exemple, vous pourriez souhaiter sauvegarder
une sortie de type normal (normal output) pour votre propre usage tout en sauvegardant un XML du même scan
pour une analyse par un programme. Vous pouvez le faire à l'aide des options
-oX myscan.xml -oN myscan.nmap. Bien que ce chapitre utilise
des noms de fichier simples, notamment myscan.xml, àdes fins pratiques,
des noms plus explicites sont en général recommandés. Le choix des noms relève des
préférences personnelles, toutefois pour ma part, j'en utilise de longs
contenant la date du scan ainsi qu'un mot ou deux décrivant le scan. Je les enregistre ensuite dans un répertoire nommé selon la compagnie pour laquelle je suis en train d'effectuer le scan. Même si ces options sauvegardent les résultats dans des fichiers, Nmap continue à
fournir la sortie interactive en stdout comme d'habitude. Par exemple, la commande
nmap -oX myscan.xml target génère un fichier XML intitulé
myscan.xml tout en donnant la sortie standard avec le même résultat interactif qu'il aurait donné si l'option -oX
n'avait pas été spécifiée du tout. Vous pouvez changer cette procédure en entrant un tiret
en argument sur l'un des types de format. Ceci force Nmap à désactiver
la sortie interactive et d'inscrire à la place les résultats
dans le format que vous avez spécifié pour le flux de sortie standard. Par conséquent, la
commande nmap -oX - target enverra seulement une sortie XML en
stdout. Les erreurs sérieuses sont susceptibles d'être inscrites dans le flux normal
d'erreur, le stderr. Contrairement à certains arguments de Nmap, l'espace entre le drapeau de l'option fichier
(comme -oX) et le nom de fichier ou le tiret est
obligatoire. Si vous l'omettez et entrez des arguments tels que
-oG- ou -oXscan.xml, une fonction de
compatibilité d'arrière-plan de Nmap forcera la création de formats de type
normal format comme fichiers de sortie nommés
G- et Xscan.xml,
respectivement. Nmap offre en outre l'option de contrôler la verbosité du scan et d'ajouter les résultats
les uns à la suite des autres dans un même fichier plutôt que d'écraser les résultats précédants. Toutes ces options sont
décrites ci-dessous. Formats de Sortie sur Nmap -
-oN <filespec> (sortie Normale) Demande que le format normal output soit appliqué
au fichier donné. Tel que décrit ci-dessus, cette procédure
diffère légèrement d'une sortie de type interactive output. -
-oX <filespec> (sortie XML) Demande que le format XML output soit
donné au fichier spécifié. Nmap contient une définition
de type de document (DTD) qui permet le traitement XML des résultats
de Nmap. Bien que ce soit d'abord pensé aux fins d'utilisation de programmation,
cette procédure peut aussi aider à interpréter la sortie XML
de Nmap. Le DTD définit les éléments légaux du format
et énumère souvent les attributs et les valeurs qu'ils peuvent prendre.
La dernière version est toujours disponible sur http://www.insecure.org/nmap/data/nmap.dtd. Le XML offre un format stable facilement traitable
au moyen d'un logiciel. Des outils de traitement XML sont offerts gratuitement dans tous les grands
langages de programmation, y compris C/C++, Perl, Python et
Java. Des gens ont même écrit des outils spécifiques dans ces langages
destinés au support de traitement des sorties de Nmap.
Notons comme exemples le Nmap::Scanner
et le Nmap::Parser en Perl
CPAN. Dans la plupart des cas où une application tierce
doit interagir avec Nmap, le XML est le format privilégié. Les sorties XML font référence à une feuille de style XSL qui peut être
utilisée dans le but de formater les résultats au format HTML. La façon la plus simple
d'utiliser ceci est de charger la sortie XML dans un navigateur Web, comme Firefox ou IE. Par défaut, cette démarche ne pourra être appliquée qu'à partir dela machine
sur laquelle vous utilisez Nmap (ou une machine configurée de façon
semblable) en raison du chemin système vers nmap.xsl codé en dur.
Utilisez l'option --webxml ou --stylesheet pour une façon de
générer un fichier XML portable qui rendra un format HTML sur toute
machine connectée au Web. -
-oS <filespec> (s0r713 ScRipT KIdd|3) Le format de sortie Script kiddie est similaire à la sortie interactive, sauf qu'il est post-traité de façon à mieux coller au style l33t HaXXorZ qui s'intéresse
à Nmap soit les lettres majuscules et le contenu unique de sa
prononciation. Les gens dénués d'humour devraient réaliser que cette option
est surtout une moquerie envers les script kiddies avant de me
descendre en flammes en m'accusant de “les aider”. -
-oG <filespec> (sortie Grepable) Ce format de sortie vit ses derniers instants de support parce qu'il devient désuet.
Le format XML est bien plus puissant et presque aussi
pratique pour les utilisateurs expérimentés. Le XML est un standard pour lequel des douzaines
d'excellents outils de traitement sont disponibles alors que le format de sortie grepable est mon
propre bidouillage. Le XML est évolutif afin de supporter les fonctions ultérieures de Nmap au rythme où elles sont disponibles alors que j'omets souvent ces fonctions pour les sorties grepables
par manque de place. Toutefois, le format de sortie grepable reste toujours populaire. C'est un
format simple qui liste chaque hôte sur une seule ligne et peut être facilement
traité à l'aide d'outils uniformisés sous UNIX, notamment grep, awk, cut,
sed, diff et Perl. Je l'utilise même souvent pour certains tests
en ligne de commande. Trouver tous les hôtes ayant le port ssh ouvert ou tournant
sous Solaris ne prend qu'un simple grep pour identifier l'hôte,
envoyé sur un awk ou traité pour afficher le champ désiré. Le format Grepable consiste en une suite de commentaires (des lignes commençant par un
dièze (#) et des lignes cibles. Une ligne cible inclus une combinaison
de 6 champs étiquetés, séparés par des tabulations et suivis d'un séparatif.
Les champs sont Host, Ports,
Protocols, Ignored State,
OS, Seq Index,
IPID et Status. Le plus important de ces champs est généralement
Ports qui donne les détails sur chaque port considéré.
C'est une liste d'entrées séparées par une virgule. Chaque entrée de port
représente un port considéré et prend la forme de 7 sous-champs séparés d'une barre oblique (/) . Ces sous-champs sont les suivants : Port
number, State, Protocol,
Owner, Service, SunRPC
info et Version info. Comme pour le format XML, cette page-manuel ne permet pas de documenter
de façon exhaustive l'ensemble de ce format. Une vision plus détaillée
est disponible sur http://www.unspecific.com/nmap-oG-output. -
-oA <basename> (sortie en tous formats)
À votre convenance, vous pouvez spécifier -oA
<basename>
pour stocker les résultats
de scans en format normal, XML et grepable, et ce, en une seule fois. Ils sont
stockés dans <basename>.nmap,
<basename>.xml et
<basename>.gnmap, respectivement.
Comme pour la plupart des programmes, vous pouvez ajouter en préfixe au nom de fichier
un chemin d'accès, comme
~/nmaplogs/foocorp/ sous UNIX ou
c:\hacking\sco sous Windows.
options de verbosité et déboggage -
-v (Augmenter le niveau de verbosité)
Augmente le niveau de verbosité, forçant Nmap à
afficher plus d'informations sur le scan qu'il effectue. Les ports ouverts
sont indiqués au fur et à mesure où ils sont trouvés ainsi qu'une évaluation
du temps qui reste à scanner si Nmap pense que cela prendra quelques minutes.
Utilisez cette option deux fois pour
encore plus de verbosité. L'utiliser plus de deux fois n'a aucun effet. La plupart des changements modifient seulement la sortie interactive et certains
touchent aussi les sorties normales et les script kiddies. Les autres sorties
sont conçues de façon à traiter par une machine, c'est pourquoi Nmap
peut donner des détails importants par défaut dans ces formats
sans pour autant fatiguer un utilisateur humain. Toutefois, il y a quelques
modifications dans les autres modes pour lesquels les tailles de sorties peuvent être réduites
substantiellement par omission de quelques détails. Par exemple, une
ligne commentée dans le format grepable qui fournit une liste de tous
les ports scannés n'est affichée que dans le mode verbeux parce que
cela peut s'avérer très long. -
-d [level] (Augmenter ou régler le niveau de déboggage)
Quand même le mode verbeux ne donne pas assez d'informations pour vous,
le déboggage est là pour vous noyer sous encore plus de données! Comme avec
l'option de verbosité (-v), le déboggage est mis en place
avec un drapeau de ligne de commande (-d) et le niveau de déboggage
peut être augmenté en le spécifiant plusieurs fois. Autrement, vous pouvez définir
un niveau de déboggage en donnant un argument à -d. Par
exemple, -d9 définit le niveau 9. C'est le plus haut niveau
et fournira des milliers de lignes à moins que vous ne lanciez
un scan très simple avec très peu de ports et de cibles. La sortie de déeboggage est utile lorsqu'une procédure erronée est soupçonnée dans Nmap
ou si vous désirez simplement savoir ce que fait Nmap et pourquoi. Comme cette
fonctionnalité est surtout faite pour les développeurs, les lignes de déboggage ne sont pas toujours
tres explicites. Vous pouvez obtenir quelque chose comme : Timeout
vals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987
rttvar: 14987 to: 100000. Si vous ne comprenez pas une ligne, vos seuls recours
sont de l'ignorer, la chercher dans le code source ou obtenir de l'aide
sur la liste de développement (nmap-dev). Certaines sont quand même assez explicites, mais
les messages deviennent de plus en plus obscures au fur et à mesure où le niveau de déboggage est élevé. -
--packet-trace (Trace les paquets et les données envoyés et reçus)
Force Nmap à afficher un résumé de chaque paquet envoyé
ou reçu. C'est souvent utilisé pour le déboggage mais c'est
aussi une bonne façon pour les nouveaux utilisateurs de mieux comprendre
ce que Nmap fait en arrière-lan. Afin d'éviter d'afficher des milliers de lignes,
vous pouvez spécifier un nombre limité
de ports à scanner, notamment -p20-30. Si vous ne vous préoccupez que de
ce que fait le sous-système de détection de version, utilisez
plutôt --version-trace à la place. -
--open (Montre seulement les ports ouverts (ou potentiellement ouverts))
Il arrive que vous ne soyez interressé que par les ports sur lesquels vous pouvez effectivment vous connecter (état <term>open</term>), et ne voulez pas de résultats pollués par ceux qui sont <term>closed</term>, <term>filtered</term>, et <term>closed|filtered</term> . La personnalisation est en général faite après le scan en utilisant des outils comme grep, awk, ou Perl, mais cette fonctionnalité a été ajoutée à cause d'un grand nombre de demandes à cet égard. Spécifiez --open pour voir seulement les ports <term>open</term>, <term>open|filtered</term>, et <term>unfiltered</term>. Ces trois états sont traités pour ce qu'ils sont normalement, ce qui signifie que <term>open|filtered</term> et <term>unfiltered</term> peuvent être regroupés dans le comptage si il y en a un grand nombre. -
--log-errors (Journalise les erreurs/alertes dans un fichier en mode normal)
Les alertes et erreurs affichées par Nmap vont habituellement uniquement
sur l'écran (sortie interactive), laissant un eventuel fichier de sortie
qui aurait été spécifié en ordre. Mais quand vous souhaitez quand même
voir ces messages dans le fichier de sortie que vous avez spécifié,
ajoutez cette option. C'est utile quand vous ne regardez pas
l'affichage interactif ou si vous essayez de debogger un
probleme. Le message apparait quand même à l'écran.
Ceci ne marchera pas pour la plupart des erreurs dues à une ligne de commande
erronnée, étant donné que Nmap n'aura pas encore ouvert
de fichier de sortie a ce stade. De plus, certains messages d'alerte/erreurs
utilisent un système différent qui n'est pas encore supporté
par cette option. Une alternative à cette option est
de rediriger l'affichage interactif (flux d'erreurs standard inclus)
vers un fichier. Tandis que la plupart des shells UNIX permettent ceci facilement,
cela peut s'avérer difficile sous Windows. -
--iflist (Dresse la liste des interfaces et des routes)
Affiche la liste des interfaces et des routes système telles que détectées
par Nmap. C'est utile pour le déboggage lié aux problèmes de cheminement
ou de détermination des interfaces (comme lorsque
Nmap traite une connexion PPP en tant qu'Ethernet).
Options de sortie diverses -
--append-output (Ajouter au fichier plutôt que de l'écraser)
Lorsque vous spécifiez un fichier pour un format de sortie
comme -oX ou -oN, ce fichier
est écrasé par défaut. Si vous préférez garder le contenu
existant du fichier et rajouter les nouveaux résultats,
spécifiez l'option --append-output. Tout
fichier de sortie spécifié dans cette configuration de session de Nmap
se verra agrémenté des nouveaux résultats plutôt qu'écrasé. Cela ne fonctionne
pas très bien pour les données de scan au format XML (-oX) dont le
fichier résultant ne sera pas vraiment correct et devra être rectifié
à la main. -
--resume <filename> (Reprendre un scan abandonné)
Certaines sessions importantes de Nmap peuvent prendre beaucoup de temps -- de
l'ordre de plusieurs jours. De tels scans ne sont pas toujours menés à terme.
Des restrictions peuvent empêcher Nmap d'être utilisé pendant
les heures de travail, soit parce que le réseau peut s'écrouler, la machine
sur laquelle Nmap tourne peut subir une réinitialisation voulue ou non ou Nmap lui même peut tomber en panne. L'administrateur qui utilise Nmap
peut l'annuler pour toute autre raison de toutes façons, en appuyant sur
ctrl-C. Recommencer tout le scan à partir du
début peut être indésirable. Heureusement, si le format normal (-oN) ou grepable (-oG)
a été conservé, l'utilisateur peut demander à Nmap de reprendre le scan
sur la cible qu'il traitait au moment d'être arrêté.
Spécifiez simplement l'option --resume avec le nom
du fichier de sortie normal/grepable en argument. Aucun autre argument n'est autorisé
puisque Nmap va chercher dans le fichier de sortie en question sa
configuration précédente. Appelez donc simplement Nmap de cette façon :
nmap --resume
<logfilename>
. Nmap ajoutera
les nouveaux résultats aux données déjà présentes dans le fichier en question
lors de la précédente exécution. Le redémarrage n'est pas possible à partir d'un format XML
parce que combiner les deux sessions dans un même
fichier XML serait difficile. -
--stylesheet <path or URL> (Défini la feuille de style XSL pour transformer la sortie XML)
Nmap dispose d'une feuille de style XSL nommée
nmap.xsl afin de visionner ou transcrire la sortie
XML en HTML. La sortie XML comprend une directive xml-stylesheet
qui pointe sur nmap.xml
où il a été initialement installé par Nmap (où dans le répertoire
courant sous Windows). Chargez simplement la sortie XML de Nmap
dans un navigateur à jour et il devrait retrouver
nmap.xsl depuis le système de fichiers puis utilisez-le
pour obtenir le compte rendu des résultats. Si vous préférez utiliser une
feuille de style différente, spécifiez là en argument à
--stylesheet. Vous devez donner le chemin ou l'adresse URL
complète. --stylesheet
http://www.insecure.org/nmap/data/nmap.xsl est une utilisation classique qui indique au navigateur de charger la dernière version de la feuille de style
de Insecure.Org. Cette procédure rend plus facile le visionnage des résultats sur une machine qui ne
dispose pas de Nmap (et donc de
nmap.xsl) . Par conséquent, l'adresse URL
est souvent plus utile toutefois le nmap.xsl local est utilisé
par défaut pour des raisons de confidentialité. -
--webxml (Charge la feuille de style depuis Insecure.org)
Cette option est seulement un alias pour --stylesheet http://insecure.org/nmap/data/nmap.xsl. -
--no_stylesheet (Ne pas déclarer de feuille de style XSL pour le XML)
Spécifiez cette option pour empêcher Nmap d'associer toute feuille de style XSL
avec les sorties XML. La directive xml-stylesheet est
omise.
|
|