Magazine

NMap. Scanner de Ports

Publié le 12 mars 2008 par Sckyzo

http://doc.fedora-fr.org/w/images/e/e2/Nmap.gifNmap est un scanner de ports open source créé par Fyodor et distribué par Insecure.org. Il est conçu pour détecter les ports ouverts, les services hébergés et les informations sur le système d’exploitation d’un ordinateur distant. Ce logiciel est devenu une référence pour les administrateurs réseaux car l’audit des résultats de Nmap fournit des indications sur la sécurité d’un réseau.

Cet article est une amélioration de l’article relativement complet de Pti-Seb accessible ici

♦ Utilisation principale de nmap

Voir tous les ports TCP ouverts sur une machine, utilisation de messages SYN, donc pas de log sur la machine cible :

# nmap -sS 127.0.0.1

Voir tous les ports UDP ouverts sur une machine :

# nmap -sU 127.0.0.1

Voir si une machine est sur le réseau (scan Ping) :

# nmap -sP 127.0.0.1

Scanner une plage d’adresses. Ici toutes les adresses de 192.168.0 à 192.168.255 :

# nmap 192.168.0,.0-255

Connaître le système d’exploitation de la machine (TCP/IP fingerprint) :

# nmap -O 127.0.0.1

Si nmap n’arrive pas à déterminer la version, on pourra lui demander de nous donner une liste des systèmes qui pourraient potentiellement correspondre :

# nmap -O --osscan-guess 127.0.0.1

Scanner un port précis. Ici, c’est le port http :

# nmap -p 80 127.0.0.1

Scanner une plage de ports. Ici on scan du port 0 au 80 et tous ceux supérieurs à 60000 ) :

# nmap -p 0-80,60000 127.0.0.1

Scanner des serveurs web au hasard sur le réseau :

# nmap -v -sS -iR 0 -p 80

Désactiver la résolution DNS inverse des hôtes, augmente la rapidité :

# nmap -n 127.0.0.1

Scan par rebond ftp, permet de demander à un serveur FTP de scanner les ports à votre place (envoie des fichiers pour tester les ports ouverts). Cette fonctionnalité est souvent désactivée des serveurs FTP afin d’éviter les abus. Ici on passe par le serveur ftp qui a pour adresse 127.0.0.1 pour scanner une plage d’adresses ip :

# nmap -b 127.0.0.1 192.168.0,.0-255

Usurper l’adresse ip source. Ici on scan 127.0.0.1, par l’interface réseau eth0, en se faisant passer pour 10.0.0.0 depuis le port 80 :

# nmap -S 10.0.0.0 -g 80 -e eth0 -P0 127.0.0.1

Usurper l’adresse MAC :

# nmap --spoof-mac 01:02:03:04:05:06:07 127.0.0.1# nmap --spoof-mac Cisco 127.0.0.1

Choisir un fichier de sortie pour y écrire les résultats du scan :

# nmap -oN resultat 127.0.0.1# nmap -oX resultat.xml 127.0.0.1

Trace les paquets et les données envoyés et reçus. Pratique pour verifier qu’une usurpation fonctionne :

# nmap --packet-trace -S 10.0.0.0 -eth0 127.0.0.1

♦ Solution

Empêcher le balayage des ports d’une machine reste assez difficile en soi. En effet, même en rajoutant des règles à iptables, les techniques de scan étant tellement diverses, cela ne sera ne fonctionnera pas à 100%, En revanche, on peut très bien utiliser des outils spécialisés dans la détection de ces derniers comme scanlogd par exemple. Pour s’en servir, nous allons devoir récupérer les sources sur le site officel et lancer les commandes suivantes :

# cd /usr/local/src
# tar zxvf scanlogd-*.tar.gz
# rm -f scanlogd-*.tar.gz
# cd scanlogd-*/
# make linux
# adduser scanlogd

On pourra ensuite le lancer manuellement, via la commande scanlogd. Toutes les tentatives de scan sur la machine seront alors visibles dans le fichier “/var/log/messages”:

# tail -100 /var/log/messages | grep scanlogd
Dec 3 17:54:43 localhost scanlogd: 192.168.31.112 to 192.168.31.101 ports 80, 554, 256, 21, 22, 23      64 @15:24:41

♦ Aller plus loin

Commande : # man nmap

Dans la suite de l’article, je vous met d’autres options trouvées sur la toile, que l’on a pour le Scanner NMap

Liens utiles :
http://fr.wikipedia.org/wiki/Nmap
http://nmap.org/
Guide de référence Nmap en Fr
L’art du “PortScanning”
Testeur de vulnérabilités sur le net

Petites Anecdotes :
Nmap étant un logiciel de plus en plus connu, on a pu voir des exemples d’utilisation dans plusieurs films.
Dans le second épisode de la trilogie Matrix (Matrix Reloaded), Trinity se sert de nmap pour pirater la centrale électrique.
Le troisième opus de la saga Jason Bourne, La Vengeance dans la peau, montre la CIA utiliser nmap ainsi que son GUI Zenmap pour s’introduire dans le serveur d’un journal (The Guardian)

  • Spécifications des cibles :

Les cibles peuvent être spécifiées par des noms d’hôtes, des adresses IP (v4 ou v6), des adresses de réseaux… Exemple: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0-255.0-255.1-254

  -iL <inputfilename>: Lit la liste des hôtes/réseaux cibles à partir du fichier
  -iR <num hosts>: Choisit les cibles au hasard
    --exclude <host1[,host2][,host3],…>: Exclut des hôtes/réseaux du scan
    –excludefile <exclude_file>: Exclut des hôtes/réseaux des cibles à partir du fichier
  • Découverte des hôtes :
  -sL: List Scan - Liste simplement les cibles à scanner
  -sP: Ping Scan - Ne fait que déterminer si les hôtes sont en ligne -P0: Considère que tous les hôtes sont en ligne-- évite la découverte des hôtes
  -PN: Considérer tous les hôtes comme étant connectés -- saute l'étape de découverte des hôtes
  -PS/PA/PU [portlist]: Découverte TCP SYN/ACK ou UDP des ports en paramètre
  -PE/PP/PM: Découverte de type requête ICMP echo, timestamp ou netmask
  -PO [num de protocole]: Ping IP (par type)
  -n/-R: Ne jamais résoudre les noms DNS/Toujours résoudre [résout les cibles actives par défaut]
    –dns-servers <serv1[,serv2],…>: Spécifier des serveurs DNS particuliers
    –system-dns: Utilise le resolveur DNS du système d’exploitation
  • Techniques de scan :
  -sS/sT/sA/sW/sM: Scans TCP SYN/Connect()/ACK/Window/Maimon
  -sN/sF/sX: Scans TCP Null, FIN et Xmas
  -sU: Scan UDP (Cette option ne fonctionne pas en IPv6)
    --scanflags <flags>: Personnalise les flags des scans TCP
  -sI <zombie host[:probeport]>: Idlescan (scan passif)
  -sO: Scan des protocoles supportés par la couche IP
  -b <ftp relay host>: Scan par rebond FTP
    –traceroute: Détermine une route vers chaque hôte
    –reason: Donne la raison pour laquelle tel port apparait à tel état
  • Spécifications des ports et ordre de scan :
  -p <plage de ports>: Ne scanne que les ports spécifiés
    Exemple: -p22; -p1-65535; -pU:53,111,137,T:21-25,80,139,8080
  -F: Fast - Ne scanne que les ports listés dans le fichier nmap-services
  -r: Scan séquentiel des ports, ne mélange pas leur ordre
    --top-ports <nombre>: Scan <nombre> de ports parmi les plus courants
    --port-ratio <ratio>: Scan <ratio> pourcent des ports les plus courants
  • Détection de service/version :
  -sV: Teste les ports ouverts pour déterminer le service en écoute et sa version
    --version-light: Limite les tests aux plus probables pour une identification plus rapide
    --version-intensity <niveau>: De 0 (léger) à 9 (tout essayer)
    --version-all: Essaie un à un tous les tests possibles pour la détection des versions
    --version-trace: Affiche des informations détaillées du scan de versions (pour débogage)
  • Script scan :
  -sC: équivalent de --script=safe,intrusive
    --script=<lua scripts>: <lua scripts> est une liste de répertoires ou de scripts séparés par des virgules
    --script-args=<n1=v1,[n2=v2,...]>: passer des arguments aux scripts
    –script-trace: Montre toutes les données envoyées ou recues
    –script-updatedb: Met à jour la base de données des scripts. Seulement fait si -sC ou –script a été aussi donné.
  • Détection de système d’exploitation :
  -O: Active la détection d'OS
    --osscan-limit: Limite la détection aux cibles prométeuses
    --osscan-guess: Devine l'OS de facon plus agressive
  • Temporisation et performance :

Les options qui prennent un argument de temps sont en milisecondes a moins que vous ne spécifiiez ’s’ (secondes), ‘m’ (minutes), ou ‘h’ (heures) à la valeur (e.g. 30m).

  -T[0-5]: Choisit une politique de temporisation (plus élevée, plus rapide)
    –min-hostgroup/max-hostgroup <msec>: Tailles des groupes d’hôtes à scanner en parallèle
    –min-parallelism/max-parallelism <msec>: Parallélisation des paquets de tests (probes)
    –min_rtt_timeout/max-rtt-timeout/initial-rtt-timeout <msec>: Spécifie le temps d’aller-retour des paquets de tests
    –min_rtt_timeout/max-rtt-timeout/initial-rtt-timeout <msec>: Spécifie le temps d’aller-retour des paquets detests
    –min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Précise le round trip time des paquets de tests.
    –max-retries <tries>: Nombre de retransmissions des paquets de tests des scans de ports.
    –host-timeout <msec>: Délai d’expiration du scan d’un hôte
    –scan-delay/–max-scan-delay <time>: Ajuste le délais entre les paquets de tests.
  • Evasion parefeu/ids et usurpation d’identité :
  -f; --mtu <val>: Fragmente les paquets (en spécifiant éventuellement la MTU)
  -D <decoy1,decoy2[,ME],…>: Obscurci le scan avec des leurres
  -S <IP_Address>: Usurpe l’adresse source
  -e <iface>: Utilise l’interface réseau spécifiée
  -g/–source-port <portnum>: Utilise le numéro de port comme source
    –data-length <num>: Ajoute des données au hasard aux paquets émis
    –ip-options <options>: Envoi des paquets avec les options IP spécifiées.
    –ttl <val>: Spécifie le champ time-to-live IP
    –spoof-mac <adresse MAC, préfixe ou nom du fabriquant>: Usurpe une adresse MAC
    –badsum: Envoi des paquets TCP/UDP avec une somme de contrôle erronée.
  • Sortie :
  -oN/-oX/-oS/-oG <file>: Sortie dans le fichier en paramètre des résultats du scan au format normal, XML, s|<rIpt kIddi3 et Grepable, respectivement
  -oA <basename>: Sortie dans les trois formats majeurs en même temps
  -v: Rend Nmap plus verbeux (-vv pour plus d'effet)
  -d[level]: Sélectionne ou augmente le niveau de débogage (significatif jusqu’à 9)
    –packet-trace: Affiche tous les paquets émis et reçus
    –iflist: Affiche les interfaces et les routes de l’hôte (pour débogage)
    –log-errors: Journalise les erreurs/alertes dans un fichier au format normal
    –append-output: Ajoute la sortie au fichier plutôt que de l’écraser
    –resume <filename>: Reprend un scan interrompu
    –stylesheet <path/URL>: Feuille de styles XSL pour transformer la sortie XML en HTML
    –webxml: Feuille de styles de références de Insecure.Org pour un XML plus portable
    –no_stylesheet: Nmap n’associe pas la feuille de styles XSL à la sortie XML
  • Divers :
  -6: Active le scan IPv6
  -A: Active la détection du système d'exploitation et des versions
    --datadir <dirname>: Spécifie un dossier pour les fichiers de données de Nmap
    --send-eth/--send-ip: Envoie des paquets en utilisant des trames Ethernet ou des paquets IP bruts
    --privileged: Suppose que l'utilisateur est entièrement privilégié -V: Affiche le numéro de version
    --unprivileged: Suppose que l'utilisateur n'a pas les privilèges d'usage des raw socket
  -h: Affiche ce résumé de l'aide

ShareThis

Tags:Linux, scanner de ports, tuto nmap, nmap, man nmap

Vous pourriez être intéressé par :

Retour à La Une de Logo Paperblog

Ces articles peuvent vous intéresser :

A propos de l’auteur


Sckyzo 101 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossiers Paperblog