Nmap network security scanner man page (French translation)
XXX
XXX WARNING: old character encoding and/or character set
XXX
NMAP(1) NMAP(1)
NOM
nmap - Outil d’exploration réseau et analyseur de sécurité
SYNOPSIS
nmap [Type(s) de scan] [Options] <hôte ou réseau #1 ... [#N]>
DESCRIPTION
Nmap a été conçu pour que les administrateurs systèmes et les curieux
puissent analyser de grands réseaux pour déterminer les hôtes actifs et
les services offerts. nmap supporte un grand nombre de techniques
d’analyse : UDP, TCP connect(), TCP SYN (mi ouvert), ftp proxy (attaque
par rebond), Reverse-ident, ICMP (balayage de ping), FIN, balayage de
ACK, Xmas Tree, balayage de SYN, Protocoles IP, et Null scan. Voir la
section Types de scans pour plus de détails. Nmap offre également des
caractéristiques avancées comme la détection du système d’exploitation
distant via l’empreinte TCP/IP, l’analyse furtive, le délai dynamique
et les calculs de retransmission, l’analyse parallèle, détection de
hôtes inactifs via des pings parallèles, l’analyse avec leurres, la
détection des ports filtrés, analyse directe (sans portmapper) des RCP,
l’analyse avec fragmentation, et une notation puissante pour désigner
les hôtes et les ports.
Des efforts significatifs ont été consacrés pour que nmap soit utilis-
able par des utilisateurs non-root. Malheureusement, la plupart des
interfaces noyaux critiques (comme les raw sockets) requièrent les
privilèges root. Nmap devrait donc être lancé en tant que root autant
que possible (mais pas en setuid root, évidemment).
Le résultat de l’exécution de nmap est habituellement une liste de
ports intéressants sur les machines analysées. Nmap donne pour chaque
port le nom du service, le numéro, l’état et le protocole. L’état peut
être « open », « filtered » ou « unfiltered ». « Open » signifie que
la machine cible accepte les connexions sur ce port. « Filtered » sig-
nifie qu’un pare-feu, un filtre ou un autre obstacle réseau protège le
port et empêche nmap de détecter si le port est ouvert. « Unfiltered »
signifie que le port est fermé et qu’aucun pare-feu n’a interféré avec
nmap. Les ports « Unfiltered » sont les plus courants et ne sont
affichés que lorsque la majorité des ports analysés sont dans l’état
« filtered ».
En fonction des options utilisées, nmap peut aussi rapporter les car-
actéristiques suivantes du système d’exploitation distant : type de
système d’exploitation, séquencement TCP, noms des utilisateurs qui ont
lancé les programmes qui écoutent sur chaque port, le nom DNS, et
d’autres choses encore.
OPTIONS
Les options ayant du sens ensemble peuvent généralement être combinées.
Certaines options sont spécifiques à certains modes d’analyses. nmap
essaye de détecter et de prévenir l’utilisateur en cas de combinaisons
d’options démentes ou non supportées.
Si vous êtes impatient, vous pouvez passer directement à la section des
exemples à la fin, qui illustre l’usage courant. Vous pouvez aussi
lancer nmap -h pour un bref rappel de toutes les options.
TYPES DE SCANS
-sS TCP SYN scan : Cette technique est souvent appelée scan « mi
ouvert », parce qu’on ouvre une connexion TCP incomplète. On
envoie un paquet SYN, comme pour une véritable ouverture de con-
nexion et on attend une réponse. Un SYN ou ACK indique que le
port est sous écoute, en revanche un RST signifie que personne
n’écoute sur ce port. Si un SYN ou ACK est reçu, un RST est
immédiatement envoyé pour interrompre la connexion. Le princi-
pal avantage de cette technique est que peu de sites
l’archiveront. dans leurs logs. Malheureusement vous avez
besoin des privilèges root pour construire ces paquets SYN sur
mesure. C’est le scan par défaut pour les utilisateurs qui ont
les privilèges root.
-sT TCP connect() scan : C’est la forme la plus simple de scan TCP.
L’appel système connect() fournit par votre système d’exploita-
tion est utilisé pour ouvrir une connexion sur tous les ports
intéressants de la cible. Si le port est sur écoute, connect()
réussira, sinon le port est injoignable. Le principal avantage
de cette technique est qu’elle ne nécessite pas de privilèges
particuliers. Presque tous les utilisateurs de toutes les
machines Unix sont libres d’utiliser cet appel système.
Ce type de scan est facilement détectable par l’hôte cible
puisque les logs de la cible montreront un ensemble de connex-
ions et de messages d’erreurs pour les services qui ont accepté
la connexion qui a été immédiatement coupée. C’est le scan par
défaut pour les utilisateurs normaux (non root).
-sF -sX -sN
Stealth FIN, Xmas Tree, ou Null scan modes : Parfois même un SYN
scan n’est pas suffisamment discret. Certains pare-feux et fil-
treurs de paquets regardent les SYNs vers les ports interdits,
et des programmes comme Synlogger et Courtney peuvent détecter
ces scans. En revanche, ces scans avancés devrait pourvoir
passer sans problèmes.
L’idée est qu’un port fermé est requis pour répondre au paquet
de test par un RST, alors que les ports ouverts doivent ignorer
les paquets en question (voir RFC 793 pp 64). Le FIN scan
utilise un paquet FIN nu comme testeur, alors que le scan Xmas
tree active les drapeaux URG et PUSH du paquet FIN. Le scan
Null, désactive tous les drapeaux. Malheureusement Microsoft
(comme d’habitude) a décidé d’ignorer complètement le standard
et de faire les choses à sa façon. C’est pourquoi ce type de
scan ne fonctionne pas contre les systèmes sous Windows95/NT. Le
côté positif est que c’est un bon moyen de distinguer deux
plates-formes. Si le scan trouve des ports ouverts, vous savez
que la machine cible n’est pas sous Windows. Si un -sF,-sX, ou
-sN scan montre tous les ports fermés, et qu’un scan SYN (-sS)
montre tous les ports ouverts, la machine cible fonctionne prob-
ablement sous Windows. Ceci est moins utile depuis que nmap a
son propre détecteur de système d’exploitation intégré. D’autres
systèmes ont le même problème que Windows : Cisco, BSDI, HP/UX,
MVS, et IRIX. La plupart envoient des resets depuis les ports
ouverts au lieu d’ignorer le paquet.
-sP Ping scanning : Parfois vous voulez juste savoir quels sont les
hôtes actifs d’un réseau. Nmap peut le faire pour vous en
envoyant des paquets d’écho ICMP à chaque adresse IP du réseau
spécifié. Les hôtes qui répondent sont actifs. Malheureusement,
certains sites comme microsoft.com, bloquent les paquets d’écho.
Toutefois nmap peut aussi envoyer un paquet TCP ack au port 80
(par défaut). Si vous recevez un RST en retour, la machine est
active. Une troisième technique consiste à envoyer un paquet SYN
et d’attendre un RST ou un SYN/ACK. Pour les utilisateurs non-
root, la méthode connect() est utilisée.
Par défaut (pour les utilisateurs root), nmap utilise la tech-
nique ICMP et ACK en parallèle. Vous pouvez changer l’option -P
décrite plus tard.
Remarquez que le ping est fait par défaut de toutes façons et
seuls les hôtes qui répondent sont analysés. N’utilisez cette
option que si vous voulez faire un balayage de ping sans faire
d’analyse de ports.
-sU UDP scans : Cette méthode est utilisée pour déterminer les ports
UDP (User Datagram Protocol, RFC 768) qui sont ouverts sur
l’hôte Cette technique consiste à envoyer un paquet udp de 0
octet à chaque port de la machine cible. Si on reçoit un message
ICMP « port unreachable », alors le port est fermé. Autrement
nous supposons qu’il est ouvert.
Certaines personne pensent que l’analyse UDP est inutile. J’ai
pour habitude de leur rappeler le trou récent dans rcpbind sous
Solaris. Rpcbind peut dissimuler un port UDP non documenté
quelque part au dessus de 32 770. Comme découvrir un tel port
sans scanner UDP ? Il y a aussi le programme cDc Back Orifice
backdoor qui cache un port UDP configurable sur les machines
Windows. Sans même mentionner tous les services courants qui
utilisent UDP tels que snmp, tftp, NFS, etc.
Malheureusement l’analyse UDP peut être particulièrement longue
puisque la plupart des hôtes implémente une suggestion de la RFC
1812 (section 4.3.2.8) pour limiter le débit des messages
d’erreurs ICMP. Par exemple, le noyau Linux (dans
net/ipv4/icmp.h) limite la génération de message « destination
unreachable » à 80 pour 4 secondes, avec une pénalité de 1/4
secondes si ce nombre est dépassé. Solaris a des limites encore
plus strictes (à peu près 2 messages par seconde) et l’analyse
nécessite encore plus de temps. Nmap détecte cette limite de
débit et ralentit plutôt que d’inonder inutilement le réseau
avec des paquets qui seront ignorés par la machine cible.
Comme d’habitude, Microsoft a ignoré la suggestion RFC et n’a
pas implémenté de limitation de taux dans les machines Win95 et
NT. C’est pourquoi nous pouvons analyser les 65K ports d’une
machine Windows trÃès rapidement. Wahoo !
-sO IP protocol scans : Cette méthode est utilisée pour déterminer
les protocoles IP supportés par l’hôte. La technique consiste Ã
envoyer des paquets IP bruts sans entête de protocole à chaque
protocole spécifié sur la machine cible. Si nous recevons un
message ICMP « protocol unreachable », alors le protocole n’est
pas utilisé. Autrement nous supposons qu’il est ouvert. Remar-
quez que certains hôtes (AIX, HP-UX, Digital UNIX) et les pare-
feux peuvent ne pas renvoyer les messages « protocol unreach-
able », faisant apparaître ouverts tous les protocoles.
Comme cette technique est très similaire à l’analyse des ports
UDP, la limitation du débit ICMP peut aussi apparaître. Mais
comme le champ protocole d’IP n’a que 8 bits, il y a au plus 256
protocoles, donc la durée restera raisonnable.
-sI <zombie host[:probeport]>
scan paresseux : cette méthode de scan avancée autorise un scan
TCP véritablement aveugle de la cible (aucun paquet ne sera
envoyé à la cible depuis votre véritable adresse IP). À la
place, une attaque unilatérale exploite la prédiction de la
séquence d’identificateur de fragmentation IP de l’hôte zombie
pour glaner des informations sur les ports ouverts de la cible.
Les systèmes de détections d’intrusion indiqueront que le scan
provient de la machine zombie spécifiée (qui doit être active et
vérifier un certain nombre de critères). J’envisage de donner
plus d’explication à http://www.insecure.org/nmap/nmap_documen-
tation.html dans un futur proche.
En plus d’être extraordinairement furtive (grâce à sa nature aveugle),
ce scan
permet de s’affranchir des relations de confiance entre machines
fondées sur l’IP. La liste de ports montre les ports ouverts
tels que les voit l’hôte zombie. Aussi, vous pouvez essayer de
scanner une cible en utilisant différents zombies à qui elle
fait confiance (via les règles de filtrage des rou-
teurs/paquets). Évidemment cette information est cruciale pour
orienter l’attaque. Autrement votre test de pénétration va con-
sommer des ressources considérables appartenant au système
intermédiaire, pour s’apercevoir en fin de compte qu’il n’y a
pas de relation de confiance entre l’hôte cible et l’IP de la
machine zombie.
Vous pouvez ajouter un deux-point suivi par le numéro de port si
vous voulez tester un port particulier sur l’hôte zombie pour
les changement IPID. Autrement Nmap utilisera le port qu’il
utilise par défaut pour les pings TCP.
-sA ACK scan : C’est une technique avancée qui est utilisé pour
découvrir les règles des pare-feux et pour savoir si on a
affaire à un pare-feu ou un simple filtreur de paquets qui blo-
quent les paquets SYN entrant.
Ce type d’analyse envoie un paquet ACK (avec un numéro d’acquit-
tement/séquence aléatoire) aux ports spécifiés. Si un RST vient
en retour, les ports sont classés comme non filtrés. Si rien ne
revient (ou alors un message ICMP « unreachable »), les ports
sont classés comme filtrés . Remarquez que nmap n’affiche pas
les ports non filtrés. Aussi, si aucun port n’est affiché dans
la sortie, c’est souvent un signe que tous les tests ont fonc-
tionné (et retourné RSTs). Ce scan ne montrera évidement jamais
de port ouvert.
-sW Window scan : C’est une analyse avancée très similaire au ACK
scan, sauf qu’il peut parfois détecter aussi bien des ports
ouverts que filtrés/non filtrés grâce à une anomalie dans la
taille de la fenêtre TCP rapportée par certains systèmes. Parmi
les systèmes vulnérables se trouvent certaines versions de AIX,
Amiga, BeOS, BSDI, Cray, Tru64 UNIX, DG/UX, OpenVMS, Digital
UNIX, FreeBSD, HP-UX, OS/2, IRIX, MacOS, NetBSD, OpenBSD, Open-
Step, QNX, Rhapsody, SunOS 4.X, Ultrix, VAX, et VxWorks. Voir
les archives de la liste de diffusion nmap-hackers pour une
liste exhaustive.
-sR RPC scan. Cette méthode fonctionne en combinaison avec diverses
méthodes d’analyse de port de nmap. Il prend tous les ports
TCP/UDP ouverts et les inonde de commandes SunRPC NULL pour
déterminer ceux qui sont des ports RPC, et si c’est le cas, le
programme et son numéro de version qui les servent. Vous pouvez
obtenir la même information que ’rpcinfo -p’ même si le portmap-
per cible est derrière un pare-feu (ou protégé par un wrapper
TCP). Les leurres ne fonctionnent pour le moment pas avec les
scans RCP, et je dois ajouter le support pour les leurres dans
les scans UPD RCP.
-sL scan-liste. Cette méthode génère une liste d’IP/nom sans les
pinger ou les scanner. La résolution de nom DNS sera réalisée
sauf si vous utilisez -n.
-b <ftp relay host>
attaque par rebond FTP : Une caractéristique intéressante du
protocole ftp (RFC 959) est le support des connexions proxy. En
d’autres termes, je dois être capable de me connecter depuis
mechant.com au serveur FTP de cible.com et demander que le
serveur envoie un fichier N’IMPORTE OÙ sur Internet. Ça fonc-
tionnait bien en 1985 quand la RFC a été écrite. Mais dans
l’Internet d’aujourd’hui nous ne pouvons pas nous permettre
d’avoir des pirates qui détournent des serveurs ftp et envoient
des données n’importe où dans Internet. J’avais écrit en 1995
que ce défaut du protocole « peut être utilisé pour envoyer des
courriers et nouvelles intracables, matraquer des serveurs de
sites, saturer les disques, essayer de contourner les pare-feux
et généralement être difficile à repérer ». On peut aussi
l’exploiter pour faire un scan des ports TCP depuis un serveur
ftp « proxy ». Ainsi, vous pouvez vous connecter à un serveur
ftp derrière un pare-feu et scanner les ports sans être bloqué
(139 est un bon nombre). Si le serveur ftp autorise la lecture
et l’écriture dans certains répertoires (tel que /incoming),
vous pouvez envoyez des données arbitraires aux ports que vous
avez trouvé ouvert (nmap ne le fera toutefois pas pour vous)
L’argument passé à l’option -b est l’hôte que vous voulez
utiliser comme proxy, dans la notation URL standard. Le format
est : username:password@server:port. Tout sauf server est
optionnel. Pour déterminer les serveurs qui sont vulnérables Ã
cette attaque, vous pouvez voir mon article dans Phrack 51. Une
version mise à jour est disponible à l’URL http://www.inse-
cure.org/nmap.
OPTIONS GÃÉNÃÉRALES
Aucune n’est nécessaire, mais certaines peuvent être très
utiles.
-P0 Ne pas essayer de ping sur les hôtes avant de les analyser.
Cela permet l’analyse des réseaux qui ne permettent pas les
requêtes ou les réponses ICMP à travers leurs pare-feux.
Microsoft.com en est un exemple, et vous devez toujours utiliser
-P0 ou -PT80 pour faire une analyse de port sur microsoft.com.
-PT Utilise TCP "ping" pour déterminer les hôtes actifs. Au lieu
d’envoyer une requête d’écho ICMP et d’attendre une réponse,
nous envoyons des paquets TCP ACK dans le réseau cible (ou con-
tre une machine) et attendons des réponses pour conclure. Les
hôtes devraient répondre par un RST. Cette option préserve
l’efficacité des scan des hôtes qui sont actifs mais autorise
l’analyse des hôtes/réseaux qui bloquent les paquets de ping.
Pour les utilisateurs non root, nous utilisons connect(). Pour
spécifier le port de destination du test utilisez -PT<port num-
ber>. Le port par défaut est 80, car ce port n’est pas souvent
filtré.
-PS Cette option utilise des paquets SYN (demande de connexion) Ã la
place des paquets ACK pour les utilisateurs ROOT. Les hôtes act-
ifs devrait répondre par un RST (ou, rarement par un SYN | ACK).
-PI Cette option utilise un véritable paquet ping (requête d’écho
ICMP). Il recherche les hôtes actifs et aussi regarde les
adresses de diffusion des sous-réseaux. Il y a des adresses IP
qui sont joignable de l’extérieur et qui sont traduites en une
diffusion de paquet entrant dans un réseau. Ça devrait être
supprimé, si découvert, car ça permet un grand nombre d’attaques
de déni de service.
-PP utilise un paquet ICMP de requête d’estampille temporelle (code
13) pour déterminer les hôtes qui écoutent.
-PM Fait la même chose que -PI et -PP sauf qu’il utilise une requête
de masque de sous-réseau (ICMP code 17).
-PB C’est le ping par défaut. Il utilise les balayages ACK ( -PT )
et ICMP ( -PI ) en parallèle. De cette manière, vous pouvez
passer les pare-feux qui ne filtrent que l’un des deux types de
paquets.
-O Cette option active l’identification de l’hôte distant via
l’empreinte TCP/IP. Autrement dit, nmap utilise un ensemble de
techniques pour détecter les subtilités dans la pile réseau du
système d’exploitation de l’ordinateur que vous êtes en train
d’analyser. Il utilise ces informations pour créer une
« empreinte » qui est comparée avec sa base de données
d’empreintes connues (le fichier nmap-os-fingerprints) pour
retrouver le type de système que vous êtes en train d’analyser.
Si Nmap est incapable de deviner le système d’exploitation de la
machine, et que les conditions sont bonnes (par exemple, au
moins un port est ouvert) Nmap fournira une URL que vous pourrez
utiliser pour soumettre si vous connaissez avec certitude le nom
du système d’exploitation à qui appartient cette nouvelle
empreinte. Vous contribuerez ainsi à augmenter le nombre de
systèmes d’exploitations détectable par nmap et la la précision
de la détection. Si vous laissez une adresse IP dans le formu-
laire, la machine pourra être analysée lorsque nous ajouterons
l’empreinte (pour valider que ça marche).
L’option -O active aussi plusieurs autres tests. L’un d’entre
eux est la mesure de « uptime » (durée écoulée depuis le dernier
redémarrage du système), qui utilise l’estampille TCP (RFC 1323)
pour deviner la date du dernier redémarrage de la machine. Ceci
n’est rapporté que pour les machines qui fournissent cette
information.
Un autre test activé par -O est la classification de la prédic-
tion de la séquence TCP. C’est une mesure qui décrit approxima-
tivement la difficulté d’établir une connexion TCP forgée contre
l’hôte distant. C’est utile pour exploiter les relations de con-
fiances fondées sur l’IP source (rlogin, firewall filters, etc)
ou pour cacher la source d’une attaque. La valeur réelle de la
difficulté est calculée sur un échantillon et peut fluctuer. Il
est généralement plus approprié d’utiliser une classification
par nom tel que « worthy challenge » ou « trivial joke ». Ceci
n’est rapporté dans la sortie normale qu’avec l’option -v.
Si le mode verbeux (-v) est activé en même temps que -O, la
génération de séquence IPID est aussi rapportée. La plupart des
machines appartiennent à la classe incrémentale, ce qui signifie
qu’elle incrémente le champ ID dans l’entête IP pour chaque
paquet envoyé. Ce qui les rend vulnérables à la collecte
d’information avancée et aux attaques par usurpation.
-I Active l’analyse TCP reverse ident. Dave Goldsmith dans un mes-
sage à Bugtraq en 1996, a fait remarquer que le protocole ident
(rfc 1413) autorise la découverte du nom d’utilisateur qui
possède un processus connecté via TCP, même si le processus
n’est pas à l’instigateur de la connexion. Vous pouvez ainsi
vous connecter au port http et utiliser identd pour découvrir si
le serveur tourne sous root. Ceci ne peut être fait qu’avec une
connexion TCP complète sur le port cible (i.e. l’option d’anal-
yse -sT). Quand -I est utilisé, l’identd de l’hôte distant est
interrogé pour chaque port ouvert trouvé. Évidemment ça ne fonc-
tionne pas si l’hôte n’utilise pas identd.
-f Cette option oblige les analyses FIN, XMAS, ou NULL Ã utiliser
de petit paquets IP fragmentés. L’idée est de partager l’entête
TCP en plusieurs paquets pour rendre leurs détections plus dif-
ficile par les filtres et les systèmes de détection d’intrusion,
et les autres enquiquineurs qui tentent de détecter ce que vous
êtes en train de faire. Faites attention avec ceci, certains
programmes ont des difficultés avec ces petits paquets. Mon
sniffer favori plante immédiatement lorsqu’il reçoit le premier
fragment de 36 octets. Cette option est inefficace contre les
filtreurs de paquets et les pare-feux qui réassemblent les frag-
ments IP (comme l’option CONFIG_IP_ALWAYS_DEFRAG dans le noyau
Linux), certains réseaux ne peuvent pas supporter cette perte de
performance et ne réassemblent pas les paquets.
Remarquez que je n’ai pas encore fait fonctionner cette option
sur tous les systèmes. Ça marche parfaitement sur les machines
Linux, FreeBSD et OpenBSD et certaines personnes m’ont rapporté
leurs succès avec d’autres saveurs d’Unix.
-v Mode verbeux. C’est une option hautement recommandée qui fournit
beaucoup d’informations sur ce que vous êtes en train de faire.
Vous pouvez l’utiliser deux fois pour un effet plus important.
Utiliser -d une paire de fois si vous voulez vraiment devenir
fou avec le défilement de l’écran !
-h Cette option affiche un bref récapitulatif des options de nmap.
Comme vous l’avez sans doute remarqué, cette page de manuel
n’est pas vraiment un « bref récapitulatif ». :)
-oN <logfilename>
Enregistre les résultats de vos analyses dans un format lisible
par un humain dans le fichier spécifié en argument.
-oX <logfilename>
Enregistre le résultat de vos analyses dans un format XML dans
le fichier spécifié en argument. Ceci permet à des programmes
d’interpréter facilement les résultats de nmap. Vous pouvez
donner l’argument ’-’ (sans les guillemets) pour envoyer la sor-
tie sur la sortie standard (pour les pipelines shells, etc).
Dans ce cas la sortie normale sera supprimée. Regardez atten-
tivement les messages d’erreurs si vous utilisez ceci (ils sont
encore envoyés sur la sortie d’erreur standard). Notez aussi
que -v peut afficher des informations supplémentaires. La
définition de type de document (DTD) définissant la structure de
la sortie XML est disponible à http://www.inse-
cure.org/nmap/data/nmap.dtd .
-oG <logfilename>
Enregistre les résultats de vos analyses dans une forme adaptée
pour grep. Ce format simple fournit toutes les informations sur
une ligne. C’est le mécanisme préféré des programmes qui inter-
agissent avec nmap, mais désormais nous recommandons plutôt la
sortie XML (-oX). Ce format simple ne contient pas autant
d’informations que les autres formats. Vous pouvez donner
l’argument «-» (sans les guillemets) pour envoyer la sortie sur
la sortie standard (pour les pipelines shells, etc). Dans ce
cas la sortie normale sera supprimée. Regardez attentivement
les messages d’erreurs si vous utilisez ceci (ils sont encore
envoyés sur la sortie d’erreur standard). Notez aussi que -v
peut afficher des informations supplémentaires.
-oA <logfilename>
indique à nmap d’enregistrer dans tous les formats majeurs (nor-
mal, grep et XML). Vous fournissez le préfixe du nom de fichier
et les sorties auront respectivement les suffixes .nmap, .gnmap
et .xml .
-oS <logfilename>
enregistre les résultats de vos analyses en format script kiddie
(NdT : C’est un langage dans lequel certaines lettres sont
remplacées par des chiffres/symboles typiquement exemple A
devient 4, E devient 3, etc. Cette langue est utilisée par les
« cowboyz » d’Internet. Cette population folklorique amuse
beaucoup les autres internautes, au point qu’il existe une
option pour eux dans nmap) V0u$ poUV3z dOnn3r l’4rgUm3nt ’-’
(s4ns l3$ guIll3m3ts) poUr 3nvoy3r l4 sOrti3 sUr l4 $orti3
$t4nd4rd.
--resume <logfilename>
L’analyse d’un réseau qui a été annulée par un Ctrl-C, problème
de réseau, etc. peut être reprise en utilisant cette option.
logfilename doit être soit un log normal (-oN) soit un log lisi-
ble par une machine (-oM) d’une analyse avortée. Aucune autre
option ne peut être donnée (ce sont obligatoirement les mêmes
que celles du scan avorté). Nmap démarrera sur la machine après
la dernière machine qui a été analysée avec succès dans le
fichier de log.
--append_output
indique à Nmap d’écrire à la fin des fichiers de sortie au lieu
de les écraser.
-iL <inputfilename>
Lit les spécifications de la cible depuis le fichier spécifié
plutôt que depuis la ligne de commande. Le fichier doit contenir
une liste d’hôtes, d’expressions de réseaux séparées par des
espaces, tabulations ou retour chariots. Utilisez le tiret pour
lire depuis stdin (comme la fin d’un pipe). Voyez la section
spécification de cible pour plus d’information sur les expres-
sions que vous pouvez mettre dans le fichier.
-iR Cette option indique à Nmap de générer ses propres hôtes à anal-
yser par tirage aléatoire :). Ça ne finit jamais. Ça peut être
utile pour un échantillon d’Internet pour estimer diverses
choses. Si vous vous ennuyez, essayez nmap -sS -iR -p 80 pour
rechercher des serveurs web à regarder.
-p <port ranges>
Cette option spécifie les ports que vous voulez essayer. Par
exemple ’-p 23’ n’essayera que le port 23 of de l’hôte cible.
’-p 20-30,139,60000-’ analysera les ports entre 20 et 30, le
port 139, et tous les ports supérieurs à 60000. Le comportement
par défaut est d’analyser tous les ports de 1 à 1024 ainsi que
tous les ports listés dans les fichiers de services fournis avec
nmap. Pour l’analyse par IP (-sO), ceci spécifie le numéro de
protocole que vous voulez analyser
Lorsque vous scannez les ports TCP et UPD vous pouvez spécifier
un protocole particulier en préfixant les numéros de ports par
« T »: ou « U: ». L’effet du spécificateur dure jusqu’à ce que
vous en spécifiez un autre. Par exemple, l’argument « -p
U:53,111,137,T:21-25,80,139,8080 » scannera les ports UDP 53,
111 et 137 ainsi que les ports TCP mentionnés. Remarquez que
pour scanner UDP et TCP, vous devez spécifier -sU et au moins
une analyse TCP (telle que -sS, -sF ou -sT). Si aucune spécifi-
cation de protocole n’est indiquée, les numéros de ports sont
ajoutés à tous les protocoles.
-F Fast scan mode.
Spécifie que vous ne voulez analyser que les ports listés dans
le fichier des services livré avec nmap (ou le fichier des pro-
tocoles pour -sO). C’est évidemment plus rapide que d’analyser
les 65535 ports d’un hôte.
-D <decoy1 [,decoy2][,ME],...>
réalise un scan avec leurres. Du point de vue de l’hôte distant,
les hôtes leurres apparaîtront comme s’ils analysaient aussi le
réseau cible. Ainsi, les systèmes de détection d’intrusion ne
pourront pas savoir parmi l’ensemble des IP qui semblent les
scanner quelle est l’IP qui effectue réellement l’analyse et
quelles IP ne sont en réalité que d’innocent leurres. Bien que
ceci puisse être contré par path tracing, response-dropping, et
d’autres mécanismes actifs, c’est généralement une technique
efficace pour dissimuler son adresse IP.
Séparez chaque hôte-leurre par des virgules, et vous pouvez
optionnellement utiliser ’ME’ (Moi) comme l’un des leurres pour
représenter la position que vous voulez utiliser pour votre
adresse. Si vous utilisez ’ME’ au delà de la 6ème position, la
plupart des détecteurs de scan (même l’excellent scanlogd de
Solar Designer) seront incapables de voir votre adresse IP. Si
vous n’utilisez pas ’ME’, nmap choisira une position aléatoire.
Remarquez que les hôtes leurres doivent être actifs ou vous
risquez accidentellement de faire une inondation SYN sur vos
cibles. Il est aussi presque facile de déterminer qui est en
train de scanner si seul une seule machine est active sur le
réseau. Vous pouvez vouloir utiliser des adresses IP à la place
des noms (ainsi les réseaux leurres ne vous verront pas dans les
logs du serveurs de nom).
Remarquez également que quelques détecteurs (stupides) de scan
bloqueront les hôtes qui tentent des scans de ports. Aussi vous
pouvez par inadvertance bloquer l’accès des machines leurres Ã
la machine cible. Ceci peut provoquer de grave problèmes aux
machines cibles si le leurre s’avère être sa passerelle internet
ou même « localhost ». Il faut donc utiliser prudemment cette
option. La vraie morale de cette histoire est que les
détecteurs de scan ne doivent pas prendre de mesures contre les
machines qui semblent les analyser, car il se peut que ce soit
des leurres !
Les leurres sont utilisés pour le scan initial (en utilisant
ICMP, SYN, ACK, ou autre chose) et pendant la véritable phase de
scan. Les leurres sont aussi utilisés pendant la détection de
l’hôte distant ( -O ).
Il ne faut pas oublier que d’utiliser un trop grand nombre de
leurres peut ralentir le scan et même le rendre imprécis. De
plus certains fournisseurs d’accès à Internet (FAI) filtreront
vos paquets usurpés, bien que la plupart n’applique aucune
restriction sur les paquets usurpés.
-S <adresse_ip>
Dans certaines circonstances, nmap est incapable de déterminer
l’adresse source. Nmap vous avertira si c’est le cas). Dans
cette situation, utilisez -S avec votre adresse IP (ou l’inter-
face depuis laquelle vous voulez envoyer les paquets).
Une autre utilisation possible de ce drapeau est d’usurper le
scan pour faire croire aux cibles que quelquâ€â€™un dâ€â€™autre les
scanne. Imaginez une entreprise qui se croit régulièrement
scannée par un concurrent ! Ce n’est pas l’utilisation première
ni le but principal de ce drapeau. Je pense que c’est juste une
possibilité intéressante pour les personnes qui sont au courant
avant qu’elles n’en accusent d’autres de les scanner. -e est
généralement requis pour ce type d’utilisation.
-e <interface>
indique l’interface réseau à utiliser pour envoyer et recevoir
les paquets. Nmap devrait être capable de détecter ceci mais il
vous préviendra s’il n’y parvient pas.
-g <portnumber>
Spécifie le numéro de port source dans le scan. Beaucoup de
pare-feux et de filtreur de paquets naïfs feront une exception
dans leurs règles pour autoriser le passage des paquets DNS (53)
ou FTP-DATA (20) pour établir une connexion. Évidemment ça
réduit complètement les avantages de sécurité d’un pare-feu
puisque les intrus n’ont qu’à se déguiser en FTP ou DNS en modi-
fiant leur port source. Évidemment pour un scan UDP vous devriez
utiliser 53 en premier et pour les scans TCP vous devriez
utiliser 20 avant 53. Remarquer que ce n’est qu’une requête --
nmap ne le fera que s’il y parvient. Par exemple, vous ne pou-
vez pas faire des analyse en parallèle avec un seul port. Aussi
nmap changera le port source même si vous utilisez -g.
Sachez qu’il y a une petite pénalité de performance sur certains
scans si vous utilisez cette option, parce que j’enregistre par-
fois des informations utiles dans le numéro de port source.
--data_length <nombre>
Normalement nmap envoie des paquets minimalistes qui ne contien-
nent que l’en-tête. Ainsi, les paquets TCP font 40 octets et
les requêtes d’écho ICMP, 28 octets. Cette option indique Ã
Nmap d’ajouter le nombre spécifié d’octets initialisés à 0 à la
plupart des paquets qu’il envoie. La détection de système
d’exploitation (-O) n’est pas affectée, mais la plupart des
paquets de ping et de scan de port le sont. Ça ralentit les
choses, mais ça peut être un peu moins voyant.
-n Dit à Nmap de ne JAMAIS faire de résolution DNS inverse sur une
adresse IP active. Comme DNS est souvent lent, ça peut aider Ã
accélérer les choses.
-R Dit à Nmap de TOUJOURS faire la résolution DNS inverse des
adresses IP cibles. Normalement ceci n’est fait que pour les
machines vivantes.
-r Dit à Nmap DE NE PAS changer aléatoirement l’ordre dans lequel
les ports seront analysés.
--randomize_hosts
Dit à nmap de mélanger chaque groupe comprenant jusqu’à 2048
hôtes avant de les analyser. Ceci rend les scans moins évidents
à de nombreux systèmes de surveillance réseau, particulièrement
quand vous le combinez avec des options pour ralentir le timing
(voir ci-dessous).
-M <max sockets>
Spécifie le nombre maximum de sockets qui seront utilisés en
parallèle pour le scan TCP connect() (celui par défaut). C’est
utile pour ralentir légèrement le scan et éviter de crasher les
machines cibles. Une autre approche consiste à utiliser -sS, qui
est généralement plus facile à gérer pour les machines.
OPTIONS TIMING
généralement nmap parvient à s’ajuster correctement aux car-
actéristiques du réseau et à analyser aussi vite que possible
tout en minimisant la probabilité d’être détecté. Cependant, il
y a des cas où les timings par défaut de Nmap ne correspondent
pas à vos objectifs. Les options suivantes permettent un
contrôle fin des timings :
-T <Paranoid | Sneaky | Polite | Normal | Aggressive | Insane>
Ce sont les différentes politiques de timing pour communiquer de
manière pratique vos priorités à nmap.
Paranoid analyse trÃès lentement dans l’espoir d’éviter d’être
repéré par les système de détection d’intrusion. Il sérialise
tous les scans (pas de scan parallèle) et attend au moins 5 min-
utes entre les envois de paquets.
Sneaky c’est la même chose, sauf qu’il attend 15 secondes entre
les envois de paquets.
Polite essaye de minimiser la charge sur le réseau et de réduire
la probabilité de crasher des machines. Il sérialises les test
et attend au moins 0,4 secondes entre chaque.
Normal c’est le comportement par défaut de Nmap, qui essaye de
s’exécuter aussi vite que possible sans surcharger le réseau ou
oublier des hôtes/ports.
Aggressive ajoute un décompte de 5 minutes par hôte et n’attends
jamais les réponses individuelles plus de 1.25 secondes.
Insane ne convient qu’aux réseaux ultra-rapides où vous ne
risquez par de perdre d’informations. Il ajoute un décompte de
75 secondes et n’attend les réponses individuelles que pendant
0,3 secondes. Il permet de balayer très rapidement les réseaux.
Vous pouvez aussi référencer ces modes par numéro (0-5). Par
exemple, ’-T 0’ donne le mode Paranoid et ’-T 5’ le mode Insane.
Ces modes timings NE devrait PAS être utiliser en combinaison
avec les contrôles de bas niveau donnés ci-dessous.
--host_timeout <millisecondes>
Spécifie la durée que nmap est autorisée à consacrer à l’analyse
d’un hôte unique avant d’abandonner cette IP. Par défaut il n’y
a pas de temps limite pour un hôte.
--max_rtt_timeout <millisecondes>
Spécifie la durée maximale que nmap peut laisser s’écouler en
attendant une réponse à ses tests avant de retransmettre ou de
laisser tomber. La valeur par défaut est 9 000.
--min_rtt_timeout <millisecondes>
Quand les hôtes cibles commencent à établir un modèle de réponse
très rapidement, nmap diminuera la durée accordée par test.
Ceci augmente la vitesse du scan, mais peut conduire à la perte
de paquets quand une réponse prend plus de temps que d’habitude.
Avec ce paramètre vous pouvez garantir que nmap attende au moins
une certaine durée avant de laisser tomber un test.
--initial_rtt_timeout <millisecondes>
Spécifie le décompte du test initial. Ce n’est généralement
utile que lors de l’analyse d’hôte derrière un pare-feu avec
-P0. Normalement nmap obtient de bonnes estimations à partir du
ping et des premiers tests. Le mode par défaut est 6 000.
--max_parallelism <nombre>
Spécifie le nombre maximum de scans que nmap est autorisé Ã
mener en parallèle. Positionner ceci à 1 signifie que nmap
n’essayera jamais de scanner plus d’un port à la fois. Ce nombre
affecte aussi les autres scans parallèle comme le balayage de
ping, RPC scan, etc.
--scan_delay <millisecondes>
Spécifie la durée minimum que nmap doit laisser s’écouler entre
ses envois. C’est utile pour réduire la charge du réseau ou pour
ralentir le débit du scan afin de ne pas atteindre le seuil de
déclenchement des systèmes de détection d’intrusion.
SPÃÉCIFICATION DE CIBLE
Tout ce qui n’est pas une option ou un argument d’option est traité par
nmap comme une spécification d’hôte. Le cas le plus simple et une
liste de nom d’hôtes ou d’adresse IP sur la ligne de commande. Si vous
voulez analyser un sous réseau d’adresses IP vous pouvez ajouter
â€â€™/maskâ€â€™ au nom d’hôtes mask doit être compris entre 0 (scanner tout
internet) et 32 (scanner un seul hôte). Utiliser /24 pour analyser des
adresses de classe ’C’ et /16 pour la classe ’B’.
Nmap utilise une notation puissante pour spécifier une adresse IP en
utilisant des listes/intervalles pour chaque élément. Ainsi vous pou-
vez analyser tout un réseau de classe B 192.168.*.* en spécifiant
’192.168.*.*’ ou ’192.168.0-255.0-255’ ou même
’192.168.1-50,51-255.1,2,3,4,5-255’. Et bien sûr, vous pouvez utiliser
la notation mask : ’192.168.0.0/16’. Elles sont toutes équivalentes Si
vous utilisez des astérisques (’*’), souvenez-vous que la plupart des
shells nécessitent que vous les précédiez par des anti-slash ou que
vous les protégiez par des guillemets.
Une autre chose intéressante à faire et de découper Internet : au lieu
de scanner les hôtes dans une classe ’B’, scanner ’*.*.5.6-7’ pour
analyser toutes les adresses IP se terminant par .5.6 ou .5.7. Pour
plus d’informations sur la spécification des hôtes à analyser, voyez la
section exemples.
EXEMPLES
Voici quelques exemples d’utilisation de nmap du plus simple au plus
compliqué. Remarquez que les noms et adresses sont utilisées pour ren-
dre les choses plus concrètes. À leur place vous devriez substituer les
noms et adresses de votre propre rÃéseau. Je ne pense pas que l’analyse
de ports d’autres réseaux soit illégale, ni que l’analyse de ports doit
être considérée par les autres comme une attaque. J’ai analysé des
centaines de milliers de machines et je n’ai reçu qu’une seule plainte.
Mais je ne suis pas juriste et certaines personnes pourraient être
ennuyées par les tests de nmap. Aussi demandez préalablement la per-
mission ou utilisez nmap à vos risques et périls.
nmap -v cible.exemple.com
Cette option analyse tous les ports TCP réservés sur la machine
cible.exemple.com . Le -v signifie d’activer le mode verbeux.
nmap -sS -O cible.exemple.com/24
Envoie un scan SYN furtif contre chaque machine active parmi les 255
machines de classe ’C’ qui sont sur cible.exemple.com. Il essaye aussi
de déterminer quel système d’exploitation fonctionne sur chaque hôte.
Ceci nécessite les privilèges root en raison du scan SYN et de la
détection de système d’exploitation.
nmap -sX -p 22,53,110,143,4564 198.116.*.1-127
Envoie un scan Xmas tree à la première moitié de chacun des 255 sous-
réseaux de l’espace d’adresse de classe B 198.116. Nous sommes en train
de tester si les systèmes font fonctionner sshd, DNS, pop3d, imapd, ou
port 4564. Remarquez que les scan Xmas ne fonctionnent pas contre les
machines Microsoft en raison de leur pile TCP déficiente. Le même
problème se produit aussi avec les machines CISCO, IRIX, HP/UX, et
BSDI.
nmap -v --randomize_hosts -p 80 â€â€™*.*.2.3-5â€â€™
Plutôt que de se concentrer sur une plage spécifique d’IP, il est par-
fois intéressant de découper l’ensemble d’Internet et d’analyser un
petit échantillon de chaque tranche. Cette commande trouve tous les
serveurs web sur des machines dont l’adresse IP se termine par .2.3,
.2.4 ou .2.5 . Si vous êtes root, vous pouvez aussi ajouter -sS. Vous
trouverez plus de machine intéressantes en commençant à 127, aussi vous
utiliserez ’127-222’ à la place de la première astérisque car cette
section possède une plus grande densité de machine intéressantes.
host -l company.com | cut â€â€™-d â€â€™ -f 4 | ./nmap -v -iL -
Fait un transfert DNS pour découvrir les hôtes de company.com et
utiliser leurs adresses IP pour alimenter nmap. Les commandes ci-
dessus sont pour mon ordinateur GNU/Linux. Vous pouvez avoir besoin
d’autres commandes/options pour d’autres systèmes d’exploitations.
BOGUES
Bogues ? Quels bogues ? Envoyez-moi tout ce que vous trouverez. Les
patchs sont les bienvenus. Souvenez-vous que vous pouvez aussi envoyer
les empreintes de nouveaux systèmes d’exploitation pour enrichir la
base de données. Si une empreinte appropriée est trouvée, Nmap
affichera l’URL à laquelle vous pourrez l’envoyer.
AUTEUR
Fyodor <fyodor@insecure.org>
DISTRIBUTION
La dernière version de nmap peut être obtenu depuis http://www.inse-
cure.org/nmap/
nmap est (C) 1995-2001 par Insecure.Com LLC
libpcap est aussi distribuée avec nmap. Il est copyrighté par Van
Jacobson, Craig Leres et Steven McCanne, tous du Lawrence Berkeley
National Laboratory, University of California, Berkeley, CA. La version
distribuée avec nmap peut être modifiée, les sources d’origine sont
disponibles à ftp://ftp.ee.lbl.gov/libpcap.tar.Z .
Ce programme est un logiciel libre, vous pouvez le redistribuer et/ou
le modifier sous les termes de la GNU General Public License telle que
publiée par par la Free Software Foundation ; Version 2. Ceci garantit
votre droit d’utiliser, modifier et redistribuer Nmap sous certaines
conditions. Si cette licence est inacceptable pour vous, Insecure.Org
pourrait éventuellement vendre d’autres licences. (contacter fyo-
dor@dhp.com).
Les sources sont fournies avec ce logiciel car nous croyons que les
utilisateurs ont le droit de savoir exactement ce que fait un programme
avant de le lancer. Ceci vous permet aussi d’auditer le logiciel pour
rechercher des trous de sécurité (aucun n’a été trouvé jusqu’Ã
présent).
Le code source vous permet aussi de porter Nmap vers de nouvelles
plates-formes, corriger des bogues et ajouter de nouvelles caractéris-
tiques. Vous êtes vivement encouragé à envoyer vos modifications Ã
fyodor@insecure.org pour une éventuelle incorporation dans la distribu-
tion principale. En envoyant ces modifications à Fyodor ou à quelqu’un
de la liste de diffusion de développement de insecure.org, il est sup-
posé que vous offrez à Fyodor le droit illimité et non exclusif de
réutiliser, modifier et relicencier le code. C’est important parce que
l’impossibilité de relicencier le code a provoqué des problèmes dévas-
tateurs dans d’autres projets de logiciel libre (comme KDE et NASM).
Nmap sera toujours disponible en Open Source. Si vous désirez
spécifier des conditions particulières de licence pour vos contribu-
tions, dites-le nous simplement quand vous nous les envoyez.
Ce programme est distribué dans l’espoir d’être utile, mais SANS AUCUNE
GARANTIE même la garantie implicite relative à la QUALITÃÉ MARCHANDE ou
Dâ€â€™APTITUDE ÃÀ UNE UTILISATION PARTICULIÃÈRE. Voir la licence GPL (c’est
le fichier COPYING de la distribution nmap.
Remarque : Nmap a déjà fait planter certaines applications, des piles
TCP/IP et même des systèmes d’exploitations mal écrits. Par conséquent
Nmap ne devrait jamais Ãêtre utilisÃé contre des systÃèmes qui ont une
mission critique à moins que vous ne soyez prêt à souffrir d’une
éventuelle interruption de service. Nous reconnaissons ici que nmap
peut crasher vos systèmes et réseaux mais nous ne sommes pas respons-
ables des dégâts que Nmap pourrait provoquer.
En raison du léger risque de crashs et parce que quelques personnes mal
intentionnées utilisent nmap pour les reconnaissances préliminaires Ã
une attaque, certains administrateurs deviennent furieux et se plaig-
nent quand leurs systèmes sont scannés. C’est pourquoi il est plus sage
de demander la permission avant de lancer l’analyse d’un réseau.
Nmap ne devrait jamais être lancé avec des privilèges (par exemple suid
root) pour des raisons de sécurité.
Toutes les versions de Nmap postérieures à la 2.0 sont compatibles an
2000. Il n’y a aucune raison de penser que les versions antérieures ont
des problèmes, mais nous ne les avons pas testées.
TRADUCTION
Sébastien Blanchet, 2002 <sebastien.blanchet AT free.fr>
RELECTURE
Gérard Delafond
NMAP(1)
Man(1) output converted with
man2html