📋 Fiche Outil : Nmap


📋 Note
Outil Similaire : masscan, rustscan

nmap furtif


🎯 Objectif Principal
Nmap (Network Mapper) est un scanner de ports et de services open source, considéré comme l’outil fondamental pour la découverte de réseaux et l’audit de sécurité. Il permet de découvrir quels hôtes sont actifs sur un réseau, quels services (applications) ces hôtes proposent, quels systèmes d’exploitation ils exécutent, quels types de filtres/pare-feu sont en place, et des dizaines d’autres caractéristiques.

Syntaxe Générale
bash
nmap [Type de Scan] [Options] {Cible}

Description

Paramètre (Flag)

Option Description Exemple d’utilisation
-sS Scan TCP SYN (stealth scan) nmap -sS 192.168.1.10
-sV Détection de version des services nmap -sV 192.168.1.10
-sC Équivalent à -script=default, lance une série de scripts de base sûrs. nmap -sC 192.168.1.10
-A Active l’OS detection, traceroute, -sV, -sC nmap -A 192.168.1.10
-v Mode verbeux (affiche plus d’infos pendant le scan)
-sC Lance les scripts NSE par défaut nmap -sC 192.168.1.10
-p- Scan tous les ports TCP (1-65535) nmap -p- 192.168.1.10
-T4 Vitesse du scan (0 à 5) – 4 = rapide sans être trop bruyant nmap -T4 192.168.1.10
-P0 Ne fait pas de ping préalable avant de scanner. Utile si la machine ne répond pas aux ping ICMP
-Pn Ignore le ping → force le scan même si la machine ne répond pas au ping nmap -Pn 192.168.1.10
--min-rate=100 Force au moins 100 paquets/seconde (accélère le scan) nmap --min-rate=100 -p- 192.168.1.10
--max-rate=500 Limite la vitesse à max 500 paquets/sec (utile en scan furtif) nmap --max-rate=500 -p- 192.168.1.10
-oN result.txt Sauvegarde la sortie normale dans un fichier nmap -oN result.txt 192.168.1.10
-oA scan-result Génère 3 fichiers : normal (.nmap), XML (.xml), grepable (.gnmap) nmap -oA scan-result 192.168.1.10
-oX scan-result Sauvegarde le résultat au format XML dans un fichier nommé
--script vuln Lance les scripts NSE de type vulnérabilité nmap --script vuln 192.168.1.10
--webxlm Spécifique à la conversion web : Ajoute un schéma XSLT pour que le fichier XML puisse être ouvert dans un navigateur (beau rendu web)

Commande Essentiel

-sn Identifier les hôtes actifs sur un sous-réseau nmap -sn 192.168.1.0/24
-Pn Identifier les hôtes actifs en ignorant le ping (utile si le pare-feu bloque l’ICMP) : nmap -Pn
-O Tenter d’identifier l’OS de la cible nmap -O
-sV -sC -p- -oN nmap_scan.txt Combine la détection de version, les scripts par défaut et le scan de tous les ports nmap -sV -sC -p- -oN nmap_scan.txt

Exemple

  • scan de tous les ports, rapide, même si la machine ne répond pas au ping, et export complet des résultats
bash
nmap -sS -sV -p- -T4 -Pn --min-rate=100 -oA fullscan 192.168.1.10
## FSDFSDF
FEDF
  • Rechercher des vulnérabilités (avec scripts NSE vuln) :
bash
nmap --script vuln 192.168.1.20
  • Scanner uniquement les ports web (HTTP, HTTPS) :
bash
nmap -p 80,443 -sV --script http-enum 192.168.1.20
  • Scanner une URL ou domaine :
bash
nmap -sS -sV -A -T4 scanme.nmap.org
  • Fuffly
bash
nmap -T4 -p- -v -A -oX -P0 fluffy_tcp.scan 10.10.11.69 --webxml

Step By Step

Pour faire un scan nmap et éviter au maximun les détections, il faut scanner un minimum de port.
On fait les Scan Petit à petit :

bash
nmap -T4 -p- --min-rate 1000 -Pn {IP}

on copie le résultat et on le colle dans le fichier txt

bash
mousepad nmap.txt

Script Nmap

Le Nmap Scripting Engine (NSE) est la fonctionnalité la plus puissante de Nmap. Il permet d’automatiser des tâches et de chercher des vulnérabilités spécifiques.

Commande

  • Lancer tous les scripts de la catégorie « vuln » sur les services détectés :
bash
nmap -sV --script=vuln <IP>
  • Énumérer les partages SMB sur un serveur Windows :
bash
nmap -p 445 --script=smb-enum-shares <IP>

Exemple

Port SMB / Samba (139/445)

bash
nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.235.207

-script=smb-enum-shares.nse,smb-enum-users.nse : Ici, tu demandes à Nmap d’utiliser deux scripts spécifiques de sa bibliothèque (NSE – Nmap Scripting Engine).

  • smb-enum-shares.nse : Ce script tente de lister tous les partages de fichiers (les « shares ») disponibles sur la machine cible.
  • smb-enum-users.nse : Ce script essaie d’énumérer les utilisateurs locaux de la machine.

Port RCPBIND (111)

bash
nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.10.235.207

-script=nfs-ls,nfs-statfs,nfs-showmount : Ici, tu demandes à Nmap d’exécuter trois scripts spécialisés pour NFS, l’un après l’autre.

  • nfs-showmount : Ce script est le plus important au début. Il demande au serveur : « Montre-moi (show) la liste des dossiers que tu partages (mounts) ». C’est l’équivalent de la commande Linux showmount -e <IP>.
  • nfs-statfs : Si des partages sont trouvés, ce script tente d’obtenir des statistiques (statfs pour _statistics file system_) sur ces partages, comme l’espace total, l’espace utilisé et l’espace libre.
  • nfs-ls : C’est le script le plus intéressant pour un attaquant. S’il trouve des partages ouverts, il essaie de lister (ls) tous les fichiers et dossiers à l’intérieur de ces partages

>

⚠️ Conseils et Points d’Attention

  • Vitesse vs Précision : Utilisez les templates de timing (T0 à T5) pour ajuster la vitesse du scan. T4 (agressif) est un bon compromis. T5 (insane) est très bruyant et peut manquer des ports.
  • Ne pas faire confiance à 100% à la détection d’OS : Elle peut être trompée par certains systèmes.
  • Les scans UDP (**sU**) sont très lents, ne les lancez sur tous les ports que si c’est absolument nécessaire.

Suivi & Recommandation

Pour être le plus discret possible :

  • Scanner les ports
bash
nmap -p- -T4 {ip} -Pn --min-rate 1000 
  • Analyser les versions et services des ports trouver
bash
nmap -T4 -A -p$(cat open_ports.txt) --min-rate 1000 -Pn {ip}
  • Exécuter un script de vulnérabilité avec nmap
bash
nmap -T4 --script=vuln -p$(cat open_ports.txt) {ip} --min-rate 1000

Identifier les Port Réseau & Protocol et utiliser les outils adéquates pour énumérer et exploiter les vulnérabilité.