Nmap network security scanner man page (French translation)
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, bal
ayage 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 dis
tant via l'empreinte TCP/IP, l'analyse furtive, le délai
dynamique et les calculs de retransmission, l'analyse par
allèle, détection de hôtes inactifs via des pings par
allè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 utilisable par des utilisateurs non-root. Mal
heureusement, 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 », « fil
tered » ou « unfiltered ». « Open » signifie que la
machine cible accepte les connexions sur ce port. « Fil
tered » signifie 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 rap
porter les caracté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 à cer
tains 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 connexion 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 principal 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 util
isateurs 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'exploitation 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 tech
nique 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 mon
treront un ensemble de connexions et de messages
d'erreurs pour les services qui ont accepté la con
nexion 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 : Par
fois même un SYN scan n'est pas suffisamment dis
cret. Certains pare-feux et filtreurs 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épon
dre au paquet de test par un RST, alors que les
ports ouverts doivent ignorer les paquets en ques
tion (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. Mal
heureusement 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 Win
dows95/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 probablement 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 Win
dows : Cisco, BSDI, HP/UX, MVS, et IRIX. La plu
part 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 con
nect() est utilisée.
Par défaut (pour les utilisateurs root), nmap
utilise la technique 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'anal
yse de ports.
-sU UDP scans : Cette méthode est utilisée pour déter
miner 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 partic
uliè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 Win
dows 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 sup
posons qu'il est ouvert. Remarquez que certains
hôtes (AIX, HP-UX, Digital UNIX) et les pare-feux
peuvent ne pas renvoyer les messages « protocol
unreachable », faisant apparaître ouverts tous les
protocoles.
Comme cette technique est très similaire à l'anal
yse 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étec
tions 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_documenta
tion.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 consommer 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 parti
culier 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 bloquent les paquets
SYN entrant.
Ce type d'analyse envoie un paquet ACK (avec un
numéro d'acquittement/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 fonctionné
(et retourné RSTs). Ce scan ne montrera évidement
jamais de port ouvert.
-sW Window scan : C'est une analyse avancée très simi
laire 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 ver
sions de AIX, Amiga, BeOS, BSDI, Cray, Tru64 UNIX,
DG/UX, OpenVMS, Digital UNIX, FreeBSD, HP-UX, OS/2,
IRIX, MacOS, NetBSD, OpenBSD, OpenStep, QNX, Rhap
sody, 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 portmapper 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 sup
port 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 sup
port 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 fonctionnait 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 nou
velles 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:pass
word@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.insecure.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 act
ifs. 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 contre 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 con
nect(). Pour spécifier le port de destination du
test utilisez -PT<port number>. 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 actifs devrait répon
dre 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 act
ifs 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 tem
porelle (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 dis
tant 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 con
tribuerez 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 formulaire, 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édiction de la séquence TCP. C'est une
mesure qui décrit approximativement la difficulté
d'établir une connexion TCP forgée contre l'hôte
distant. C'est utile pour exploiter les relations
de confiances 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 message à 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 con
nexion TCP complète sur le port cible (i.e.
l'option d'analyse -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 difficile 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 atten
tion avec ceci, certains programmes ont des diffi
culté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 fragments IP (comme l'option
CONFIG_IP_ALWAYS_DEFRAG dans le noyau Linux), cer
tains 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 par
faitement 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 recom
mandé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 vrai
ment 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 for
mat 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'argu
ment '-' (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 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. La définition de type de document
(DTD) définissant la structure de la sortie XML est
disponible à http://www.insecure.org/nmap/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 interagissent
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 sor
tie d'erreur standard). Notez aussi que -v peut
afficher des informations supplémentaires.
-oA <logfilename>
indique à nmap d'enregistrer dans tous les formats
majeurs (normal, 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 folk
lorique 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 lisible par
une machine (-oM) d'une analyse avortée. Aucune
autre option ne peut être donnée (ce sont obliga
toirement 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 com
mande. 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 expressions que vous pouvez
mettre dans le fichier.
-iR Cette option indique à Nmap de générer ses propres
hôtes à analyser par tirage aléatoire :). Ça ne
finit jamais. Ça peut être utile pour un échantil
lon 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 pou
vez 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 protocoles 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-drop
ping, 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 inon
dation 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 (stupi
des) 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 pen
dant la véritable phase de scan. Les leurres sont
aussi utilisés pendant la détection de l'hôte dis
tant ( -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'interface depuis laque
lle 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 modifiant 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 pouvez 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 parfois des informations
utiles dans le numéro de port source.
--data_length <nombre>
Normalement nmap envoie des paquets minimalistes
qui ne contiennent 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étec
tion 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 ralen
tir 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 caracté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 minutes 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 à con
sacrer à l'analyse d'un hôte unique avant d'aban
donner 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'intru
sion.
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 pouvez 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 Inter
net : 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 sec
tion exemples.
EXEMPLES
Voici quelques exemples d'utilisation de nmap du plus sim
ple au plus compliqué. Remarquez que les noms et adresses
sont utilisées pour rendre 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éalable
ment la permission 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 parfois intéressant de découper l'ensemble d'Inter
net 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 com
pany.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 comman
des/options pour d'autres systèmes d'exploitations.
BOGUES
Bogues ? Quels bogues ? Envoyez-moi tout ce que vous trou
verez. 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.insecure.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 Cali
fornia, 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 redis
tribuer et/ou le modifier sous les termes de la GNU Gen
eral 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 fyodor@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éristiques. Vous êtes vivement encouragé
à envoyer vos modifications à fyodor@insecure.org pour une
éventuelle incorporation dans la distribution principale.
En envoyant ces modifications à Fyodor ou à quelqu'un de
la liste de diffusion de développement de insecure.org, il
est supposé 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 reli
cencier le code a provoqué des problèmes dévastateurs 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 contributions, 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 rela
tive à la QUALITÉ MARCHANDE ou D'APTITUDE À UNE UTILISA
TION PARTICULIÈRE. Voir la licence GPL (c'est le fichier
COPYING de la distribution nmap.
Remarque : Nmap a déjà fait planter certaines applica
tions, des piles TCP/IP et même des systèmes d'exploita
tions mal écrits. Par conséquent Nmap ne devrait jamais
être utilisé contre des systèmes qui ont une mission cri
tique à 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 responsables 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 recon
naissances préliminaires à une attaque, certains adminis
trateurs deviennent furieux et se plaignent 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