Comment utiliser les flags de scan Nmap

NmapBeginner
Pratiquer maintenant

Introduction

Nmap (Network Mapper) est un outil fondamental en sécurité et administration réseau. Ce laboratoire vous présente les flags de scan Nmap, qui vous permettent d'effectuer une reconnaissance réseau et une évaluation des vulnérabilités efficaces. Grâce à une pratique concrète, vous apprendrez à utiliser diverses commandes Nmap pour découvrir des hôtes, scanner des ports et identifier les services sur un réseau. Ces compétences sont essentielles pour les administrateurs réseau et les professionnels de la sécurité afin de maintenir des environnements réseau sécurisés.

Installation de Nmap et Scan de Base

Installation de Nmap

Nmap n'est pas pré-installé sur la plupart des systèmes, notre première étape est donc de l'installer. Ouvrez un terminal dans votre environnement LabEx et exécutez les commandes suivantes :

sudo apt update
sudo apt install nmap -y

Une fois l'installation terminée, vérifiez que Nmap est correctement installé en vérifiant sa version :

nmap --version

Vous devriez voir une sortie similaire à celle-ci :

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

Comprendre les bases de Nmap

Nmap fonctionne en envoyant des paquets spécialement conçus aux hôtes cibles et en analysant les réponses. Cela permet de déterminer :

  • Quels hôtes sont disponibles sur le réseau
  • Quels services (ports) ils proposent
  • Quels systèmes d'exploitation ils exécutent
  • Quel type de filtres de paquets/pare-feu sont utilisés

La syntaxe de base d'une commande Nmap est :

nmap [scan type] [options] target

Où :

  • [scan type] spécifie le type de scan à effectuer
  • [options] sont des paramètres supplémentaires pour personnaliser le scan
  • target est l'adresse IP, le nom d'hôte ou la plage IP à scanner

Votre premier scan : Scanner le localhost

Commençons par un scan simple de votre propre machine (localhost). Exécutez :

nmap localhost

Cette commande scanne les 1000 ports TCP les plus courants sur votre machine locale. La sortie ressemblera à ceci :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

La sortie montre :

  • L'heure de début du scan
  • L'hôte scanné (localhost/127.0.0.1)
  • Les ports ouverts et leurs services associés
  • L'heure d'achèvement du scan et les statistiques

Comprendre les résultats du scan

Analysons la sortie :

  • PORT : Affiche le numéro de port et le protocole (par exemple, 22/tcp)
  • STATE : Indique si le port est ouvert, fermé ou filtré
  • SERVICE : Affiche le service généralement associé à ce port

Les états de port les plus courants sont :

  • open : Le port accepte les connexions
  • closed : Le port est accessible mais aucune application n'écoute dessus
  • filtered : Nmap ne peut pas déterminer si le port est ouvert car le filtrage des paquets bloque ses sondes

Scanner un port spécifique

Pour scanner un port spécifique, utilisez le flag -p suivi du numéro de port :

nmap -p 22 localhost

La sortie se concentrera uniquement sur le port 22 :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).

PORT   STATE SERVICE
22/tcp open  ssh

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

Scanner une plage de ports

Vous pouvez scanner une plage de ports en utilisant un trait d'union :

nmap -p 20-25 localhost

Cela scanne les ports 20 à 25 :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).

PORT   STATE  SERVICE
20/tcp closed ftp-data
21/tcp closed ftp
22/tcp open   ssh
23/tcp closed telnet
24/tcp closed priv-mail
25/tcp closed smtp

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

Vous avez maintenant appris comment installer Nmap et effectuer des scans de ports de base. Dans l'étape suivante, nous explorerons des techniques de scan plus avancées en utilisant divers flags Nmap.

Exploration des Flags de Scan Nmap Essentiels

Maintenant que vous comprenez les bases de Nmap, explorons quelques flags de scan essentiels qui vous donneront plus de contrôle et d'informations à partir de vos scans.

Scan TCP SYN (-sS)

Le scan TCP SYN est le type de scan par défaut lorsqu'il est exécuté en tant que root. Il est souvent appelé scan "semi-ouvert" car il ne termine jamais les connexions TCP. Il est relativement discret et rapide.

Exécutons un scan SYN sur localhost :

sudo nmap -sS localhost

La sortie ressemblera à ceci :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Scan TCP Connect (-sT)

Le scan TCP Connect est le scan par défaut lorsque Nmap n'est pas exécuté avec des privilèges root. Il termine la poignée de main TCP complète, ce qui le rend plus détectable mais aussi plus fiable dans certains cas.

nmap -sT localhost

Sortie :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Détection de version de service (-sV)

Le flag de détection de version indique à Nmap d'essayer de déterminer la version des services fonctionnant sur les ports ouverts :

nmap -sV localhost

Sortie :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Remarquez comment la sortie inclut désormais des informations de version détaillées pour chaque service. Ceci est extrêmement précieux pour les évaluations de sécurité car certaines versions peuvent présenter des vulnérabilités connues.

Détection du système d'exploitation (-O)

Le flag de détection du système d'exploitation tente de déterminer le système d'exploitation de la cible :

sudo nmap -O localhost

Sortie :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
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.57 seconds

Remarquez que Nmap a détecté que le système exécute le noyau Linux version 4.X ou 5.X.

Combiner les flags pour un scan complet

Vous pouvez combiner plusieurs flags pour obtenir des résultats plus complets. Par exemple, combinons la détection de version de service et la détection du système d'exploitation :

sudo nmap -sV -O localhost

Sortie :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00015s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Scan agressif (-A)

Le flag de scan agressif combine plusieurs options de scan, notamment la détection du système d'exploitation, la détection de version, le scan de script et le traceroute :

sudo nmap -A localhost

Sortie (tronquée pour plus de brièveté) :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp      CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
| mysql-info:
|   Protocol: 10
|   Version: 8.0.30-0ubuntu0.20.04.2
|   Thread ID: 11
|   Capabilities flags: 65535
|   Some Capabilities: SupportsLoadDataLocal, Support41Auth, Speaks41ProtocolOld, IgnoreSigpipes, DontAllowDatabaseTableColumn, FoundRows, SupportsCompression, ConnectWithDatabase, LongPassword, InteractiveClient, SwitchToSSLAfterHandshake, ODBCClient, Speaks41ProtocolNew, IgnoreSpaceBeforeParenthesis, LongColumnFlag, SupportsTransactions, SupportsMultipleResults, SupportsAuthPlugins, SupportsMultipleStatments
|   Status: Autocommit
|   Salt: \x14\x12\x1Fjw\x182\x15\x0D\x12\x13C\x1F\x14\x0D\x07
|_  Auth Plugin Name: caching_sha2_password
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops

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

Remarquez la quantité importante d'informations supplémentaires fournies par le scan agressif, y compris les informations de clé SSH, les détails du serveur HTTP et des informations de service MySQL plus détaillées.

Dans cette étape, vous avez appris plusieurs flags de scan Nmap essentiels et comment les combiner pour obtenir des résultats plus complets. Dans l'étape suivante, nous explorerons des stratégies de scan pratiques pour différents scénarios.

Stratégies de Scan Réseau et Contrôles de Temporisation

Dans cette étape, nous allons découvrir les stratégies de scan réseau et comment contrôler la temporisation et les performances des scans Nmap. Ceci est crucial lors du scan de réseaux plus vastes ou lorsque vous devez être plus discret.

Scanner plusieurs hôtes

Nmap peut scanner plusieurs hôtes de différentes manières :

Scanner une liste d'adresses IP

Vous pouvez spécifier plusieurs adresses IP séparées par des espaces :

nmap 127.0.0.1 127.0.0.2

Scanner une plage d'adresses IP

Vous pouvez scanner une plage d'adresses IP en utilisant la notation CIDR :

nmap 127.0.0.1/30

Cette commande scanne de 127.0.0.0 à 127.0.0.3. La sortie affichera :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

Nmap scan report for 127.0.0.2
Host is up (0.00015s latency).
All 1000 scanned ports on 127.0.0.2 are closed

Nmap scan report for 127.0.0.3
Host is up (0.00013s latency).
All 1000 scanned ports on 127.0.0.3 are closed

Nmap done: 4 IP addresses (3 hosts up) scanned in 0.92 seconds

Options de découverte d'hôtes

Scan Ping (-sn)

Parfois, vous voulez juste savoir quels hôtes sont en ligne sans scanner les ports. Le scan ping est parfait pour cela :

nmap -sn 127.0.0.1/24

Cette commande scannera l'ensemble du sous-réseau 127.0.0.1/24, mais n'effectuera que la découverte d'hôtes sans scan de ports. En raison de la longueur de la sortie, nous ne montrerons qu'un extrait :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Nmap scan report for 127.0.0.2
Host is up (0.00013s latency).
Nmap scan report for 127.0.0.3
Host is up (0.00014s latency).
...
Nmap done: 256 IP addresses (256 hosts up) scanned in 2.34 seconds

Ignorer la découverte d'hôtes (-Pn)

Parfois, les pare-feu bloquent les requêtes ping. Pour contourner cela et scanner tous les hôtes, quelle que soit la réponse ping, utilisez le flag -Pn :

nmap -Pn localhost

Sortie :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:45 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Contrôles de temporisation et de performance

Nmap fournit plusieurs modèles de temporisation qui ajustent divers paramètres de scan :

  • -T0 : Paranoid - Très lent, utilisé pour l'évasion d'IDS (Intrusion Detection System)
  • -T1 : Sneaky - Lent, utilisé pour l'évasion d'IDS
  • -T2 : Polite - Ralentit pour consommer moins de bande passante
  • -T3 : Normal - Par défaut, équilibre la vitesse et la fiabilité
  • -T4 : Aggressive - Plus rapide, suppose un réseau raisonnablement rapide et fiable
  • -T5 : Insane - Très rapide, suppose un réseau extrêmement rapide

Essayons un scan agressif :

nmap -T4 localhost

Sortie :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:50 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Remarquez que le scan s'est terminé légèrement plus rapidement que le scan par défaut.

Formats de sortie

Nmap peut enregistrer les résultats des scans dans différents formats pour une analyse ou un reporting ultérieurs :

Sortie normale (-oN)

Enregistrez les résultats du scan dans un format normal dans un fichier :

nmap -oN scan_results.txt localhost

Cette commande enregistre la sortie du scan dans scan_results.txt dans le répertoire courant.

Sortie XML (-oX)

Enregistrez les résultats du scan au format XML, ce qui est utile pour l'analyse avec d'autres outils :

nmap -oX scan_results.xml localhost

Tous les formats (-oA)

Enregistrez les résultats du scan dans tous les formats (normal, XML et grepable) :

nmap -oA scan_results localhost

Cela crée trois fichiers : scan_results.nmap, scan_results.xml et scan_results.gnmap.

Examinons le contenu du fichier de sortie normal :

cat scan_results.txt

Sortie :

## Nmap 7.80 scan initiated Thu Sep 14 16:55:23 2023 as: nmap -oN scan_results.txt localhost
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

## Nmap done at Thu Sep 14 16:55:23 2023 -- 1 IP address (1 host up) scanned in 0.12 seconds

Stratégie de scan pratique

Combinons ce que nous avons appris pour créer une stratégie de scan pratique pour un scan complet :

sudo nmap -sS -sV -O -T4 -oA comprehensive_scan localhost

Cette commande :

  • Utilise le scan furtif SYN (-sS)
  • Détecte les versions des services (-sV)
  • Tente la détection du système d'exploitation (-O)
  • Utilise une temporisation agressive (-T4)
  • Enregistre les résultats dans tous les formats (-oA)

Sortie :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Vous pouvez maintenant afficher les résultats du scan complet dans l'un des fichiers de sortie :

ls comprehensive_scan.*

Sortie :

comprehensive_scan.gnmap  comprehensive_scan.nmap  comprehensive_scan.xml

Considérations éthiques

N'oubliez pas que le scan réseau ne doit être effectué que sur les réseaux que vous possédez ou pour lesquels vous avez une autorisation explicite de scanner. Le scan non autorisé peut être :

  1. Illégal dans de nombreuses juridictions
  2. Considéré comme un acte hostile par les administrateurs réseau
  3. Potentiellement perturbateur pour les services réseau

Dans cet environnement de laboratoire, nous n'avons scanné que localhost, ce qui est toujours autorisé car il s'agit de votre propre système.

Vous avez maintenant appris différentes stratégies de scan réseau, des contrôles de temporisation et des formats de sortie. Vous possédez toutes les connaissances fondamentales nécessaires pour effectuer une reconnaissance réseau efficace à l'aide de Nmap.

Scan de Scripts et Analyse de Services Ciblée

Dans cette étape, nous allons explorer le puissant moteur de scripts (NSE) de Nmap et apprendre à effectuer une analyse de services ciblée. Les scripts NSE étendent les fonctionnalités de Nmap en permettant des scans plus détaillés pour des services et des vulnérabilités spécifiques.

Introduction au Nmap Scripting Engine (NSE)

Le Nmap Scripting Engine permet aux utilisateurs d'écrire et de partager des scripts pour automatiser une variété de tâches réseau. Nmap est livré avec des centaines de scripts pré-écrits, classés en différents groupes :

  • auth : Scripts liés à l'authentification
  • default : Scripts exécutés par défaut avec -sC
  • discovery : Découverte d'hôtes et de services
  • exploit : Tentative d'exploitation des vulnérabilités
  • malware : Détection de logiciels malveillants et de portes dérobées
  • safe : Scripts sûrs et non intrusifs
  • vuln : Scripts de détection de vulnérabilités

Exécution des scripts par défaut (-sC)

Le flag -sC exécute l'ensemble de scripts par défaut, qui sont généralement sûrs et fournissent des informations utiles :

nmap -sC localhost

Sortie :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql
|_mysql-info: ERROR: Script execution failed (use -d to debug)

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

Remarquez comment les scripts ont fourni des informations supplémentaires sur chaque service, comme les clés d'hôte SSH et les titres de pages HTTP.

Exécution de scripts spécifiques

Vous pouvez exécuter des scripts spécifiques en utilisant le flag --script suivi du nom du script ou de la catégorie :

nmap --script=http-title localhost

Cela exécute uniquement le script http-title, qui récupère le titre des pages HTTP :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql

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

Exécution de scripts par catégorie

Vous pouvez exécuter tous les scripts d'une catégorie spécifique :

nmap --script=discovery localhost

Cela exécute tous les scripts de découverte, qui peuvent fournir une mine d'informations sur les services réseau (sortie tronquée pour plus de brièveté) :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
| http-methods:
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
| cups-info:
|   CUPS Server:
|     Server: CUPS/2.3 IPP/2.1
|_    Authentication-Method: Basic
| http-methods:
|_  Supported Methods: GET HEAD OPTIONS POST
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql
| mysql-info:
|   Protocol: 10
|   Version: 8.0.30-0ubuntu0.20.04.2
|   Thread ID: 15
|   Capabilities flags: 65535
|   Some Capabilities: ConnectWithDatabase, SupportsLoadDataLocal, SupportsTransactions, DontAllowDatabaseTableColumn, Support41Auth, InteractiveClient, Speaks41ProtocolOld, FoundRows, IgnoreSigpipes, ODBCClient, SwitchToSSLAfterHandshake, IgnoreSpaceBeforeParenthesis, LongColumnFlag, Speaks41ProtocolNew, SupportsMultipleStatments, LongPassword, SupportsCompression, SupportsMultipleResults, SupportsAuthPlugins
|   Status: Autocommit
|   Salt: \x7FeL)\x0C\x5C#S\x06N%\x1E\x7EYaC
|_  Auth Plugin Name: caching_sha2_password

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

Combiner le scan de scripts avec la détection de services

Pour obtenir les résultats les plus complets, combinez le scan de scripts avec la détection de services :

nmap -sV -sC localhost

Sortie :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp     CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql   MySQL 8.0.30-0ubuntu0.20.04.2
|_mysql-info: ERROR: Script execution failed (use -d to debug)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Analyse de services ciblée

Concentrons-nous sur l'analyse plus détaillée de services spécifiques.

Analyse des services HTTP

Pour analyser les services HTTP en détail, nous pouvons utiliser les scripts http-* :

nmap --script="http-*" -p 80 localhost

Cela exécute tous les scripts liés à HTTP sur le port 80 :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).

PORT   STATE SERVICE
80/tcp open  http
|_http-chrono: Request times for /; avg: 32.68ms; min: 32.68ms; max: 32.68ms
|_http-comments-displayer: Couldn't find any comments.
|_http-date: Thu, 14 Sep 2023 17:30:24 GMT; +6s from local time.
|_http-devframework: Couldn't determine the underlying framework or CMS. Try increasing 'httpspider.maxpagecount' value to spider more pages.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
|_http-feed: Couldn't find any feeds.
|_http-fetch: Please enter the complete path of the directory to save data in.
|_http-generator: Couldn't find any generator in the HTML headers and body
| http-methods:
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-mobileversion-checker: No mobile version detected.
|_http-referer-checker: Couldn't find any cross-domain scripts.
|_http-security-headers:
| http-server-header:
|   Apache/2.4.41
|_  Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-traceroute: ERROR: Script execution failed (use -d to debug)
|_http-useragent-tester:
|_http-xssed: No previously reported XSS vuln.

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

Analyse des services SSH

De même, nous pouvons analyser les services SSH :

nmap --script="ssh-*" -p 22 localhost

Sortie :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).

PORT   STATE SERVICE
22/tcp open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
|_ssh-run: ERROR: Script execution failed (use -d to debug)

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

Scan de vulnérabilités

Nmap inclut des scripts qui peuvent détecter les vulnérabilités potentielles. L'utilisation de la catégorie vuln peut aider à identifier les problèmes de sécurité :

nmap --script=vuln localhost

Cela peut prendre un certain temps car il exécute diverses vérifications de vulnérabilité. La sortie peut ressembler à ceci :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-slowloris-check:
|   VULNERABLE:
|   Slowloris DOS attack
|     State: LIKELY VULNERABLE
|     IDs:  CVE:CVE-2007-6750
|       Slowloris tries to keep many connections to the target web server open and hold
|       them open as long as possible.  It accomplishes this by opening connections to
|       the target web server and sending a partial request. By doing so, it starves
|       the http server's resources causing Denial Of Service.
|
|     Disclosure date: 2009-09-17
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
|_      http://ha.ckers.org/slowloris/
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
631/tcp  open  ipp
3306/tcp open  mysql

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

Dans ce cas, Nmap a identifié que le serveur web Apache pourrait être vulnérable à une attaque Slowloris DoS. Ces informations peuvent être précieuses pour sécuriser vos systèmes.

Création d'un rapport de scan complet

Maintenant, combinons tout ce que nous avons appris pour créer un rapport de sécurité complet :

sudo nmap -sS -sV -O -sC --script=vuln -T4 -oA comprehensive_security_report localhost

Cette commande :

  • Utilise le scan furtif SYN (-sS)
  • Détecte les versions des services (-sV)
  • Tente la détection du système d'exploitation (-O)
  • Exécute les scripts par défaut (-sC)
  • Exécute les scripts de détection de vulnérabilités (--script=vuln)
  • Utilise une temporisation agressive (-T4)
  • Enregistre les résultats dans tous les formats (-oA)

La sortie sera complète et pourrait prendre un certain temps à se terminer. Une fois terminé, vous disposerez d'un rapport de sécurité détaillé dans différents formats (normal, XML et grepable) que vous pourrez consulter pour l'analyse de sécurité.

Dans cette étape, vous avez appris à utiliser le moteur de scripts de Nmap pour collecter des informations détaillées sur les services et détecter les vulnérabilités potentielles. Ces techniques avancées sont essentielles pour les évaluations complètes de la sécurité réseau.

Résumé

Dans ce laboratoire, vous avez appris les bases de l'utilisation de Nmap pour la reconnaissance réseau et l'évaluation de la sécurité. Vous comprenez maintenant :

  1. Comment installer Nmap et effectuer des scans de base des hôtes et des ports
  2. Comment utiliser les flags de scan Nmap essentiels pour différents types de scans
  3. Comment mettre en œuvre des stratégies de scan efficaces et contrôler les paramètres de temporisation
  4. Comment exploiter le Nmap Scripting Engine pour une analyse détaillée des services et la détection des vulnérabilités

Ces compétences constituent une base pour les évaluations de la sécurité réseau et sont essentielles pour les professionnels de la cybersécurité. N'oubliez pas d'utiliser toujours ces techniques de manière responsable et uniquement sur les réseaux que vous êtes autorisé à scanner.

Au fur et à mesure que vous poursuivez votre parcours en cybersécurité, envisagez d'explorer des fonctionnalités Nmap plus avancées telles que le développement de scripts NSE personnalisés, les techniques d'évasion de pare-feu et l'intégration avec d'autres outils de sécurité. Une pratique régulière avec Nmap vous aidera à devenir plus compétent dans l'identification des problèmes de sécurité potentiels dans les environnements réseau.