Analyse de réseau avec Nmap

NmapBeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous allez apprendre à utiliser Nmap, un puissant outil d'analyse réseau open-source largement plébiscité par les professionnels de la sécurité. Nmap permet d'identifier les hôtes actifs, les ports ouverts et les services en cours d'exécution au sein d'un réseau, offrant ainsi une visibilité indispensable pour toute évaluation de sécurité.

Vous acquerrez une expérience pratique en effectuant des scans Nmap fondamentaux, en interprétant les résultats obtenus et en appréhendant différentes techniques de balayage. Ces compétences sont essentielles pour l'analyse de la sécurité réseau, tout en soulignant l'importance des pratiques éthiques : ne scannez jamais un réseau sans autorisation préalable.

Installation de Nmap

Avant d'explorer les réseaux, nous devons nous équiper de l'outil adéquat. Nmap (Network Mapper) est un utilitaire gratuit et open-source qui aide les administrateurs réseau et les experts en sécurité à découvrir les appareils connectés et à identifier les services disponibles. Dans cette étape, nous allons installer Nmap sur votre système.

  1. Tout d'abord, ouvrons le terminal. C'est ici que nous exécuterons toutes nos commandes Nmap. Sur les systèmes Linux comme notre environnement de laboratoire, le terminal est le moyen privilégié pour interagir avec les outils réseau. Sur votre bureau, localisez et ouvrez le Xfce Terminal.

Fenêtre Xfce Terminal ouverte

Remarque : Les utilisateurs de la version gratuite n'ont pas d'accès direct à Internet, c'est pourquoi Nmap est déjà pré-installé dans l'environnement. Vous pouvez passer directement au point 4 de la liste (vérification de l'installation). Passez à la version Pro pour vous entraîner à installer Nmap par vous-même.

Utilisateurs Pro uniquement
  1. Une fois le terminal ouvert, nous devons mettre à jour la liste des paquets. C'est une première étape cruciale car elle garantit que notre système connaît les dernières versions logicielles disponibles. Tapez la commande suivante et appuyez sur Entrée :
sudo apt-get update

sudo signifie "superuser do" et nous octroie des privilèges d'administration, souvent nécessaires pour l'installation de logiciels.

  1. Maintenant que nos listes de paquets sont à jour, installons Nmap. La commande suivante téléchargera et installera Nmap ainsi que toutes les dépendances requises :
sudo apt-get install nmap -y

L'option -y confirme automatiquement "oui" à toutes les invites d'installation, ce qui est pratique pour automatiser le processus.

  1. Une fois l'installation terminée, nous devons vérifier que Nmap est correctement configuré. Vérifier la version permet de confirmer le succès de l'opération et de connaître les fonctionnalités disponibles. Saisissez :
nmap --version

Vous devriez voir un résultat similaire à celui-ci :

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

Le numéro de version peut varier car Nmap est régulièrement mis à jour.

Félicitations ! Nmap est maintenant prêt à l'emploi. Considérez Nmap comme une lampe torche puissante qui vous permet de voir ce qui se passe sur votre réseau : quels appareils sont connectés, quels services ils proposent et même quel système d'exploitation ils utilisent. Ces capacités en font un outil indispensable pour l'administration et les tests de sécurité.

Si vous souhaitez explorer l'intégralité des fonctions de Nmap, vous pouvez taper man nmap dans le terminal pour consulter le manuel. Cette documentation contient toutes les options avancées, mais ne vous laissez pas impressionner : nous allons commencer par les fondamentaux et progresser étape par étape.

Comprendre les adresses IP

Avant de scanner des réseaux, il est crucial de comprendre ce qu'est une adresse IP. Imaginez l'adresse IP comme l'adresse postale de votre ordinateur sur le réseau. Tout comme un service postal a besoin de votre adresse pour livrer un courrier, les autres appareils ont besoin de votre adresse IP pour communiquer avec votre machine.

  1. Une adresse IP est un identifiant unique pour un appareil sur un réseau. Elle ressemble généralement à une série de nombres séparés par des points, comme 192.168.1.1. Ces nombres vont de 0 à 255, et chaque segment représente une partie de la hiérarchie du réseau. La première partie identifie généralement le réseau lui-même, tandis que les dernières parties identifient les appareils spécifiques.
graph LR
    A[Internet] --- B[Routeur 192.168.1.1]
    B --- C[PC 192.168.1.10]
    B --- D[Portable 192.168.1.11]
    B --- E[Smartphone 192.168.1.12]
    B --- F[Smart TV 192.168.1.13]
    style A fill:#f9f,stroke:#333,stroke-width:4px
    style B fill:#bbf,stroke:#333,stroke-width:2px
    style C fill:#dfd,stroke:#333,stroke-width:2px
    style D fill:#dfd,stroke:#333,stroke-width:2px
    style E fill:#dfd,stroke:#333,stroke-width:2px
    style F fill:#dfd,stroke:#333,stroke-width:2px
  1. Pour trouver votre propre adresse IP, nous allons utiliser une commande qui affiche les informations des interfaces réseau. Il est important de connaître sa propre adresse avant de scanner d'autres cibles. Entrez cette commande :
ip addr show | grep inet

Analysons cette commande :

  • ip addr show affiche les détails de toutes les interfaces réseau du système.
  • Le symbole | (appelé "pipe" ou tube) redirige la sortie de la première commande vers la suivante.
  • grep inet filtre le résultat pour n'afficher que les lignes contenant "inet", qui incluent les adresses IP dans un format lisible.

Vous verrez un résultat de ce type :

inet 127.0.0.1/8 scope host lo
inet 172.19.0.3/16 brd 172.19.255.255 scope global eth1

Les chiffres après la barre oblique (comme /8 ou /16) utilisent la notation CIDR (Classless Inter-Domain Routing). Cette notation indique combien de bits de l'adresse IP sont réservés à la partie réseau par rapport à la partie appareil. Par exemple, /16 signifie que les 16 premiers bits (les deux premiers nombres) identifient le réseau, tandis que les bits restants sont attribués aux appareils individuels.

  1. Dans ce résultat, vous remarquerez plusieurs adresses. Voici leur signification concrète :

    • 127.0.0.1 est l'adresse de "bouclage" ou "localhost". Cette adresse spéciale renvoie toujours à votre propre ordinateur ; elle est utilisée lorsqu'un programme doit communiquer avec lui-même.
    • 172.19.0.3 est l'adresse réseau réelle de votre machine. C'est celle que les autres appareils utiliseraient pour vous envoyer des données.
  2. Notez l'adresse IP qui n'est pas 127.0.0.1 (dans cet exemple, 172.19.0.3). Nous utiliserons cette adresse réseau réelle pour nos exercices de scan.

La notation CIDR est essentielle pour comprendre quels appareils se trouvent sur votre réseau local par rapport aux réseaux distants.

Vous pourriez aussi voir des adresses commençant par "fe80::" : ce sont des adresses IPv6, la version plus récente du protocole IP. Bien que l'IPv6 soit de plus en plus répandu, la plupart des réseaux locaux utilisent encore principalement l'IPv4, sur lequel nous allons nous concentrer.

Effectuer un scan Nmap de base

Maintenant que nous maîtrisons les adresses IP et que Nmap est installé, effectuons notre premier scan. Nous allons cibler votre propre machine, ce qui est la méthode la plus sûre pour apprendre le fonctionnement de base de Nmap.

  1. Utilisez l'adresse IP identifiée à l'étape précédente. La commande de base nécessite simplement l'adresse IP cible. Exécutez la commande suivante en remplaçant <YOUR_IP> par votre adresse :
nmap <YOUR_IP>

Par exemple, si votre IP est 172.19.0.3, vous taperez :

nmap 172.19.0.3

Cette commande demande à Nmap de scanner les 1000 ports TCP les plus courants sur l'adresse spécifiée. Les ports TCP sont comme des portes numérotées sur un ordinateur par lesquelles les services réseau communiquent.

  1. Après l'exécution, Nmap affichera les résultats. Voici un exemple type :
Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-24 10:00 CST
Nmap scan report for 336efdcfb776.external (172.19.0.3)
Host is up (0.00017s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus

Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds
  1. Analysons chaque partie de ce rapport :

    • "Starting Nmap 7.80" : Indique la version utilisée.
    • "Host is up (0.00017s latency)" : Confirme que la machine cible a répondu, avec le temps de réponse en secondes.
    • "Not shown: 998 closed ports" : Signifie que sur les 1000 ports testés, 998 n'acceptaient pas de connexions.
    • "PORT STATE SERVICE" : Liste les ports ouverts trouvés :
      • 22/tcp open ssh : Le port 22 est ouvert pour le service SSH (Secure Shell), utilisé pour l'administration sécurisée à distance.
      • 3001/tcp open nessus : Le port 3001 est ouvert et semble héberger Nessus, un scanner de vulnérabilités.
  2. Ce scan de base fournit des informations précieuses pour :

    • L'audit de sécurité, en identifiant les ports ouverts inutiles qui pourraient être exploités.
    • Le dépannage réseau, en vérifiant que les services attendus sont bien accessibles.
    • La détection d'incidents, en repérant des services inattendus pouvant indiquer une compromission.

N'oubliez pas : l'analyse réseau ne doit être effectuée que sur des systèmes qui vous appartiennent ou pour lesquels vous avez une autorisation explicite. Le scan non autorisé peut être illégal.

Effectuer un scan de détection de système d'exploitation

Nmap ne se contente pas de trouver des ports ouverts. Il peut aussi tenter de déterminer le système d'exploitation (OS) de la cible. Cette fonctionnalité est extrêmement utile car chaque système possède ses propres vulnérabilités et nécessite des mesures de sécurité spécifiques.

La détection d'OS fonctionne en envoyant des paquets spécifiques à la cible et en analysant ses réponses. Chaque système d'exploitation réagit de manière légèrement différente, créant une "empreinte numérique" que Nmap compare avec sa base de données.

  1. Pour effectuer ce scan, on utilise l'option -O (attention, c'est la lettre majuscule 'O', pas le chiffre zéro). Ce scan nécessite des privilèges "root" car il doit manipuler des paquets bruts à bas niveau. Nous utiliserons sudo. Remplacez <YOUR_IP> par votre adresse :
sudo nmap -O <YOUR_IP>

Par exemple :

sudo nmap -O 172.19.0.3
  1. Le résultat affichera les ports ouverts, mais ajoutera une section sur le système d'exploitation :
Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-24 10:01 CST
Nmap scan report for 336efdcfb776.external (172.19.0.3)
Host is up (0.000035s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.76 seconds
  1. Détails des nouvelles informations :

    • "Device type: general purpose" : Indique qu'il s'agit d'un ordinateur standard et non d'un équipement spécialisé comme un routeur.
    • "Running: Linux 2.6.X" : La supposition principale de Nmap sur la famille et la version du système.
    • "OS CPE" : Un identifiant standardisé (Common Platform Enumeration) pour la version de l'OS.
    • "OS details" : Une identification plus précise basée sur la correspondance de l'empreinte.
  2. Ces informations sont cruciales pour :

    • Identifier les systèmes obsolètes nécessitant des mises à jour de sécurité.
    • Maintenir un inventaire précis du parc informatique.
    • Vérifier que les machines exécutent bien les versions logicielles approuvées.

Notez que la détection d'OS n'est pas infaillible. Des pare-feu peuvent bloquer les sondes de Nmap, ou des configurations de noyau personnalisées peuvent fausser les résultats. Il est toujours recommandé de croiser ces données avec d'autres méthodes de vérification.

Scanner une plage réseau

Dans un environnement réel, vous devrez souvent scanner plusieurs adresses IP ou des segments de réseau entiers. C'est une tâche courante pour découvrir tous les appareils actifs. Essayons de scanner une plage.

  1. Commençons par une petite plage d'adresses. La commande ci-dessous scanne 20 adresses IP consécutives à partir de 172.19.0.1 :
nmap 172.19.0.1-20

Nmap vérifiera séquentiellement chaque adresse de .1 à .20 et signalera les hôtes en ligne ainsi que leurs ports ouverts.

  1. Maintenant, scannons un sous-réseau complet en utilisant la notation CIDR. Le suffixe /24 signifie que nous scannons les 256 adresses du dernier octet. Remplacez <YOUR_NETWORK> par votre adresse réseau :
nmap YOUR_NETWORK /24

Par exemple :

nmap 172.19.0.0/24

Cela couvrira toutes les adresses de 172.19.0.0 à 172.19.0.255.

  1. Pour conserver une trace de vos résultats, utilisez l'option -oN (output normal). Cela créera un fichier texte lisible :
nmap 172.19.0.0/24 -oN network_scan.txt

Le résultat du scan sera enregistré dans le fichier network_scan.txt dans votre répertoire actuel.

  1. Examinons le contenu de ce fichier :
cat network_scan.txt

Le rapport détaille chaque hôte ayant répondu. Exemple :

## Nmap 7.80 scan initiated Fri Sep 27 15:45:29 2024 as: nmap -oN network_scan.txt 172.19.0.0/24
Nmap scan report for iZrj9gvdh5xn02z8rmsn9mZ (172.19.0.1)
Host is up (0.00045s latency).
Not shown: 997 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
111/tcp   open  rpcbind
10010/tcp open  rxapi

... (autres hôtes) ...

## Nmap done at Fri Sep 27 15:45:32 2024 -- 256 IP addresses (5 hosts up) scanned in 3.25 seconds
  1. Analyse du résumé :

    • Le scan a couvert les 256 adresses possibles.
    • Seuls 5 hôtes étaient actifs ("up").
    • Pour chaque hôte, on retrouve son nom (si résolu), son IP, sa latence et la liste de ses ports ouverts.
  2. Applications pratiques :

    • Inventaire réseau : Tenir à jour la liste des équipements connectés.
    • Audit de sécurité : Détecter des appareils ou services non autorisés.
    • Dépannage : Vérifier la connectivité globale d'un segment réseau.

Gardez à l'esprit que le balayage de larges plages réseau peut générer un trafic important et être détecté par les systèmes de surveillance de sécurité.

Résumé

Dans cet atelier, vous avez acquis les bases de l'analyse réseau avec Nmap, un outil incontournable pour la reconnaissance et l'évaluation de la sécurité. Vous avez appris à installer l'outil, à effectuer des scans de base pour identifier les services, à détecter les systèmes d'exploitation et à explorer des plages réseau complètes tout en archivant vos résultats.

Ces compétences constituent le socle de pratiques plus avancées en cybersécurité. Veillez à toujours agir avec éthique et à obtenir les autorisations nécessaires avant toute intervention sur un réseau tiers.