Content-type: text/html
Manpage of NMAP
NMAP
Section: User Commands (1)
Index
Return to Main Contents
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 utilisable
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 » 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 rapporter 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 à 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 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 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'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 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 connexions
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 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é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 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 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 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'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. 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'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_documentation.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 routeurs/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 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 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 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,
OpenStep, 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 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 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 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 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.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 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 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 connect(). 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é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 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 connexion 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 fonctionne 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 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 fragments 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 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.
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 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 (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 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 lisible 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 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 é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écification 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-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'interface 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 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é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 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 à 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 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 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 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éalablement 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'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.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
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 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 relicencier 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 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 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 reconnaissances préliminaires à une
attaque, certains administrateurs 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
RELECTURE
Gérard Delafond
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- OPTIONS
-
- SPÉCIFICATION DE CIBLE
-
- EXEMPLES
-
- BOGUES
-
- AUTEUR
-
- DISTRIBUTION
-
- TRADUCTION
-
- RELECTURE
-
This document was created by
man2html,
using the manual pages.
Time: 20:41:58 GMT, July 10, 2005