Détection de services et de versions

NmapBeginner
Pratiquer maintenant

Introduction

En matière de sécurité réseau et d'administration système, savoir qu'un port est ouvert n'est que la moitié du travail. Par défaut, les scanners de ports devinent le service en cours d'exécution en se basant sur les numéros de port standard (par exemple, en supposant que le port 80 est toujours un serveur web HTTP). Cependant, les administrateurs peuvent exécuter n'importe quel service sur n'importe quel port.

C'est pourquoi la détection de bannières et de versions est cruciale. Les numéros de port sont des indices, pas des preuves. Les environnements réels utilisent fréquemment des ports personnalisés, des proxys inverses, des frontaux de conteneurs ou des noms de services trompeurs.

Pour identifier avec précision ce qui s'exécute réellement sur un système cible, vous devez interroger les ports ouverts. Dans ce laboratoire, vous explorerez les capacités de détection de version de Nmap. Vous apprendrez à récupérer les bannières de service et à identifier précisément les noms des logiciels ainsi que leurs numéros de version, une étape essentielle dans l'évaluation des vulnérabilités.

Activer la détection de version

Dans cette étape, vous apprendrez les bases de la détection de version de Nmap. Par défaut, Nmap vous indique uniquement si un port est ouvert et quel service s'y exécute généralement, en se basant sur une table de correspondance statique. Pour découvrir exactement quel logiciel est à l'écoute, vous devez interroger activement le service.

Vous pouvez activer la détection de version en ajoutant l'option -sV à votre commande Nmap. Cela indique à Nmap d'envoyer une série de sondes spécifiques aux ports ouverts et d'analyser les réponses pour déterminer le service et sa version.

En d'autres termes, Nmap cesse de faire des déductions basées uniquement sur le numéro de port et commence à interroger directement le comportement de l'application.

Exécutez la commande suivante dans votre terminal pour scanner votre machine locale et détecter les versions des services en cours d'exécution :

nmap -sV -p 80,8080 localhost

Vous verrez un résultat similaire à celui-ci :

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000010s latency).
PORT     STATE SERVICE VERSION
80/tcp   open  http    nginx 1.18.0 (Ubuntu)
8080/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)
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 6.51 seconds

Observez la colonne VERSION dans le résultat. Au lieu de simplement deviner que le port 80 est HTTP, Nmap a communiqué activement avec le port et a découvert qu'il exécute Nginx version 1.18.0. Il a également identifié avec succès un serveur HTTP Python s'exécutant sur le port 8080.

Ajuster l'intensité de la détection

Dans cette étape, vous apprendrez à contrôler l'agressivité de la détection de version de Nmap. Nmap utilise une échelle de 0 à 9 pour déterminer combien de sondes envoyer à un service cible.

L'intensité par défaut est de 7. Une intensité plus élevée signifie que Nmap tentera davantage de sondes, ce qui augmente les chances d'identifier correctement le service, mais prend plus de temps. Une intensité plus faible est plus rapide mais pourrait échouer à identifier des services obscurs. Vous pouvez ajuster cela en utilisant l'option --version-intensity suivie d'un nombre compris entre 0 et 9.

Il s'agit d'un compromis entre vitesse et certitude. Plus la cible semble incertaine ou inhabituelle, plus une interrogation approfondie devient précieuse.

Essayons un scan très agressif en réglant l'intensité sur 9. Cela force Nmap à essayer chaque sonde de sa base de données sur les ports ouverts. Exécutez la commande suivante :

nmap -sV -p 80,8080 --version-intensity 9 localhost

Le résultat sera similaire à celui de l'étape précédente, mais en arrière-plan, Nmap a été beaucoup plus minutieux dans son interrogation :

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000012s latency).
PORT     STATE SERVICE VERSION
80/tcp   open  http    nginx 1.18.0 (Ubuntu)
8080/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Vous pouvez également utiliser l'option --version-light comme raccourci pour une intensité de 2, ou --version-all comme raccourci pour une intensité de 9. Ces raccourcis facilitent l'ajustement rapide du comportement du scan sans avoir à mémoriser les chiffres exacts.

Identifier la version exacte du logiciel

Dans cette étape, vous vous concentrerez sur l'identification de la version exacte du logiciel d'un service spécifique et sur l'enregistrement des résultats pour la documentation. Lors de la réalisation d'évaluations de sécurité, conserver une trace des versions exactes des logiciels est crucial pour trouver les vulnérabilités connues.

Au lieu de scanner tous les ports, vous pouvez cibler un port spécifique en utilisant l'option -p et enregistrer le résultat dans un fichier en utilisant l'option -oN. C'est très utile lorsque vous souhaitez isoler un service spécifique et partager les conclusions avec votre équipe.

Exécutez la commande suivante pour scanner uniquement le port 80, détecter sa version et enregistrer le résultat dans un fichier nommé version_scan.txt dans votre répertoire actuel :

nmap -sV -p 80 localhost -oN version_scan.txt

Une fois le scan terminé, vous pouvez visualiser le contenu du fichier enregistré à l'aide de la commande cat :

cat version_scan.txt

Votre résultat devrait afficher la version exacte du serveur Nginx s'exécutant sur le port 80 :

## Nmap 7.80 scan initiated ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000015s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    nginx 1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

## Nmap done at ...

En documentant la version exacte, telle que nginx 1.18.0, vous pouvez désormais effectuer des recherches dans les bases de données de vulnérabilités pour voir si cette version spécifique présente des failles de sécurité connues.

Résumé

Dans ce laboratoire, vous avez exploré les puissantes capacités de détection de version de Nmap. Vous avez appris à utiliser l'option -sV pour aller au-delà du simple scan de ports et interroger activement les services afin de découvrir leurs noms de logiciels et leurs versions exactes. Vous avez également appris à ajuster l'intensité du scan à l'aide de --version-intensity pour équilibrer vitesse et précision, ainsi qu'à cibler des ports spécifiques et à enregistrer les résultats pour l'analyse des vulnérabilités. Ces compétences sont essentielles pour une cartographie réseau précise et un audit de sécurité efficace.