Aller au contenu
Sécurité medium

Banner grabbing : identifier les services et leurs versions

8 min de lecture

Le banner grabbing est une technique de reconnaissance qui consiste à récupérer la bannière renvoyée par un service réseau pour identifier le logiciel et sa version. Une connexion sur le port 22 révèle par exemple SSH-2.0-OpenSSH_9.6, et un en-tête HTTP affiche Server: nginx/1.25.3. Pour un attaquant, cette information mène droit aux CVE connues de cette version ; pour un défenseur, elle indique ce qu'il expose sans le vouloir. Ce guide montre comment récupérer une bannière avec nc, curl et nmap, quels services en exposent une, et comment les masquer.

  • Ce qu'est le banner grabbing et son rôle dans la reconnaissance.
  • La différence entre approche active et passive.
  • Récupérer une bannière avec nc, curl et nmap.
  • Quels services exposent une bannière (et lesquels résistent).
  • Masquer ou réduire les bannières côté serveur.

Quand vous vous connectez à un service réseau, beaucoup se présentent en envoyant une bannière : une chaîne de texte qui annonce le logiciel et souvent sa version. Le banner grabbing consiste à provoquer et lire cette bannière.

C'est une forme de fingerprinting (empreinte) : à partir de Apache 2.4.7, on identifie précisément la version, donc les vulnérabilités connues associées. C'est la phase de reconnaissance du cycle d'une attaque, avant toute exploitation.

L'information est à double tranchant :

  • côté offensif, elle oriente vers les CVE exploitables de la version détectée ;
  • côté défensif (blue team), elle révèle ce que votre infrastructure divulgue à n'importe quel visiteur.
ActifPassif
Principeon se connecte au serviceon observe le trafic
Outilsnc, curl, nmapsniffing, Shodan
Discrétionlaisse une trace (logs)indétectable côté cible

Le banner grabbing actif établit une connexion et déclenche la réponse du service : c'est direct, mais cela apparaît dans les logs de la cible. L'approche passive se contente d'observer le trafic déjà capturé, sans toucher la cible (par exemple via un moteur comme Shodan qui a déjà scanné Internet).

Trois outils couvrent l'essentiel. Les sorties ci-dessous proviennent d'un lab réel sur scanme.nmap.org.

Pour les services qui parlent en premier (SSH, FTP, SMTP), une simple connexion suffit :

Fenêtre de terminal
# Le service envoie sa banniere des la connexion
nc scanme.nmap.org 22
# SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13
echo "" | nc -w3 scanme.nmap.org 22 # -w3 : timeout 3 secondes

Tous ne se comportent pas pareil. Certains se présentent spontanément, d'autres exigent une requête :

ServicePortBannière
SSH22spontanée (SSH-2.0-...)
FTP21spontanée (220 ...)
SMTP25 / 587spontanée (220 ... ESMTP)
MySQL3306handshake avec version
HTTP/HTTPS80 / 443sur requête (en-tête Server:)
RDP3389pas de bannière texte

Deux cas à retenir :

  • Le HTTP ne renvoie rien tant que vous n'envoyez pas une requête : d'où curl -I ou un HEAD / HTTP/1.0 en telnet.
  • Le RDP ne donne pas de bannière texte lisible : c'est un handshake binaire. On l'énumère avec nmap -sV et ses scripts NSE, pas avec nc.

Côté blue team, on réduit l'information exposée. Voici les réglages courants :

Dans /etc/ssh/sshd_config (Debian/Ubuntu) :

Fenêtre de terminal
DebianBanner no

Cela retire le suffixe distribution : SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.4 devient SSH-2.0-OpenSSH_9.6p1. Rechargez avec sudo systemctl reload ssh.

Limite : on ne peut pas masquer le numéro de version OpenSSH lui-même sans recompiler ; le protocole (RFC 4253) impose d'annoncer une partie de la version.

  • Le banner grabbing lit la bannière d'un service pour identifier son logiciel et sa version, c'est une phase de reconnaissance.
  • Actif = on se connecte (visible dans les logs) ; passif = on observe le trafic.
  • Outils : nc (SSH/FTP/SMTP parlent en premier), curl -I (en-tête Server: HTTP), nmap -sV et --script=banner.
  • nmap -sV déduit la version par signatures, plus fiable que la bannière brute.
  • Le HTTP exige une requête, le RDP n'a pas de bannière texte.
  • Se durcir : server_tokens off (nginx), ServerTokens Prod (Apache), DebianBanner no (SSH). Mais c'est de l'obscurité : patcher reste le vrai correctif.
  • Le banner grabbing actif sans autorisation est illégal ; entraînez-vous sur scanme.nmap.org.

FAQ : questions fréquentes sur le banner grabbing

Section intitulée « FAQ : questions fréquentes sur le banner grabbing »

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn