Nmap est un puissant outil d'analyse de réseau pour les audits de sécurité et les tests d'intrusion. C'est l'un des outils essentiels utilisés par les administrateurs réseau pour résoudre les problèmes de connectivité réseau et l'analyse des ports.
Nmap peut également détecter l'adresse Mac, le type de système d'exploitation, la version du service et bien plus encore.
Cet article explique les bases de l'utilisation de nmap
commande pour effectuer diverses tâches réseau.
Installation de Nmap #
Nmap est un programme multiplateforme qui peut être installé sur tous les principaux systèmes d'exploitation. Il a été initialement publié en tant qu'outil Linux uniquement, puis il a été porté sur d'autres systèmes tels que BSD, Windows et macOS.
Si vous préférez une interface graphique à la ligne de commande, Nmap possède également une interface utilisateur graphique appelée Zenmap.
Les packages binaires officiels sont disponibles au téléchargement à partir de la page de téléchargement de Nmap.
La procédure d'installation est simple et varie en fonction de votre système d'exploitation.
Installer Nmap sur Ubuntu et Debian #
Nmap est disponible à partir des référentiels Ubuntu et Debian par défaut. Pour l'installer, exécutez :
sudo apt update
sudo apt install nmap
Installer Nmap sur CentOS et Fedora #
Sur CentOS et d'autres dérivés de Red Hat, exécutez :
sudo dnf install nmap
Installer Nmap sur macOS #
Les utilisateurs de macOS peuvent installer Nmap en téléchargeant le package d'installation ".dmg" depuis le site Nmap ou via Homebrew :
brew install nmap
Installer Nmap sur Windows #
La version Windows de Nmap présente certaines limitations et est généralement un peu plus lente que la version UNIX.
L'option la plus simple pour installer Nmap sur Windows est de télécharger et d'exécuter le fichier exe d'auto-installation.
Vous pouvez exécuter Nmap sous Windows soit à partir de la ligne de commande, soit en lançant le programme Zenmap. Pour plus d'informations sur l'utilisation de Nmap sous Windows, consultez les instructions d'utilisation post-installation.
Utiliser Nmap #
Nmap est généralement utilisé pour auditer la sécurité du réseau, le mappage du réseau, identifier les ports ouverts et rechercher des appareils en ligne.
La syntaxe simplifiée du nmap
commande est la suivante :
nmap [Options] [Target...]
L'exemple le plus basique d'utilisation de Nmap consiste à analyser une seule cible en tant qu'utilisateur standard sans spécifier d'options :
nmap scanme.nmap.org
Lorsqu'il est appelé en tant qu'utilisateur non root qui n'a pas de privilèges de paquets bruts, nmap
exécute l'analyse de connexion TCP. Le (-sT
) est activé par défaut en mode non privilégié.
La sortie ressemblera à ceci, y compris des informations de base sur l'analyse et une liste des ports TCP ouverts et filtrés.
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-16 20:19 CET
Nmap scan report for cast.lan (192.168.10.121)
Host is up (0.048s latency).
Not shown: 981 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
143/tcp open imap
443/tcp open https
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
1025/tcp open NFS-or-IIS
1080/tcp open socks
8080/tcp open http-proxy
8081/tcp open blackice-icecap
Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds
L'option d'analyse la plus populaire est l'analyse TCP SYN (-sS
) qui est plus rapide que l'option de connexion et fonctionne avec toutes les piles TCP conformes.
-sS
est activé par défaut lorsque nmap
est appelé en tant qu'utilisateur avec des privilèges administratifs :
sudo nmap 192.168.10.121
Pour une sortie plus détaillée, utilisez l'augmentation de la verbosité avec -v
ou -vv
:
sudo nmap -vv 192.168.10.121
Pour effectuer une analyse UDP, invoquez la commande avec le (-sU
) en tant qu'utilisateur root :
sudo nmap -sU 192.168.10.121
Pour une liste complète des méthodes d'analyse de ports, visitez la page de documentation Nmap.
Nmap prend également en charge les adresses IPv6. Pour spécifier un hôte IPv6, utilisez le -6
choix :
sudo nmap -6 fd12:3456:789a:1::1
Spécification des hôtes cibles #
Nmap traite tous les arguments qui ne sont pas des options comme des hôtes cibles.
Les arguments sont considérés comme des options s'ils commencent par un tiret simple ou double (-
, --
). L'option la plus simple est de passer une ou plusieurs adresses cibles ou noms de domaine :
nmap 192.168.10.121 host.to.scan
Vous pouvez utiliser la notation CIDR pour spécifier une plage réseau :
nmap 192.168.10.0/24
Pour spécifier une plage d'octets, utilisez le tiret. Par exemple, pour scanner 192.168.10.1
, 192.168.11.1
, et 192.168.12.1
:
nmap 192.168.10-12.1
Un autre caractère que vous pouvez utiliser pour spécifier les cibles est la virgule. La commande suivante cible les mêmes hôtes que celle ci-dessus :
nmap 192.168.10,11,12.1
Vous pouvez combiner tous les formulaires :
nmap 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Pour vous assurer que vous avez spécifié les bons hôtes avant l'analyse, utilisez l'option d'analyse de liste (-sL
), qui répertorie uniquement les cibles sans exécuter d'analyse :
nmap -sL 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Si vous souhaitez exclure les cibles incluses dans la plage que vous avez spécifiée, utilisez le --exclude
choix :
nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12
Spécification et analyse des ports #
Par défaut, Nmap effectue une analyse rapide des 1000 ports les plus populaires. Ces ports ne sont pas les 1000 premiers ports consécutifs, mais les 1000 ports les plus couramment utilisés, allant de 1 à 65389.
Pour rechercher tous les ports de 1 à 65535, utilisez le -p-
choix :
nmap -p- 192.168.10.121
Chaque port peut être dans l'un des états suivants :
- open - Le programme en cours d'exécution sur le port répond à la requête.
- fermé - Aucun programme ne s'exécute sur le port et l'hôte répond aux requêtes.
- filtré - L'hôte ne répond pas à la demande.
Par exemple, pour scanner uniquement le port 443, vous utiliserez la commande suivante :
nmap -p 443 192.168.10.121
Pour spécifier plusieurs ports, séparez les ports cibles par une virgule :
nmap -p 80,443 192.168.10.121
Les plages de ports peuvent être spécifiées avec le symbole du tiret. Par exemple, pour analyser tous les ports UDP allant de 1 à 1024, vous exécuteriez :
sudo nmap -sU -p 1-1024 192.168.10.121
Tous combinés :
nmap -p 1-1024,8080,9000 192.168.10.121
Les ports peuvent également être spécifiés à l'aide du nom de port. Par exemple, pour rechercher le port 22, ssh, vous pouvez utiliser :
nmap -p ssh 192.168.10.121
Analyse Ping #
Pour effectuer une analyse ping ou une découverte d'hôte, appelez le nmap
commande avec le -sn
choix :
sudo nmap -sn 192.168.10.0/24
Le -sn
L'option indique à Nmap uniquement de découvrir les hôtes en ligne et de ne pas effectuer d'analyse de port. Ceci est utile lorsque vous souhaitez déterminer rapidement lesquels des hôtes spécifiés sont opérationnels.
Désactivation de la résolution de nom DNS #
Le comportement par défaut de Nmap consiste à effectuer une résolution DNS inverse pour chaque hôte découvert, ce qui augmente le temps d'analyse.
Lors de l'analyse de grands réseaux, il est judicieux de désactiver la résolution DNS inverse et d'accélérer les analyses. Pour ce faire, invoquez la commande avec le -n
choix :
sudo nmap -n 192.168.10.0/16
Numéro de détection du système d'exploitation, du service et de la version
Nmap peut détecter le système d'exploitation hôte distant à l'aide de l'empreinte de la pile TCP/IP. Pour exécuter la détection du système d'exploitation, appelez la commande avec le -O
choix :
sudo nmap -O scanme.nmap.org
Si Nmap peut détecter le système d'exploitation hôte, il affichera quelque chose comme ci-dessous :
...
Device type: general purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5
OS details: Linux 5.0 - 5.4
Network Distance: 18 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.47 seconds
Généralement, les services système écoutent sur des ports standard qui leur sont bien connus et qui leur sont réservés. Par exemple, si le port 22 qui correspond au service SSH est ouvert, vous supposerez qu'un serveur SSH s'exécute sur l'hôte. Cependant, vous ne pouvez pas en être absolument sûr, car les utilisateurs peuvent exécuter des services sur les ports de leur choix.
Avec la détection de service et de version, Nmap vous montrera quel programme écoute sur le port et la version du programme.
Pour rechercher le service et la version, utilisez le -sV
choix :
sudo nmap -sV scanme.nmap.org
...
PORT STATE SERVICE VERSION
19/tcp filtered chargen
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
9929/tcp open nping-echo Nping echo
31337/tcp open tcpwrapped
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
...
Vous pouvez également rechercher le système d'exploitation, les versions et exécuter traceroute en une seule commande à l'aide de -A
choix :
sudo nmap -A 192.168.10.121
Numéro de sortie Nmap
Par défaut, Nmap imprime les informations sur la sortie standard (stdout).
Si vous analysez un grand réseau ou avez besoin des informations pour une utilisation ultérieure, vous pouvez enregistrer la sortie dans un fichier.
Nmap fournit plusieurs types de sortie. Pour enregistrer la sortie au format normal, utilisez le -oN
option suivie du nom du fichier :
sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt
L'option la plus populaire consiste à enregistrer la sortie au format XML. Pour ce faire, utilisez le -oX
choix :
sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml
Un autre format utile est la sortie grepable, qui peut être analysée avec les outils Unix standard comme grep
, awk
et cut
. La sortie grepable est spécifiée avec le -oG
choix :
sudo nmap -sU -p 1-1024 192.168.10.121 -oG output
Moteur de script Nmap #
L'une des fonctionnalités les plus puissantes de Nmap est son moteur de script. Nmap est livré avec des centaines de scripts, et vous pouvez également écrire vos propres scripts en langage Lua.
Vous pouvez utiliser des scripts pour détecter les logiciels malveillants et les portes dérobées, effectuer des attaques par force brute, etc.
Par exemple, pour vérifier si un hôte donné est compromis, vous pouvez utiliser :
nmap -sV --script http-malware-host scanme.nmap.org
Conclusion #
Nmap est un outil open source utilisé principalement par les administrateurs réseau pour découvrir les hôtes et scanner les ports.
Veuillez noter que dans certains pays, il n'est pas légal de scanner les réseaux sans autorisation.