Apprenez l'installation et l'utilisation de base de Nmap

CybersecurityCybersecurityBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à installer et à utiliser les fonctionnalités de base de Nmap, un outil puissant de numérisation de réseau et d'audit de sécurité. Nmap, également connu sous le nom de Network Mapper, est une utilité open - source largement utilisée par les administrateurs système et les experts en sécurité pour trouver des hôtes, des services et des vulnérabilités sur un réseau.

Ce laboratoire vous guidera tout au long de l'installation de Nmap, de la configuration d'un service local pour la numérisation et de la réalisation de numérisations de base pour comprendre les capacités de Nmap.

Installation de Nmap

Dans cette étape, nous vous guiderons tout au long du processus d'installation de Nmap sur votre système Ubuntu Linux. Nmap est un outil puissant de numérisation de réseau largement utilisé en cybersécurité pour des tâches telles que la découverte de réseau et l'audit de sécurité. Il est disponible dans les dépôts Ubuntu par défaut, ce qui signifie que le processus d'installation est assez simple.

Tout d'abord, vous devez ouvrir votre terminal. Le terminal est une interface basée sur le texte qui vous permet d'interagir avec votre système en entrant des commandes. Par défaut, vous devriez être dans le répertoire /home/labex/project. Si vous n'êtes pas dans ce répertoire, vous pouvez y accéder en utilisant la commande suivante. Cette commande change votre répertoire de travail actuel pour /home/labex/project.

cd /home/labex/project
Terminal avec l'installation de Nmap

Maintenant que vous êtes dans le bon répertoire, il est temps de mettre à jour la liste des paquets et d'installer Nmap. La liste des paquets contient des informations sur tous les logiciels disponibles dans les dépôts Ubuntu. La mise à jour de cette liste garantit que vous obtenez la dernière version de Nmap.

sudo apt update
sudo apt install nmap -y

La commande sudo est utilisée pour exécuter des commandes avec des privilèges administratifs. Étant donné que l'installation de logiciels nécessite un accès administratif, vous devez utiliser sudo. Le drapeau -y est utilisé avec la commande apt install. Il répond automatiquement "oui" à toutes les invitations pendant le processus d'installation, vous n'avez donc pas à confirmer manuellement chaque étape.

Une fois l'installation terminée, il est important de vérifier que Nmap a été installé correctement. Vous pouvez le faire en vérifiant sa version. L'option --version de la commande nmap affiche les informations de version de Nmap.

nmap --version

Vous devriez voir une sortie similaire à celle-ci (notez que votre version peut être différente) :

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1f nmap-libssh2-1.8.2 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

Cette sortie confirme que Nmap est installé sur votre système. Elle fournit également des informations sur la version de Nmap et les options de compilation utilisées, ce qui peut être utile pour la résolution de problèmes ou pour comprendre les capacités de votre installation de Nmap.

Configuration d'un service local pour la numérisation

Avant de commencer à utiliser Nmap pour la numérisation, il est essentiel d'avoir un service cible en cours d'exécution. De cette façon, nous pouvons tester efficacement les capacités de numérisation de Nmap. Dans cette étape, nous allons configurer un simple serveur HTTP en utilisant le module intégré http.server de Python. Le module http.server de Python est un outil pratique qui nous permet de démarrer rapidement un serveur HTTP sans avoir besoin de configurations complexes.

Tout d'abord, créons un nouveau répertoire pour notre serveur HTTP. Un répertoire est comme un dossier sur votre ordinateur où nous pouvons stocker tous les fichiers liés à notre serveur.

mkdir -p /home/labex/project/http-server
cd /home/labex/project/http-server

La commande mkdir -p crée un répertoire nommé http-server dans le chemin spécifié. L'option -p garantit que si des répertoires intermédiaires n'existent pas, ils seront également créés. La commande cd change ensuite notre répertoire de travail actuel pour le répertoire http-server nouvellement créé.

Maintenant, créons un simple fichier HTML que notre serveur servira. HTML est le langage de balisage standard pour créer des pages web.

echo "<html><body><h1>Welcome to the Nmap Lab</h1></body></html>" > index.html

Cette commande utilise la commande echo pour afficher le code HTML dans le terminal, puis redirige cette sortie vers un fichier nommé index.html. Ainsi, nous avons créé un fichier avec une structure HTML de base et un message de bienvenue.

Ensuite, nous allons démarrer le serveur HTTP Python.

python3 -m http.server 8000

Cette commande utilise l'interpréteur python3 pour exécuter le module http.server comme un script. L'option -m indique à Python d'exécuter le module comme un script. Nous spécifions le port 8000, ce qui signifie que notre serveur écoutera les requêtes entrantes sur ce port.

Open a new terminal tab or window to continue

Ouvrez un nouvel onglet ou une nouvelle fenêtre de terminal pour continuer.

Pour vérifier que le serveur est en cours d'exécution, vous pouvez utiliser la commande curl. curl est un outil en ligne de commande utilisé pour transférer des données depuis ou vers un serveur.

curl http://localhost:8000

Lorsque vous exécutez cette commande, curl envoie une requête au serveur HTTP en cours d'exécution sur localhost (qui fait référence à votre propre ordinateur) au port 8000. Si le serveur fonctionne correctement, vous devriez voir le contenu HTML que nous avons créé précédemment.

127.0.0.1 - - [13/Sep/2024 15:24:21] "GET / HTTP/1.1" 200 -
<html>
  <body>
    <h1>Welcome to the Nmap Lab</h1>
  </body>
</html>

Cette sortie montre que le serveur a reçu la requête, l'a traitée avec succès (indiqué par le code d'état 200) et a renvoyé le contenu HTML du fichier index.html.

Numérisation de base avec Nmap

Maintenant que nous avons réussi à installer Nmap et à configurer un service local, il est temps de commencer à effectuer quelques numérisations de base. Cela vous aidera à comprendre le fonctionnement de Nmap et le type d'informations qu'il peut fournir.

Tout d'abord, nous allons effectuer une simple numérisation TCP connect sur notre serveur HTTP local. Une numérisation TCP connect est un type de numérisation de base dans Nmap. Elle tente d'établir une connexion TCP complète au port cible. Si la connexion réussit, cela signifie que le port est ouvert.

Voici la commande pour effectuer cette numérisation :

nmap -sT -p 8000 localhost

Décortiquons cette commande :

  • -sT est une option qui spécifie une numérisation TCP connect. Cela indique à Nmap d'utiliser la méthode TCP connect pour vérifier l'état des ports.
  • -p 8000 indique que nous voulons que Nmap ne numérise que le port 8000. Vous pouvez modifier ce numéro pour numériser d'autres ports si nécessaire.
  • localhost est la cible de notre numérisation. Il fait référence à la machine locale sur laquelle le service est en cours d'exécution.

Après avoir exécuté cette commande, vous devriez voir une sortie similaire à celle-ci :

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE
8000/tcp open  http-alt

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds

Cette sortie montre que le port 8000 est ouvert et exécute un service HTTP. La colonne STATE indique l'état du port, et dans ce cas, il est open. La colonne SERVICE donne une idée du type de service qui peut être exécuté sur ce port.

Maintenant, effectuons une numérisation plus détaillée. Parfois, savoir simplement qu'un port est ouvert n'est pas suffisant. Nous pourrions vouloir en savoir plus sur le service exécuté sur ce port, comme sa version.

Voici la commande pour une numérisation plus détaillée :

nmap -sV -p 8000 localhost

L'option -sV est utilisée pour indiquer à Nmap de sonder les ports ouverts pour déterminer les informations sur le service/la version. Cela signifie que Nmap tentera de déterminer quel logiciel spécifique et quelle version sont exécutés sur le port ouvert.

Après avoir exécuté cette commande, vous devriez voir une sortie similaire à celle-ci :

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE VERSION
8000/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.48 seconds

Cette sortie fournit des informations plus détaillées sur le service exécuté sur le port 8000. Elle nous indique qu'il s'agit d'un SimpleHTTPServer Python et nous donne même le numéro de version.

Vous pouvez consulter les requêtes Nmap dans les journaux du terminal où vous avez démarré le serveur HTTP Python. Cela peut être utile pour le débogage ou une analyse plus approfondie.

Numérisation de plusieurs ports

Dans les scénarios réels, vous avez souvent besoin de numériser plusieurs ports ou même des plages de ports entières. Explorons comment faire cela avec Nmap.

En matière de numérisation réseau, vous pourriez vouloir vérifier plusieurs ports à la fois. Cela est utile car différents services fonctionnent sur différents ports, et en numérisant plusieurs ports, vous pouvez obtenir une vue globale des services disponibles sur une cible.

Tout d'abord, numérisons les 1000 ports les plus courants sur localhost. Localhost fait référence à l'appareil sur lequel vous travaillez actuellement, représenté par l'adresse IP 127.0.0.1. Numériser les 1000 ports les plus courants est un moyen rapide d'obtenir une vue d'ensemble des services exécutés sur votre machine locale.

nmap localhost

Après avoir exécuté cette commande, vous verrez une sortie similaire à la suivante :

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:29 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8000/tcp open  http-alt

Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

Cette commande, sans spécification de port, numérisera les 1000 ports les plus courants. Vous devriez voir une liste de ports ouverts, fermés et filtrés. La sortie affiche le numéro de port, son état (ouvert, fermé ou filtré) et le service associé.

Maintenant, numérisons tous les 65535 ports. Dans le protocole TCP/IP, il y a au total 65535 ports disponibles. Numériser tous ces ports peut vous donner une image complète des services exécutés sur la cible, mais cela prend plus de temps.

nmap -p- localhost

L'option -p- indique à Nmap de numériser tous les ports de 1 à 65535. Cette numérisation prendra plus de temps à se terminer car elle doit vérifier chaque port.

Enfin, numérisons une plage de ports spécifique. Parfois, vous pourriez avoir une idée des ports sur lesquels un service particulier peut être exécuté, et vous ne voulez numériser que ces ports.

nmap -p 1-1000 localhost

Cette commande numérise les ports de 1 à 1000. En spécifiant une plage de ports, vous pouvez concentrer votre numérisation sur les ports les plus pertinents pour vos besoins.

Formats de sortie et sauvegarde des résultats

Nmap propose une variété de formats de sortie, chacun adapté à différents besoins. Comprendre ces formats et savoir comment sauvegarder les résultats de numérisation est crucial pour une analyse approfondie et le partage de vos découvertes. Dans cette étape, nous allons examiner de plus près certains de ces formats et apprendre à sauvegarder efficacement les résultats de numérisation.

Tout d'abord, effectuons une numérisation et sauvegardons la sortie au format normal. Le format normal est un format de texte lisible par l'homme qui présente les résultats de numérisation de manière claire et directe. Pour sauvegarder la sortie dans ce format, nous utilisons la commande suivante :

nmap -oN normal_output.txt localhost

Dans cette commande, l'option -oN est utilisée pour indiquer à Nmap de sauvegarder la sortie au format normal. normal_output.txt est le nom du fichier où les résultats seront stockés. localhost est la cible que nous numérisons, qui fait référence à la machine locale elle - même.

Maintenant, sauvegardons la sortie au format XML. XML (eXtensible Markup Language, Langage de balisage extensible) est un format largement utilisé pour le stockage et l'échange de données. Il a un format structuré qui peut être facilement analysé par des scripts ou importé dans d'autres outils pour un traitement ultérieur. Pour sauvegarder la sortie au format XML, nous utilisons la commande suivante :

nmap -oX xml_output.xml localhost

Ici, l'option -oX indique à Nmap de sauvegarder la sortie au format XML. xml_output.xml est le fichier où les résultats au format XML seront sauvegardés.

Enfin, sauvegardons la sortie au format « grepable ». Le format « grepable » est conçu pour être facilement analysé par des outils comme grep, qui est un outil de recherche de texte puissant dans les systèmes de type Unix. Ce format est utile lorsque vous souhaitez rechercher rapidement des informations spécifiques dans les résultats de numérisation. Pour sauvegarder la sortie au format « grepable », nous utilisons la commande suivante :

nmap -oG grepable_output.txt localhost

L'option -oG est utilisée pour sauvegarder la sortie au format « grepable », et grepable_output.txt est le fichier où les résultats seront stockés.

Après avoir sauvegardé les résultats dans différents formats, vous voudrez peut - être afficher le contenu de ces fichiers. Vous pouvez utiliser la commande cat pour afficher le contenu d'un fichier texte. Par exemple, pour afficher le fichier de sortie au format normal, vous pouvez utiliser la commande suivante :

cat normal_output.txt

Cela affichera le contenu du fichier normal_output.txt dans le terminal, vous permettant de voir les résultats de numérisation.

Résumé

Dans ce laboratoire, vous avez appris les bases de Nmap, un outil puissant de numérisation réseau et d'audit de sécurité. Tout d'abord, vous avez installé Nmap sur un système Ubuntu Linux et vérifié son installation. Ensuite, vous avez configuré un serveur HTTP local comme cible pour les numérisations, montrant ainsi comment créer un service simple pour les tests.

Vous avez également exploré diverses techniques de numérisation, allant des numérisations de ports de base à la détection détaillée des versions de services. Vous avez appris à numériser des ports spécifiques, des plages de ports et tous les 65535 ports d'un système, ce qui est crucial pour comprendre le réseau et trouver les vulnérabilités potentielles. Enfin, vous avez appris les options de sortie de Nmap, telles que la sauvegarde des résultats au format texte normal, XML et « grepable », qui sont essentielles pour la documentation et l'analyse approfondie.

Ce laboratoire vous a offert une expérience pratique avec Nmap, posant les bases pour des numérisations réseau et des audits de sécurité plus avancés. N'oubliez pas d'utiliser Nmap de manière responsable et avec l'autorisation appropriée.