Nmap
Un article de Backtrack-fr.
Sommaire |
[modifier] Introduction
Nmap est sans doute le scanner de sécurité le plus connu au monde. Il détecte les ports ouverts avec une rapidité impressionnante. De plus, il est composé d'une panoplie d'options permettant à tout utilisateur d'obtenir le maximum d'informations (Informations de service, version, OS ...).
Il met donc en oeuvre plusieurs types de scans (TCP, UDP, ICMP...) que l'on peut coupler à différentes techniques :
- IDLE Host Scanning.
- Spoofing (adresse IP et MAC).
- Port scanning (mode récursif, aléatoirement, choisis dans une liste et/ou déterminés).
- Fingerprinting (prise d'empreinte de pile système active et passive, service discovering).
- ...
Il est décrit comme : flexible, puissant, portable, simple, libre, bien documenté, soutenu par une communauté, reconnu par les professionnels, et enfin populaire !
[modifier] Usage
nmap [Scan Type(s)] [Options] {target specification}
[modifier] Options
[modifier] Spécifier la(les) cible(s)
Accepte les noms d'hôtes, les adresses IPs, les réseaux, etc. Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254 -iL <inputfilename>: Lire les noms d'hôtes et de réseaux depuis le fichier spécifié -iR <num hosts>: Définir les cibles aléatoirement --exclude <host1[,host2][,host3],...>: Exclure des hosts et/ou des réseaux --excludefile <exclude_file>: Liste d'exclusion depuis le fichier spécifié
[modifier] Découverte de l'host
-sL: List Scan - liste simplement les cibles scannées -sP: Ping Scan - go no further than determining if host is online -P0: Partir du principe que tous les hôtes sont connecté au réseau -- ne pas vérifier leur présence -PS/PA/PU [portlist]: TCP SYN/ACK or UDP discovery to given ports -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes -n/-R: ne jamais utiliser la résolution d'adresse IP DNS/toujour utiliser la résolution d'adresse IP DNS [par défaut: parfois] --dns-servers <serv1[,serv2],...>: Spécifier des serveurs DNS --system-dns: Utiliser le résolveur de système d'exploitations par DNS (OS's DNS resolver)
[modifier] Techniques de scan
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans -sU: Scan UDP -sN/sF/sX: TCP Null, FIN, and Xmas scans --scanflags <flags>: Customize TCP scan flags -sI <zombie host[:probeport]>: Idlescan -sO: IP protocol scan -b <ftp relay host>: FTP bounce scan
[modifier] Spécifier le port
-p <port ranges>: Scanner seulement les ports spécifiés
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
-F: Fast - Scanner uniquement les ports listés dans le fichier nmap-services
-r: Scanner consécutivement les ports - pas aléatoirement
[modifier] Types de détection des services et versions
-sV: Examine les ports scannés pour déterminer les services (et leur version) potentiellement présents --version-intensity <level>: Set from 0 (light) to 9 (try all probes) --version-light: Limit to most likely probes (intensity 2) --version-all: Try every single probe (intensity 9) --version-trace: Afficher la version détaillée de l'action du scan (option pour debugger)
[modifier] Détection d'OS
-O: Activer la détection de systèmes d'exploitations (try 2nd generation w/fallback to 1st) -O2: Utiliser seulement la nouvelle (2ème version) méthode de détection (no fallback) -O1: Utiliser seulement la vielle (1ère version) méthode de détection --osscan-limit: Limit OS detection to promising targets --osscan-guess: Guess OS more aggressively
[modifier] Synchronisations et perfomances
Options which take <time> are in milliseconds, unless you append 's'
(seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
-T[0-5]: Set timing template (higher is faster)
--min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
--min-parallelism/max-parallelism <time>: Probe parallelization
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies
probe round trip time.
--max-retries <tries>: Caps number of port scan probe retransmissions.
--host-timeout <time>: Give up on target after this long
--scan-delay/--max-scan-delay <time>: Adjust delay between probes
[modifier] Spoofing et contournement d'IDS/Parefeu
-f; --mtu <val>: fragment packets (optionally w/given MTU) -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys -S <IP_Address>: Spoofer l'adresse source -e <iface>: Utilier l'interface réseau à utiliser -g/--source-port <portnum>: Use given port number --data-length <num>: Append random data to sent packets --ip-options <options>: envois les packets réseaux avec les options IP spécifiées --ttl <val>: Définir le champs TTL (Time To Live) --spoof-mac <mac address/prefix/vendor name>: Spoofer votre adresse MAC --badsum: Envoyer les packets réseaux avec une checksum TCP/UDP buggé
[modifier] Informations de sortie
-oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
and Grepable format, respectively, to the given filename.
-oA <basename>: Output in the three major formats at once
-v: Augmenter la précision des informations (peut-être utiliser deux fois pour plus d'effet)
-d[level]: Définir le niveau de précision des information de débuggage (maximum à 9)
--open: Afficher seulement les ports potentiellement ouverts
--packet-trace: Afficher tous les packets réseau envoyés et reçus
--iflist: Print host interfaces and routes (for debugging)
--log-errors: Enregistrer les messages d'erreurs et d'avertissements dans le format normal de sortie de fichier
--append-output: Append to rather than clobber specified output files
--resume <filename>: Reprendre un scan intérompu
--stylesheet <path/URL>: Spécifier une feuille de style XSL pour transformer la sortie XML en HTML
--webxml: Reference stylesheet from Insecure.Org for more portable XML
--no-stylesheet: Prevent associating of XSL stylesheet w/XML output
[modifier] Divers
-6: Activer le mode IPv6 -A: Activer la détection de systèmes d'exploitation et de leur version --datadir <dirname>: Specify custom Nmap data file location --send-eth/--send-ip: Send using raw ethernet frames or IP packets --privileged: Partir du principe que l'utilisateur à tous les privillèges --unprivileged: Assume the user lacks raw socket privileges -V: Afficher le numéro de version -h: Afficher cette page d'aide
[modifier] Exemples
Lister simplement les hôtes en ligne sur la plage 1-254 d'une adresse ip de classe C (192.168.1.xxx) :
bt ~ # nmap -n -sP 192.168.1.1-254
Starting Nmap 4.50 ( http://insecure.org ) at 2008-03-01 03:35 GMT Host 192.168.1.1 appears to be up. MAC Address: 00:19:4B:12:33:AC (Sagem Communication) Host 192.168.1.11 appears to be up. MAC Address: 00:12:BF:AF:23:04 (Intel Corporate) Nmap done: 254 IP addresses (2 hosts up) scanned in 6.240 seconds
Proposer un fichier xml en sortie (Interressant pour des rapports de scan), en activant la détection de l'OS(-0), tout en forcant la présence de l'hôte(-P0), celà au travers d'un scan banal(déconseillé si vous voulez être furtif!) :
bt ~ # nmap -n -0 -P0 192.168.1.11 -oX rscan-11.xml
L'attaque par decoys(ou leurres) génére de faux paquets, afin de tromper la cible sur la provenance du scan. Celà permet de se noyer dans la masse, et de surcharger la cible de log. Les IP qui serviront de leurres sont suivis de l'option -D, la cible du scan est ici 192.168.1.11 :
bt ~ # nmap -n -D192.168.1.10,192.168.1.59 192.168.1.11
Scan de type OS et services de détection:
bt ~ # nmap -vv -A 127.0.0.1 Starting Nmap 4.20 ( http://insecure.org ) at 2007-08-03 02:25 CEST Initiating SYN Stealth Scan at 02:25 Scanning bt.example.net (127.0.0.1) [1697 ports] Discovered open port 25/tcp on 127.0.0.1 Discovered open port 113/tcp on 127.0.0.1 Discovered open port 631/tcp on 127.0.0.1 Discovered open port 6000/tcp on 127.0.0.1 Discovered open port 37/tcp on 127.0.0.1 Discovered open port 587/tcp on 127.0.0.1 Completed SYN Stealth Scan at 02:25, 0.08s elapsed (1697 total ports) Initiating Service scan at 02:25 Scanning 6 services on bt.example.net (127.0.0.1) Completed Service scan at 02:25, 6.01s elapsed (6 services on 1 host) Initiating OS detection (try #1) against bt.example.net (127.0.0.1) Host bt.example.net (127.0.0.1) appears to be up ... good. Interesting ports on bt.example.net (127.0.0.1): Not shown: 1691 closed ports PORT STATE SERVICE VERSION 25/tcp open smtp Sendmail 8.13.8/8.13.8 37/tcp open time (32 bits) 113/tcp open ident OpenBSD identd 587/tcp open smtp Sendmail 8.13.8/8.13.8 631/tcp open ipp CUPS 1.1 6000/tcp open X11 (access denied) Device type: general purpose Running: Linux 2.6.X OS details: Linux 2.6.17-10.33 (Ubuntu) OS Fingerprint: OS:SCAN(V=4.20%D=8/3%OT=25%CT=1%CU=32915%PV=N%DS=0%G=Y%TM=46B27600%P=i686-p OS:c-linux-gnu)SEQ(SP=CD%GCD=1%ISR=CD%TI=Z%II=I%TS=8)OPS(O1=M400CST11NW2%O2 OS:=M400CST11NW2%O3=M400CNNT11NW2%O4=M400CST11NW2%O5=M400CST11NW2%O6=M400CS OS:T11)WIN(W1=8000%W2=8000%W3=8000%W4=8000%W5=8000%W6=8000)ECN(R=Y%DF=Y%T=4 OS:0%W=8018%O=M400CNNSNW2%CC=N%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2 OS:(R=N)T3(R=Y%DF=Y%T=40%W=8000%S=O%A=S+%F=AS%O=M400CST11NW2%RD=0%Q=)T4(R=Y OS:%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR OS:%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40 OS:%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%TOS=C0%IPL=164%UN=0%RIPL= OS:G%RID=G%RIPCK=G%RUCK=G%RUL=G%RUD=G)IE(R=Y%DFI=N%T=40%TOSI=S%CD=S%SI=S%DL OS:I=S) Uptime: 0.823 days (since Thu Aug 2 06:40:57 2007) Network Distance: 0 hops TCP Sequence Prediction: Difficulty=205 (Good luck!) IPID Sequence Generation: All zeros Service Info: OSs: Unix, OpenBSD OS and Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ . Nmap finished: 1 IP address (1 host up) scanned in 7.481 seconds Raw packets sent: 1716 (76.266KB) | Rcvd: 3441 (145.712KB)
Utilisation de la sortie grepable pour afficher uniquement les IP avec le port défini ouvert:
bt ~ # nmap -p80 -oG - 10.0.0.0/24 | awk '/open/{print $2}'
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.10
10.0.0.12
[modifier] Références
- (en) Site officiel de Nmap
- (en) Tutorial
- (en) Nmap en ligne
- (fr) Manuel de Nmap


