Nmap network security scanner
NOM
nmap - Network exploration tool and security scanner
SYNOPSIS
nmap [Type(s) de scan] [Options] <h⌠te ou rΘseau #1 ... [#N]>
DESCRIPTION
Nmap est conτu pour permettre aux administrateurs systΦme
ainsi qu'aux personnes curieuses de scanner de larges rΘseaux pour
dΘterminer quels sont les h⌠tes connectΘs et quels services ils offrent.
Nmap supporte un grand nombre de techniques de scan tel que:
UDP, TCP connect(), TCP SYN (mi-ouvert), ftp proxy (bounce attack),
reverse-ident, ICMP (ping sweep), FIN, ACK sweep, Xmas tree, SYN sweep,
et NULL scan. Voir la section types de scan pour plus de dΘtails.
Nmap possΦde aussi un certain nombre de fonctions avancΘs telles que
la dΘtection de l'OS distant grΓce α l'empreinte digitale TCP/IP, le
stealth scanning, le dynamic delay, le calcul
de retransmission, le scan en parallΦle, la dΘtection d'h⌠tes Θteints
grΓce au ping en parallΦle, les scans avec leurres,la dΘtection de ports
filtrΘs, le scan RPC direct (sans-portmap), le scan avec fragmentations
de paquets et une flexibilitΘ dans l'Θcriture des cibles et des ports.
Des efforts ont ΘtΘ fournis pour faciliter l'utilisation
aux utilisateurs n'ayant pas d'accΦs root. Malheureusement,
de nombreuses interfaces de kernels (ex: raw sockets) nΘcessitent
les privilΦges root.
Le rΘsultat de l'exΘcution de nmap nous donne normalement
une liste de ports intΘressants sur la machine scannΘe.
Nmap donne toujours le nom du service correspondant
(s'il est connu), le numΘro, l'Θtat, et le protocole. L'Θtat
est soit 'open', 'filtered', 'unfiltered'. Open signifie que
la cible acceptera - 'accept()' - des connexions sur ce port.
Filtered signifie qu'il y a un firewall/filtre ou un obstacle
qui couvre ce port et qui empΩche nmap de dΘterminer s'il
est ouvert ou non. Unfiltered signifie que le port est connu par nmap
pour Ωtre fermΘ et qu'aucun firewall/filtre n'apparaεt interfΘrer avec
nmap. Les rΘsultats 'unfiltered' sont courants et sont affichΘs
uniquement quand la plupart des ports sont trouvΘs α l'Θtat filtrΘs.
En fonction des options utilisΘes, les caractΘristiques suivantes
peuvent Ωtre affichΘes :
Le type d'OS.
Le sΘquencement TCP.
Les noms des utilisateurs sous lesquels fonctionnent les programmes
ayant ouverts des ports.
Le nom DNS.
Si l'h⌠te est une adresse de smurf.
...
OPTIONS
Les options dont la combinaison paraεt logique peuvent
gΘnΘralement Ωtre utilisΘes ensemble dans nmap. Certaines
options sont spΘcifiques α certains modes de scans.
nmap essaie de prΘvenir quand vous spΘcifiez des
options mal placΘes ou ne fonctionnant pas.
Si vous Ωtes impatients vous pouvez passer directement
α la section exemples, α la fin, elle vous montre les
utilisations les plus frΘquentes. Vous pouvez aussi
taper nmap -h pour avoir une rΘfΘrence des options.
Types de scan
-sT
TCP connect() scan:
C'est le type le plus basique des scans TCP. L'appel
systΦme connect() est utilisΘ pour ouvrir un port sur l'h⌠te distant.
Si le port est en Θcoute, connect() fonctionnera, autrement,
le port ne sera pas accessible. Un gros avantage de cette technique est
qu'elle ne nΘcessite pas les privilΦges root. N'importe quel utilisateur
sur la plupart des UNIX est libre d'utiliser cette option.
Ce type de scan est, par contre, facilement dΘtectable.
Les logs du systΦme montreront des connections et des
erreurs rΘsultantes au service qui accept() les connections.
En effet, elles seront rapidement arrΩtΘes par le serveur suite au
connect() car le client n'enverra pas d'autres demandes pour cette
connexion ouverte.
-sS
TCP SYN scan:
Cette commande fait souvent rΘfΘrence α la technique de
scan "mi-ouvert" (half open), car vous n'ouvrez pas
une connexion TCP complΦte. Vous envoyez un paquet avec
le flag SYN, comme pour faire la requΩte d'une connexion
normale et vous attendez la rΘponse.
Si vous recevez comme rΘponse un SYN/ACK, c'est que
le port est en Θcoute, donc ouvert.
Un paquet avec le flag RST signifie que le port n'est
pas en Θcoute. Si un SYN/ACK est reτu, alors quelques
secondes plus tard vous recevrez un RST (le kernel de
l'OS fait cela pour nous) . Cela ne sera pas le cas si
vous avez rΘpondu au prΘcΦdent SYN/ACK.
Le premier avantage de ce type de scan est qu'il
ne sera pas la plupart du temps dΘtectΘ par la cible.
Malheureusement, les privilΦges root seront nΘcessaires.
-sF -sX -sN
Stealth (scan de type "mi-ouvert") FIN, Xmas Tree,
et le mode de NULL scan : certaines fois, le scan de type SYN
n'est plus suffisamment clandestin. Certains
firewall, IDS, filtreur de paquets repΦrent
ce type de scans sur des ports restreints. Des programmes
tel que Synlogger et Courtney sont connus pour cela.
D'un autre c⌠tΘ, ces types de scans auront de moins bon
rΘsultats, et pourront passer α c⌠tΘ de ports ouverts.
L'idΘe est que les ports fermΘs doivent nous rΘpondre par
un RST, alors que ceux ouverts ne doivent pas prendre en
compte le paquet en question (RFC 793 pp 64).
Le scan FIN utilise un paquet avec le fag FIN, alors que
l'Xmas lui utilise la combinaison des flags FIN, URG et
PUSH. Le scan NULL ne met aucun flag.
Comme d'habitude, microsoft ne respecte pas du tout les
rΦgles et fait α sa maniΦre. A cause de cela, ces types de
scans ne fonctionneront pas face α des machines de type
windows95/NT.
D'une autre maniΦre, c'est un bon moyen pour faire la
distinction entre des machines windows ou non. Si le scan
trouve des ports ouverts, vous pouvez alors Ωtre s√r que
ce n'est pas un windows. Si un scan de type -sF, -sX ou
encore -sN vous montre tous les ports fermΘs,
et qu'avec un -sS il y en a d'ouverts, alors vous pouvez
Ωtre quasiment s√r que c'est un windows. Ceci est moins utile
toutefois, depuis que nmap possΦde un module de "remote OS
identification" par le "TCP/IP fingerprinting". Windows n'est
pas non plus le seul α travailler de cette maniΦre.
Cisco, BSDI, HU/UX, MSV et IRIX renvoyent aussi des RST
depuis leurs ports ouverts alors qu'ils devraient simplement
jeter les paquets et ne pas en tenir compte.
-sP
Ping scanning : quelques fois, vous avez besoin de connaεtre
uniquement si tel ou tel h⌠te est lα ou non. Nmap fait cela
en envoyant une requΩte 'ICMP echo' α chaque IP de la liste.
Les h⌠tes qui rΘpondent sont prΘsents. Malheureusement, certains
sites tel que microsoft.com ne respectent pas cette rΦgle et bloquent
l'ICMP en entrΘe. De cette maniΦre nmap ne peut envoyer que des
paquets avec des TCP ack en direction du port 80 (par dΘfaut).Si
nous avons un RST en rΘponse alors l'h⌠te est prΘsent. Une autre
technique est d'envoyer un paquet SYN et d'attendre un RST ou
SYN/ACK. Les utilisateurs n'ayant pas le root,
utiliseront la mΘthode connect().
Par dΘfaut (pour les utilisateurs root) nmap utilise α la fois
la technique ICMP et ACK en parallΦle. Vous pouvez changer cela
grΓce α l'option -P dΘcrite plus bas.
Il faut savoir que le ping est effectuΘ par dΘfaut, et qu'uniquement
les h⌠tes qui rΘpondent sont scannΘs. Utilisez cette mΘthode
uniquement si vous voulez faire un ping sweep sans aucun port scan.
-sU UDP scan: Cette mΘthode est utilisΘe pour connaεtre tous
les ports UDP (User Datagram Protocol, RFC 768) ouverts sur la
machine. La technique consiste α envoyer un paquet UDP de 0 octets sur
chaque ports de la machine. Si nous recevons un message "ICMP port
unreachable", alors le port est fermΘ. Autrement, nous considΦrerons
qu'il est ouvert.
Certaines personnes considΦrent que le scan UDP est inutile.
J'ai pour habitude de leur rappeler un bug rΘcent sur
Solaris concernant rpcbind.
Rpcbind peut Ωtre cachΘ quelque part sur un port UDP
au dessus de 32770. Donc si le port 111 est
bloquΘ par le firewall, ce n'est pas grave; Vous pouvez chercher
sur les 30 000 ports plus hauts.
Avec un scanner UDP c'est possible. C'est aussi
le cas du cheval de troie du cDc (BackOrifice) qui est en Θcoute
sur un port UDP configurable. Il n'est pas nΘcessaire de mentionner
non plus les services trΦs couramment vulnΘrables qui Θcoutent aussi
sur de l'UDP tel que snmp, tftp, NFS, etc...
Malheureusement, le scanning UDP est quelques fois extrΩmement
lent depuis que quelques h⌠tes implΘmentent une suggestion de
la RFC 1812 (section 4.3.2.8) qui limite la vitesse de transmission
des messages d'erreur ICMP. Par exemple, le Kernel de Linux limite
les messages "destination unreachable" (dans net/ipv4/icmp.h) α 80
toutes les 4 secondes, avec 1/4 de seconde de pΘnalitΘ si cela excΦde.
Solaris possΦde des limites encore plus strictes (α peu prΦs 2 messages
par seconde) et donc cela prend encore beaucoup plus de temps
pour les scanner.
nmap dΘtecte cette limite et ralentie en s'accordant
α celle-ci, plut⌠t que d'innonder le rΘseau avec des paquets
qui seront ignorΘs par la cible.
Comme d'habitude, Microsoft ignore la suggestion de la RFC
et donc ne fait pas de limitation, ce qui α pour avantage
de pouvoir scanner d'un trait les 64K port d'une machine
de type windows. Wahoo!!
-sR RPC scan. Cette mΘthode fonctionne avec la plupart des
combinaisons de scan. Il prend les divers ports TCP et UDP et
les inondent sous des commandes SunRPC NULL avec espoir
de dΘcouvrir s'ils sont des ports RPC et si oui, il essaie de
savoir quel est le programme derriΦre et sa version.
De cette maniΦre vous pouvez obtenir les mΩmes informations que
'rpcinfo -p' mΩme si la cible est derriΦre un firewall (ou si
elle possΦde un wrapper). Decoy (voir ci-dessous) ne fonctionne
pas avec le scan RPC, mais, un jour viendra ou je l'ajouterai.
-b <ftp relay host>
FTP bounce attack : Une fonctionnalitΘ intΘressante du protocole
ftp (RFC 959) est le support du proxy pour les connexions ftp.
En d'autres mots, je dois Ωtre capable de me connecter depuis
evil.com sur le serveur ftp de cible.com et de demander α celui-ci
d'envoyer un fichier N'IMPORTE o∙ sur Internet! En fait cela
devait bien fonctionner en 1985 quand la RFC a ΘtΘ Θcrite.
Mais sur l'Internet d'aujourd'hui, il n'est plus possible
que des gens 'hijack' (=dΘtournent) des serveurs ftp pour disperser
les donnΘes α travers l'Internet. Comme *Hobbit* l'a Θcrit en
1995, cette faiblesse du protocole "peut permettre de poster
des mails, news totalement intraτables, remplir jusqu'α
saturation des disques, et gΘnΘralement Ωtre gΩnant et
Ωtre plut⌠t difficiles α tracer". Nous allons utiliser
donc cette faille pour, "surprise, surprise...", scanner
des ports TCP depuis un serveur ftp "proxy". De cette
maniΦre, nous pouvons scanner des ports qui sont
gΘnΘralement bloquΘs (139 est un bon choix). Si le
serveur ftp permet la lecture, Θcriture dans un
rΘpertoire (ex: /incoming), alors, il vous est possible
d'envoyer des donnΘes sur les ports trouvΘs ouverts
(nmap ne fait pas cela pour vous).
Les arguments donnΘs α l'option 'b' sont les serveurs que
vous souhaitez utiliser comme proxy, en utilisant
la notation standard d'URL. Le format est:
pseudo:pass mot@serveur:port. Tout sauf serveur
est optionnel. Pour dΘterminer quels sont les h⌠tes vulnΘrables,
vous pouvez lire mon article dans Phrack 51. Et une version
plus rΘcente est prΘsente sur le site de nmap
(http://www.insecure.org/nmap/).
OPTIONS GENERALES
Aucunes d'entre elles ne sont obligatoires, mais elles
sont parfois trΦs utiles.
-P0 N'essaie pas de "pinger" les h⌠tes avant de les scanner.
Ceci permet de scanner des rΘseaux qui n'accΦptent pas les requΩtes
(ou rΘponses) ICMP echo α traverser leur firewall.
Microsoft est un exemple qui utilise ce type de filtrage dans
son rΘseau, donc il vous faudra utiliser -P0 ou encore
-PT80 si vous voulez le scanner.
Mais de toute maniΦre Microsoft n'est qu'une petite
crotte de nez.
-PT Utilise la technique de ping TCP pour repΘrer
les h⌠tes qui sont prΘsents.
A la place d'envoyer des requΩtes ICMP echo et d'attendre
une rΘponse, nous envoyons des paquets TCP ACK α travers
le rΘseau (ou machine) cible et attendons les rΘponses.
Les h⌠tes prΘsents doivent rΘpondre par un RST.
Ceci nous permet de passer α travers des rΘseaux
n'autorisant pas le ping. Les utilisateurs n'ayant
pas d'accΦs root utiliserons connect(). Pour spΘcifier
le port destination pour faire sa requΩte, nous
utilisons -PT<numerodeport>. Le port par dΘfaut
est le 80 car c'est celui qui est le moins souvent filtrΘ.
-PS Cette option utilise les paquets SYN
(requΩte de connexion) α la place des paquets ACK
(pour les utilisateurs root). Les h⌠tes prΘsents doivent
rΘpondre par un RST, et (trΦs rarement par un SYN|ACK).
-PI Cette option utilise le vrai ping (requΩtes ICMP echo).
Il regarde quels sont les h⌠tes prΘsents et cherche
des adresses qui autorisent les broadcasts de sous-rΘseaux sur
votre rΘseau. Ce sont des adresses IP extrΩmement accessibles
et qui transmettent les paquets entrants en des broadcasts en
direction des ordinateurs du sous rΘseau.
Si des adresses de ce type sont trouvΘes, elles doivent aussit⌠t
Ωtre ΘliminΘes car elles permettent de nombreux types de dΘnie de
service (DoS), tel que les attaques Smurf.
-PB Ceci est le ping utilisΘ par dΘfaut dans nmap. Il utilise
α la fois le paquet ACK ( -PT ) et ICMP ( -PI )
en parallΦle. De cette maniΦre vous pouvez atteindre α la fois
des rΘseaux qui en filtrent un (mais pas les deux).
-O Cette option active l'authentification par l'empreinte
TCP/IP. En d'autres mots, il utilise quelques techniques pour
repΘrer des subtilitΘs de la couche rΘseau de l'ordinateur
scannΘ. Il utilise les informations recueillies "empreinte
digitale" pour les comparer α une base de donnΘe d'empreintes
connues (le fichier nmap-os-fingerprints) et peut ainsi
voir quel type de systΦme nous sommes en train de scanner.
Si vous trouvez une machine mal diagnostiquΘe et qui a au
minimum un port ouvert, il serait trΦs utile que vous
m'envoyez les dΘtails (du type: OS blabla version xxx
was detected as OS bloblo version ZZZ). Si vous trouvez
une machine avec au moins un port d'ouvert, et sur laquelle
nmap rΘpond "unknown operating system", alors, il serait
utile que vous envoyez l'adresse IP avec l'OS et la version
de celui-ci. Si vous ne pouvez envoyer l'adresse IP, la
derniΦre bonne chose que vous puissiez faire est d'envoyer
le rΘsultat de l'execution de nmap sur l'h⌠te donnΘ
avec l'option -d (ceci doit vous donner trois fichiers)
ainsi que le systΦme d'exploitation et sa version. En faisant
cela, vous contribuez α augmenter la base de donnΘes
d'empreintes connues par nmap ce qui sera mieux
pour tout le monde.
-I Met en action la fonction 'TCP reverse ident scanning'.
Comme l'a Θcrit en 1996 Dave Goldsmith dans un post sur Bugtraq,
le protocole ident (rfc 1413) permet de dΘtecter le nom de
l'utilisateur qui fait fonctionner n'importe quel processus
connectΘ en utilisant TCP, mΩme si ce processus n'a pas
initialisΘ la connexion. Donc vous pouvez, de cette maniΦre
vous connecter sur le port 80 et utiliser identd pour trouver
si ce serveur est lancΘ par le root ou non. Ceci ne peut
Ωtre fait uniquement que par une connexion complΦte α
l'h⌠te distant (c'est α dire: l'option de scan -sT).
Quand -I est utilisΘ, le serveur identd de l'h⌠te distant
questionne chaque ports ouvert. Naturellement, ceci ne
fonctionne pas si l'h⌠te ne fait pas fonctionner identd.
-f Cette option force les scans par SYN, FIN, XMAS,
ou encore NULL α utiliser de tous petits fragments de
paquets IP. L'idΘe est de fragmenter le header TCP sur
plusieurs paquets pour pouvoir rendre plus compliquΘ
aux filtreurs de paquets ainsi qu'au dΘtecteurs d'intrusions
(IDS), de dΘtecter ce que vous Ωtes en train de faire.
Attention avec cette option! Certains programmes ont du
mal α gΘrer les paquets fragmentΘs. Mon sniffer prΘfΘrΘ
fait une erreur de segmentation aprΦs rΘception des
36 premiers octets de fragments, aprΦs rΘception d'un
paquet de 24 octets ! Attention, ces paquets ne sont pas
repΘrΘs par les sniffers de paquets ainsi que par
les firewalls qui n'utilisent pas l'option du kernel
linux CONFIG_IP_ALWAYS_DEFRAG, et certains rΘseaux ne
peuvent pas supporter la nombre de hits que
cause ce type de scan.
Il faut noter que l'option ne fonctionne pas encore
correctement sur certains systΦmes. Elle fonctionne
bien sur Linux, FreeBSD, et OpenBSD, certaines personnes
ont aussi reportΘ un succΦs sur certains *NIX.
-v Mode dΘtaillΘ. Cette option est fortement
conseillΘe, car elle donne des informations sur ce qui
est en train de se passer. Vous pouvez l'utiliser
en double pour un plus grand effet. Attention, ne tapez pas
-d -d -d...... sinon les informations dΘtaillΘes apparaεtront
autant de fois qu'il y a de 'd' sur la ligne de commande.
-h Option pratique pour afficher une rapide
rΘfΘrence des options de nmap. Comme vous pouvez le
remarquer ce fichier man n'est pas une 'rΘfΘrence rapide' :)
-oN <fichierdelog>
Ceci crΘe un log du rΘsultat et l'inscrit dans un
fichier lisible humainement.
-oM <fichierdelog>
Ceci crΘe un log du rΘsultat dans un fichier, spΘcifiΘ en
argument, au format utilisable par un ordinateur.
Vous pouvez mettre l'argument '-' (sans les guillemets) pour
envoyer le rΘsultat vers stdout (pour une utilisation avec
des pipes sous shell, etc). Dans ce cas l'affichage normal
sera supprimΘ. Faites tout de mΩme attention aux messages
d'erreurs si vous utilisez cela (ils seront toujours envoyΘs
sur stderr).
-oS <fichierdelog>
C3c1 l0G l3 R3suLt4 2oUs uN f0Rm4t α L4 scr1p|
kiDd|3 d4n2 uN fiCh1e5 9ue v0u2 spEc1f1e2 eN
4r9umEn|! v0U2 P0uVeZ util12er l'4rgum2n| '-'
(Z4nZ leZ gu1lleme7s) pouR tou| eNV0y2r sUr stDouT!@!!
-iL <nomdufichierentrant>
RΘcupΦre la spΘcification des cibles dans un fichier plut⌠t
que dans la ligne de commande. Ce fichier doit contenir
une liste d'expressions d'h⌠tes ou rΘseaux sΘparΘs par
des espaces, tabulations, ou encore des retours chariots.
Utilisez le signe '-' comme 'nomdufichierentrant' si
vous souhaitez que nmap lise les spΘcifications
sur stdin (comme α la fin d'un 'pipe'). Voir la section
Expression de cible pour plus
d'informations sur les expressions α utiliser dans ce
fichier.
-iR
Cette option dit α nmap de gΘnΘrer son propre fichier
d'h⌠tes α scanner, par simple utilisation de nombres
alΘatoires :). Cela n'arrΦtera jamais. Cette option peut
Ωtre utile pour faire des statistiques sur divers sujets.
Si vous vous ennuyez rΘellement essayez d'utiliser:
nmap -sS -iR -p 80
pour trouver des serveur web.
-p <port champ>
Cette option spΘcifie quels ports doivent Ωtre scannΘs.
Par exemple '-p 23' n'essayera que le port 23 sur la
machine cible. Le dΘfaut est de scanner tout les ports
entre 1 et 1024 et tous ceux prΘsents dans le fichier
'services' livrΘ avec nmap.
-F MΘthode de scan rapide.
SpΘcifie que vous ne voulez scanner que les ports
listΘs dans le fichier 'services' fournis avec nmap. C'est de
toute maniΦre bien plus rapide que de scanner les 65535 ports
cibles.
-D <decoy1 [,decoy2][,ME],...>
Effectue un scan avec leurres (decoy), ce qui permet de faire
croire α l'h⌠te cible que les IP que vous spΘcifiez en
tant que 'decoy' sont aussi en train de le scanner.
De cette maniΦre, les IDS dΘtecteront quelques fois 5-10
ports scan provenant de la mΩme source, et seront
incapables de dire qui α rΘellement effectuΘ le scan et quel
sont les leurres envoyΘs. Tandis que cette technique ne
fonctionne pas avec des routeurs traτant la route, ou encore
des mΘcanismes dits 'actifs', cette technique est trΦs puissante
pour cacher son IP.
SΘparez chaque leurre (decoy) avec des virgules, vous
pouvez optionnellement utiliser 'ME' en tant que leurre pour
spΘcifier α quelle position vous souhaitez que votre IP soit
utilisΘe. Si vous placez le 'ME' en sixiΦme position ou plus
tard, de nombreux dΘtecteurs de port-scan (tels que l'excellent
Solar Designer's scanlogd) seront incapables de montrer
votre IP. Si vous n'utilisez pas le 'ME', nmap le positionnera
alΘatoirement.
Il faut noter que les h⌠tes que vous utilisez en tant que
leurres doivent Ωtre prΘsents si vous ne voulez pas
crΘer une inondation SYN sur votre cible. De plus, il sera
plus aisΘ de repΘrer qui est en train de scanner s'il ne
se trouve qu'un seul h⌠te prΘsent sur le rΘseau. Vous
pouvez utiliser des IP plut⌠t que des noms (si vous ne
souhaitez que votre IP n'apparaisse dans le fichier de
log du serveur DNS de vos leurres).
Il faut aussi noter que certains "dΘtecteurs de port scan"
(stupides) refusent le routage avec des h⌠tes qui
essayent de les scanner. De cette maniΦre vous pouvez causer
sur cette machine le refus de dialoguer avec les h⌠tes que
vous spΘcifiez en tant que leurres. Cela peut poser des
problΦmes majeurs si vous spΘcifiez une machine du rΘseau
leur passerelle internet, ou encore le "localhost".
De cette maniΦre il faut faire attention avec cette option.
La rΘelle morale de cette histoire est que les dΘtecteurs
de scan ne devraient pas prendre d'action lorsqu'ils
dΘtectent quelque chose car cela pourrait trΦs bien Ωtre un
leurre!
Le scan avec leurres peut Ωtre utilisΘ α la fois avec
le ping scan (utilisant ICMP, SYN, ACK, ou n'importe quoi)
et aussi durant la phase de port scan. Les leurres peuvent
aussi Ωtre utilisΘs durant l'authentification d'OS ( -O ).
Il est inutile et mΩme c'est une peine perdue d'utiliser trop de
leurres cela ne sert α rien et pourra rendre les rΘponses
moins justes. A l'heure actuelle uniquement quelques FAIs filtrent les
paquets spooffΘs.
-S <AdressesIP>
Dans certain cas, nmap sera incapable de trouver
votre adresse IP source (il vous le dira si c'est le cas).
Si cela vous arrive, utilisez -S avec votre adresse IP
(l'interface sur laquelle vous voulez envoyer les paquets).
Une autre utilitΘ de cette option est de faire un spoofed
scan pour faire croire α la cible que quelqu'un d'autre est en train
de la scanner. Imaginez une entreprise se faisant souvant
scanner par un concurant! Je ne l'ai pas crΘΘ dans ce but,
mais plut⌠t pour montrer le rΘsultat et les problΦmes que
cela pouvait causer. -e sera gΘnΘralement nΘcessaire
dans avec ce type d'usage.
-e <interface>
SpΘcifie α nmap l'interface sur laquelle les paquets
doivent Ωtres envoyΘs. Nmap devrait Ωtre capable de
dΘtecter l'interface α utiliser, mais au cas ou il n'y arriverait pas,
il vous le dira.
-g <portsource>
Fixe le port source utilisΘ dans les scan.
De nombreuses installations de firewall et filtreurs de
paquets feront une exception dans leurs rΦgles aux paquets
DNS (53) ou encore FTP-DATA (20) qui entreront pour
effectuer une connexion. Naturellement pour un scan UDP
il faudra mieux utiliser le port 53 et pour un scan TCP,
le port 20 avant le 53. Il faut noter que ceci n'est qu'une
requΩte et que nmap ne l'utilisera uniquement que si cela
est possible.
Par exemple, vous ne pouvez pas faire d'Θchantillonage TCP ISN
d'un h⌠te:port vers un h⌠te:port, car nmap change le port source
mΩme si vous utilisez l'option -g.
Il faut aussi savoir qu'il y a des inconvΘnients α utiliser
cette option sur certains scan car nmap place des informations
utiles dans les ports sources.
-r Demande α nmap de ne PAS placer les ports scannΘs
dans un ordre alΘatoire.
--randomize_hosts
Demande α nmap de mΘlanger l'ordre de 2048 h⌠tes
avant de les scanner. Ceci peut rendre le scan plus discret
pour des moniteurs rΘseau, spΘcialement si vous utilisez
des techniques de minuterie lente (voir ci-dessous).
-M <max sockets>
SpΘcifie le nombre maximum de sockets qui seront utilisΘes
en parallΦle pour un scan avec le TCP connect() (celui
par dΘfaut). Ceci est utile pour ralentir un petit peu
le scan et pour ne pas crasher la cible. Une autre solution
est d'utiliser le -sS, car il est gΘnΘralement plus facile
α gΘrer pour les machines.
OPTIONS DE MINUTERIE
En gΘnΘral nmap se dΘbrouille pas mal du tout pour
s'ajuster aux caractΘristiques du rΘseau en le scannant
pour pouvoir aller le plus vite possible tout en minimisant
les chances de ne pas dΘtecter des h⌠tes/ports. Seulement,
certaines fois, la politique de chronomΘtrage de nmap, ne
reprΘsente pas les objectifs voulu. Les options suivantes
permettent de contr⌠ler totalement ce temp:
-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
Le mode Paranoid scan trΦs lentement dans
l'espoir d'Θviter les IDS et dΘtecteurs de scan.
Il fait les scans en sΘrie (et non pas en parallΦle) et
attend au moins 5 minutes entre chaque paquet. Sneaky est
similaire, il attend seulement 15 secondes entre chaque.
Polite est conτu pour ne pas surcharger le rΘseau
et crasher les machines. Il fait les scans en sΘrie et
attend au moins 0.4 secondes entre chaque
paquets. Normal est l'attitude normale de nmap,
en ce sens qu'il essaie de fonctionner le plus vite
possible sans pour autant perdre en prΘcision dans
les rΘsultats. Les mode Agressive ajoute
5 minutes de timeout par h⌠te et n'attend pas plus
de 1.25 seconde pour les rΘponses des requΩtes.
Insane n'est convenable que pour des rΘseaux trΦs
rapides ou s'il ne vous importe pas de perdre
des informations. Il met un timout pour les h⌠tes
de 75 secondes et attend seulement 0.3 secondes pour
les requΩtes individuelles. Il permet de scanner
des rΘseaux trΦs rapidement :). Vous pouvez aussi faire
vos spΘcifications avec des nombres (0-5). Par exemple,
'-T 0' vous donne le mode parano∩d et '-T 5' Insane.
Ces types de scan ne doivent pas Ωtre utilisΘs en
combinaison avec les contr⌠les ayant un niveau infΘrieur
situΘs ci-dessous.
--host_timeout <millisecondes>
SpΘcifie le total de temps que doit passer Nmap α scanner
un h⌠te avant de laisser tomber avec celui-ci. Le mode
de minuterie par dΘfaut n'utilise pas cette option.
--max_rtt_timeout <millisecondes>
SpΘcifie le temps maximum que Nmap est autorisΘ pour
attendre les rΘponses aux requΩtes ou retransmettre
cette requΩtes particuliΦre. Le mode par dΘfaut est
9000.
--min_rtt_timeout <millisecondes>
Quand l'h⌠te cible commence α envoyer quelques rΘponses
au requΩtes prΘcΘdentes trΦs rapidement, Nmap ajustera
le temps total pour chaque requΩte. Ceci accΘlΦre
le scan, mais peut laisser de c⌠tΘ des rΘponses un peu
trop lentes α arriver. Avec ce paramΦtre vous pouvez Ωtre
garantit que nmap attendra au moins le minimum de temps
possible pour une requΩte.
--initial_rtt_timeout <millisecondes>
SpΘcifie le time-out pour la requΩte initiale. Ceci est
gΘnΘralement utile quand l'on scanne des rΘseaux
protΘgΘs par un firewall en utilisant l'option '-P0'.
Normalement Nmap peut obtenir une bonne estimation de RTT
grΓce au ping et les premiΦre requΩtes. Le mode par dΘfaut
utilise 6000.
--max_parallelism <nombre>
SpΘcifie quel est le nombre maximum de scan que Nmap est
autorisΘ α effectuer en parallΦle. En mettant ceci α 1 nmap ne
scannera pas plus d'un port α la fois. Il affecte aussi
d'autre types de scan en parallΦles tel que le ping sweep,
RCP scan, etc...
--scan_delay <milliseconds>
SpΘcifie le temps minimum α nmap pour attendre
chaque requΩte. Ceci est utile pour limiter la
charge du rΘseau ou pour ralentir le scan en ayant
pour but d'Ωtre moins facilement repΘrΘ.
SPECIFICATION DE CIBLE
Tout ce qui n'est pas une option (ou un argument d'option)
dans nmap est traitΘ comme une spΘcification de cible.
Le cas le plus simple est d'Ωtre α l'Θcoute de simples noms
d'h⌠tes ou adresses IP sur la ligne de commande. Si vous
souhaitez scanner un rΘseau, vous devriez utiliser
'/mask' en l'ajoutant au nom d'h⌠te ou α l'adresse IP.
Mask doit Ωtre entre 0 (scan tout l'Internet)
et 32 (scan un simple ordinateur). Utilisez /24 pour scanner
un rΘseau de class 'C' et /16 pour un de class 'B'.
Nmap a aussi une technique de notation puissante qui vous
permet de spΘcifier les adresses IP en utilisant pour
chaque ΘlΘment des listes/champs. De cette maniΦre vous pouvez
dΘcrire un rΘseau de class 'B' 128.210.0.0 en spΘcifiant
'128.210.*.*' ou '128.210.0-255.0-255' ou encore
'128.210.1-50,51-255.1,2,3,4,5-255'. Et bien s√r, vous
pouvez utiliser la notation suivante avec mask: '128.210.0.0/16'.
Ils sont tous Θquivalent. Si vous utilisez des astΘrisques
('*'), il faut juste se souvenir que de nombreux shells
ont besoins de guillemets et de sΘquences d'Θchapements.
Une autre chose intΘressante est de diviser l'internet
d'une maniΦre diffΘrente: Au lieu de scanner les h⌠tes d'une
classe 'B', une spΘcification du type '*.*.5.6-7' effectuera
un scan sur toute les IP se terminant par .5.6 ou .5.7,
choisissez vos propres numΘros. Pour plus d'informations,
sur les spΘcifications α utiliser pour scanner des h⌠tes,
il faudra se reporter α la section des exemples.
EXAMPLES
Vous trouverez ici quelques exemples d'utilisation de
nmap, en partant des plus simples en passant par les
normaux et en terminant par les plus complexes et ΘsotΘriques.
Il faut noter que certains numΘros et domaines ont ΘtΘ
choisis pour rendre cela plus concret. Dans ces parties
vous devez remplacer les noms/adresses par VOS
PROPRES PARAMETRES RESEAU. Je ne
pense pas que faire des scannage de ports d'autres rΘseaux est
illΘgal et qu'ils doivent Ωtre forcΘment interprΘtΘs comme
des attaque. J'ai scannΘ des centaines de milliers de
machines et reτu uniquement une seule plainte.
Mais je ne suis pas juge et certaines personnes
(trou du cul) peuvent Ωtre ennuyΘes par les requΩtes de
nmap. Demandez premiΦrement l'autorisation
ou utilisez-le α vos propres risques.
nmap -v example.cible.com
Cette option scan tous les ports TCP sur la machine
example.cible.com. Le -v signifie mode 'verbose', c'est
α dire: bavard, dΘtaillΘ.
nmap -sS -O example.cible.com/24
Lance un SYN scan sur le rΘseau de classe 'C' ou
exemple.cible.com rΘside. Il essaie aussi de rΘcupΘrer
l'identification du systΦme sur chacuns des h⌠tes qu'il
trouve grΓce au TCP fingerprinting. Ceci nΘcessite les
droits root du fait du SYN scan et de l'identification
de l'OS.
nmap -sX -p 22,53,110,143,4564 128.210.*.1-127
Envoie un scan de type Xmas sur la premiΦre moitiΘ des
255 possibilitΘs dans le rΘseau de class 'B' 128.210.
Nous testons si le systΦme possΦde sshd, DNS, pop3, imapd,
ou le port 4564. Il est bon de savoir que Xmas ne fonctionne
pas contre les machines de type windows du faite d'une
malformation dans leur pile TCP. MΩme chose pour CISCO,
IRIX, HP/UX, et BSDI.
nmap -v --randomize_hosts -p 80 '*.*.2.3-5'
Au lieu de se focaliser sur une class IP, il est
parfois intΘressant de dΘcouper l'internet en plusieurs
partie que l'on scanne en tranches. Cette commande trouve
tous les serveurs webs sur les machines dont l'IP se
termine par .2.3, .2.4 ou .2.5. Si vous Ωtes root, vous
devrez ajouter -sS. De mΩme vous trouverez des machines
plus intΘressantes en commenτant par 127.
Donc vous pourriez utiliser '127-222' α la place des astΘrisques
car cette section possΦde un plus grand nombre de
machines intΘressantes.
host -l company.com | cut '-d ' -f 4 | ./nmap -v -iL -
Effectue un transfert de zone pour trouver les h⌠tes de
'company.com', envoie le rΘsultat α nmap. Les commandes
ci-dessus sont pour mon GNU/Linux. Vous pouvez avoir diffΘrentes
commandes sur votre OS.
BUGS
Des Bugs? Quels bugs? Envoyez moi ce que vous trouvez.
Les patches sont sympas aussi :) N'oubliez pas d'envoyer
les nouveaux fingerprints pour grossir la base de donnΘe.
Nmap vous donnera une URL de soumission dans le cas d'un
fingerprint appropriΘ trouvΘ.
AUTEUR
Fyodor <fyodor@dhp.com>
TRADUCTEUR
Hertz <hertz@webmails.com>
Texte traduit le 18 Avril 2000.
Merci α <blured@linuxmail.org>
et <Guilux> pour leur aide α la correction.
NOTE DU TRADUCTEUR
Cette traduction, n'est en aucun cas la meilleure
traduction qui puisse Ωtre de ce texte. Si vous
trouvez des erreurs, fautes... veuillez me contacter
pour que je puisse mettre α jour le document et
que tout le monde puisse profiter de ces correctifs.
En ce qui concerne le chapitre 'DISTRIBUTION', je
dois en aucun cas Ωtre tenu responsable d'une mauvaise
interprΘtation du texte. Si vous Ωtes intΘressΘ par
celui-ci alors veuillez consulter le document en Anglais.
DISTRIBUTION
Toute nouvelle version de Nmap peut Ωtre trouvΘe sur
http://www.insecure.org/nmap/
nmap est un Copyright(C) 1997,1998,1999 de Fyodor
(fyodor@dhp.com, fyodor@insecure.org)
libpcap est aussi distribuΘ avec nmap.
Il est sous le copyright de Van Jacobson, Craig Leres et
Steven McCanne chacuns faisant partie du Lawrence Berkeley
National Laboratory, UniversitΘ de Californie, Berkeley, CA.
La version distribuΘe avec nmap peut Ωtre lΘgΦrement modifiΘe,
vous pouvez rΘcupΘrer les source sur :
ftp://ftp.ee.lbl.gov/libpcap.tar.Z .
Ce programme est gratuit; vous pouvez le redistribuer et/ou
modifier selon les termes de la 'GNU General Public License'
telle qu'elle est publiΘe par la 'Free Software Foundation';
Version 2. Cela vous donne le droit α l'utilisation ainsi
qu'a la modification, mais la demande de license est
inacceptable, Insecure.Org peut vouloir vendre des licenses
alternatives (contactez fyodor@dhp.com).
Les sources sont fournies avec ce logiciel car nous
sommes persuadΘs que l'utilisateur α le droit de savoir
ce que va faire son programme avant mΩme son exΘcution.
Cela vous permet de la mΩme maniΦre de faire un audit
sur le logiciel, α la recherche de failles de sΘcuritΘ
(aucune n'a encore α ce jour ΘtΘ trouvΘe).
Le code source vous permet aussi de porter nmap sur
de nouvelles plateformes, de corriger les bugs, ou
encore d'ajouter de nouvelles fonctionnalitΘs. Vous
Ωtes fortement encouragΘs α envoyer vos modification
α Fyodor, pour pouvoir les incorporer α la distribution
de Nmap. Par l'envoi de ces changements α Fyodor, ou
nmap-hackers, il faut assumer que vous lui offrez le code
et qu'il pourra Ωtre sans exclusivitΘ, rΘutilisΘ, modifiΘ,
et licensΘ. Si vous voulez spΘcifier un type de license
particulier, vous pouvez l'indiquer tout en haut de votre
code source.
Ce programme est distribuΘ dans l'espoir qu'il sera utile,
mais il est fournit SANS AUCUNE GARANTIE;
sans mΩme la garantie implicite d'Ωtre COMMERCIALISABLE ou
mΩme de pouvoir CONVENIR A UNE
APPLICATION PARTICULIERE. Consulter la
'GNU Public License' pour plus de dΘtails (elle se trouve dans
le fichier COPYING de la distribution de Nmap.
Il est aussi nΘcessaire de savoir que Nmap α ΘtΘ connu
pour crasher certaine applications mal programmΘes,
piles TCP/IP, et mΩme des OS. Nmap ne devrait jamais
Ωtre lancΘ contre des serveurs α haut risque sauf si
vous Ωtes prΩt α ce qu'il souffre d'indisponibilitΘ.
Nous approuvons le fait que nmap peut crasher des systΦmes
ou rΘseaux et nous dΘclinons toute responsabilitΘ sur les
dommages ou problΦmes que Nmap peut causer.
Toutes les versions de Nmap supΘrieures ou Θgales α 2.0
sont connues pour Ωtre compatibles AN 2000 (Y2K). Cela
α ΘtΘ dit, mais Nmap n'est fournit avec aucune garantie.
Il n'y a pas de raison que les versions prΘcΘdentes α la
2.0 soient sujettes α des problΦmes, mais nous n'avons
jamais testΘ.