Documentation technique groupe rush A

Documentation groupe rush A: le scanner nmap

Présentation de nmap

Nmap est un des meilleurs scanners de ports disponibles actuellement. Il est à noter que l'appelation scanner de ports n'est peut être pas tout a fait adaptée, car nmap possède d'autres fonctionnalités avancées qui ne rentrent pas dans cette dénomination (comme l'OS fingerprinting).

Qu'est-ce qu'un stealth scan ?

La documentation des scanners de ports utilise parfois le terme stealth scan (scan furtif). Est désigné par là un mode de scannage qui ne déclenche pas autant d'alertes que le modes de scannage basiques.
En particulier, les programmes userland n'ont aucun moyen de savoir que le scan a eu lieu. Des systèmes plus perfectionnés disposant de hooks dans le kernel (firewall) peuvent toutefois sûrement détecter ce type de scans.

Installation

Sur un système FreeBSD, l'installation se déroule comme ceci:
attacker2# pkg_add -r nmap

Les modes de scannage

Nmap permet de scanner de plusieus façons différents, la méthode la plus simple étant d'utiliser un connect() (tenter d'ouvrir une connection TCP normale). Le tableau ci-dessous liste les différents modes de scannage et leur différences:
TypeParamètre ligne de commandeDescription
Connect -sT TCP connect(), méthode par défaut quand nmap est lancé en tant qu'utilisateur non-privilégié
Scan SYN -sS N'envoie que le premier paquet SYN du three-way handshake, sans s'acquitter des réponses. Si on reçoit SYN|ACK, on sait que la machine écoute sur le port TCP concerné. Cette méthode s'appelle aussi half-open scan.
Le handshake ne se termine pas, ce qui fait que la connection n'est pas loggée.
Scan FIN -sF Un paquet FIN vide est envoyé. Si on reçoit RST, le port est fermé (comportement RFC 793). Si on ne reçoit rien, le port est probablement ouvert (et le paquet a été ignoré).
Cette tentative de connection a encore moins de chances d'être loggée que la précédente.
Xmas Tree -sX Xmas tree scan: fonctionne de la même façon que le FIN scan, excepté que les flags activés sont FIN|URG|PUSH
UDP -sU Envoie un paquet UDP de 0 octets, si un ICMP port unreachable est reçu, alors le port est fermé.
Protocole IP -sO Détermine quels protocoles IP sont supportés. (ICMP protocol unreachable est envoyé en cas de protocole non-supporté).
ACK -sA Permet de déterminer quels types de règles sont activées sur un firewall, qui vont du blocage de SYN (très basique) au stateful firewalling.
Un firewall stateful va ignorer le paquet ACK, alors que si le port n'est pas filtré, un RST va être renvoyé.
RPC -sR Permet d'énumérer les services RPC ouverts (nmap effectue cette détection sur tous les ports TCP/UDP ouverts)
OS Fingerprinting -O Active la détection du système d'exploitation (se base sur les différences d'implémentation de TCP/IP sur les différents systèmes).

Options intéressantes

Certaines options peuvent être intéressantes pour contourner une configuration de firewall:
Paramètre ligne de commandeDescription
-P0 Par défaut, nmap effectue un ping avant de scanner une machine, si celle-ci bloque les paquets ICMP echo request, activer cette option permet de lancer le scan quoi qu'il arrive.
-f Fragmente les paquets utiliser pour le scan avant de les envoyer. La plupart des firewalls ne savent pas réassembler les paquets et les laissent passer ainsi (ils sont ensuite réassemblés par la pile IP, mais à ce stade n'ont pas été arrêtés par les hooks du firewall dans la pile IP).
-T Politique de timing: certains détecteurs de scan se basent sur la fréquence d'arrivée des paquets pour déterminer si un scan de ports est en cours, cette option permet de ralentir nmap afin d'être plus discret.

Exemple d'utilisation

Voici un exemple d'utilisation de nmap sur une de nos machines cible (la non-sécurisée).
attacker2# nmap 192.168.10.11

Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-04-04 15:54 CEST


Interesting ports on 192.168.10.11:
(The 1653 ports scanned but not shown below are in state: closed)
PORT    STATE SERVICE
21/tcp  open  ftp
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
110/tcp open  pop3
587/tcp open  submission

Nmap run completed -- 1 IP address (1 host up) scanned in 128.353 seconds
La liste des services détectée par nmap peut être comparée à la liste des logiciels installés sur cette machine.