Définir un User-Agent personnalisé pour les scans dans Gobuster

Beginner
Pratiquer maintenant

Introduction

En sécurité web, la reconnaissance est une première étape cruciale. Des outils comme Gobuster sont largement utilisés pour l'énumération de répertoires et de fichiers. Cependant, de nombreux serveurs web et Web Application Firewalls (WAFs) utilisent des mécanismes de détection simples, tels que le blocage des requêtes avec des chaînes User-Agent suspectes. Par défaut, Gobuster utilise une chaîne User-Agent qui peut être facilement identifiée.

Dans ce laboratoire, vous apprendrez comment définir une chaîne User-Agent personnalisée pour vos scans Gobuster. Cette technique peut vous aider à contourner les mécanismes de détection simples et à rendre vos efforts de reconnaissance plus discrets, vous permettant potentiellement de découvrir plus de répertoires et de fichiers cachés.

Comprendre le rôle d'une chaîne User-Agent

Dans cette étape, vous apprendrez ce qu'est une chaîne User-Agent et pourquoi elle est importante dans les requêtes web.

La chaîne User-Agent est un en-tête envoyé par un client (comme un navigateur web ou un outil tel que Gobuster) à un serveur web. Elle contient généralement des informations sur le type d'application du client, son système d'exploitation, le fournisseur du logiciel et sa version. Les serveurs web utilisent ces informations pour délivrer du contenu optimisé pour le client ou pour enregistrer des statistiques sur les clients.

Pour les outils de sécurité comme Gobuster, la chaîne User-Agent par défaut révèle souvent l'identité de l'outil, ce qui peut déclencher des WAFs ou des systèmes de détection d'intrusion (IDS). Par exemple, le User-Agent par défaut de Gobuster pourrait ressembler à gobuster/3.1.0.

Effectuons un scan Gobuster de base sans User-Agent personnalisé pour observer son comportement par défaut. Nous allons scanner un serveur web local qui a été configuré en arrière-plan.

Tout d'abord, assurez-vous que le serveur web est en cours d'exécution en vérifiant son processus :

ps aux | grep "python3 -m http.server 8080" | grep -v grep

Vous devriez voir une sortie similaire à celle-ci, indiquant que le serveur est en cours d'exécution :

labex      1234  0.0  0.1  12345  6789 ?        Sl   HH:MM   0:00 python3 -m http.server 8080 --directory /tmp/web_root

Maintenant, lancez un scan Gobuster simple contre le serveur local sur le port 8080. Nous utiliserons une petite liste de mots pour la démonstration.

gobuster dir -u http://127.0.0.1:8080 -w /usr/share/wordlists/dirb/common.txt -q -x html,txt -t 10
  • -u http://127.0.0.1:8080: Spécifie l'URL cible.
  • -w /usr/share/wordlists/dirb/common.txt: Spécifie la liste de mots à utiliser.
  • -q: Mode silencieux, n'affiche que les résultats.
  • -x html,txt: Spécifie les extensions à rechercher.
  • -t 10: Définit le nombre de threads concurrents à 10.

Vous verrez une sortie similaire à celle-ci, montrant les répertoires et fichiers découverts :

/admin                (Status: 200)
/secret               (Status: 200)
/backup               (Status: 200)

Bien que ce scan fonctionne, le User-Agent utilisé par Gobuster est celui par défaut, qui pourrait être facilement bloqué par un WAF.

Dans cette étape, vous apprendrez comment trouver une chaîne User-Agent de navigateur courante que vous pouvez utiliser pour masquer vos scans Gobuster.

Pour que vos scans Gobuster apparaissent comme s'ils provenaient d'un navigateur web légitime, vous devez utiliser une chaîne User-Agent qu'un navigateur typique enverrait. Vous pouvez trouver ces chaînes en :

  1. Inspectant les requêtes réseau dans les outils de développement de votre navigateur : Lorsque vous naviguez sur un site web, ouvrez les outils de développement de votre navigateur (généralement F12), allez dans l'onglet "Network" (Réseau) et inspectez les en-têtes de n'importe quelle requête.
  2. Effectuant une recherche en ligne : De nombreux sites web compilent des listes de chaînes User-Agent courantes.

Pour ce laboratoire, utilisons une chaîne User-Agent courante pour une version récente de Chrome sous Windows. Une chaîne User-Agent typique pour Chrome pourrait ressembler à ceci :

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Cette chaîne indique :

  • Mozilla/5.0: Un jeton général que de nombreux navigateurs incluent pour des raisons historiques.
  • (Windows NT 10.0; Win64; x64): Informations sur le système d'exploitation (Windows 10, 64 bits).
  • AppleWebKit/537.36 (KHTML, like Gecko): Informations sur le moteur de rendu (WebKit, avec compatibilité KHTML).
  • Chrome/120.0.0.0: Nom et version du navigateur.
  • Safari/537.36: Un autre jeton historique, souvent inclus par les navigateurs basés sur WebKit.

Vous pouvez copier cette chaîne directement pour l'étape suivante. Il est important d'entourer la chaîne User-Agent de guillemets lorsque vous l'utilisez dans la ligne de commande, surtout si elle contient des espaces ou des caractères spéciaux.

Utiliser le drapeau -a pour définir un User-Agent personnalisé

Dans cette étape, vous apprendrez comment utiliser le drapeau -a dans Gobuster pour définir une chaîne User-Agent personnalisée pour vos scans.

Gobuster fournit le drapeau -a (ou --agent) spécifiquement à cet effet. Il suffit de passer la chaîne User-Agent souhaitée comme argument à ce drapeau.

Préparons la commande Gobuster avec la chaîne User-Agent personnalisée que nous avons identifiée à l'étape précédente. Nous utiliserons la même cible et la même liste de mots.

CUSTOM_USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
echo "Using custom User-Agent: $CUSTOM_USER_AGENT"

Maintenant, construisons la commande Gobuster. Remarquez comment le drapeau -a est utilisé :

gobuster dir -u http://127.0.0.1:8080 -w /usr/share/wordlists/dirb/common.txt -a "$CUSTOM_USER_AGENT" -q -x html,txt -t 10
  • -a "$CUSTOM_USER_AGENT": C'est la nouvelle partie, où nous passons notre chaîne User-Agent personnalisée. Les guillemets autour de $CUSTOM_USER_AGENT sont cruciaux car la chaîne contient des espaces.

Avant d'exécuter, considérez la différence que cela apporte. Sans le drapeau -a, le serveur web verrait une requête provenant de "gobuster". Avec le drapeau -a, il verra une requête provenant de "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", ce qui ressemble à un navigateur légitime.

Exécuter le scan avec le nouveau User-Agent

Dans cette étape, vous exécuterez le scan Gobuster en utilisant la chaîne User-Agent personnalisée et observerez les résultats.

Exécutez maintenant la commande Gobuster avec le User-Agent personnalisé. La sortie du scan elle-même ressemblera à la précédente, car le User-Agent n'affecte que la manière dont la requête est perçue par le serveur, et non les résultats du scan eux-mêmes (sauf si le serveur bloque le User-Agent par défaut).

Exécutez la commande :

CUSTOM_USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
gobuster dir -u http://127.0.0.1:8080 -w /usr/share/wordlists/dirb/common.txt -a "$CUSTOM_USER_AGENT" -q -x html,txt -t 10

Vous devriez voir les mêmes répertoires et fichiers découverts :

/admin                (Status: 200)
/secret               (Status: 200)
/backup               (Status: 200)

Bien que la sortie soit la même, la différence cruciale est que s'il s'agissait d'un scénario réel avec un WAF (Web Application Firewall) ou un IDS (Intrusion Detection System), ce scan serait moins susceptible d'être signalé comme suspect par rapport à un scan utilisant le User-Agent par défaut de Gobuster. C'est une technique fondamentale en hacking éthique et en tests d'intrusion pour éviter la détection.

Expliquer pourquoi cela peut aider à contourner les filtres simples

Dans cette étape, nous allons discuter pourquoi la définition d'un User-Agent personnalisé peut être une technique efficace pour contourner les filtres simples et les mécanismes de détection.

De nombreux pare-feux d'applications web (WAF), systèmes de détection d'intrusion (IDS), et même des configurations serveur basiques emploient des règles pour identifier et bloquer le trafic suspect. L'une des règles les plus simples et les plus courantes consiste à examiner la chaîne User-Agent.

Voici pourquoi la définition d'un User-Agent personnalisé aide :

  • Contournement du blocage basé sur le User-Agent : Si un WAF a une règle pour bloquer les requêtes avec des User-Agents comme "gobuster", "nmap", "sqlmap", ou d'autres outils de sécurité connus, l'utilisation d'un User-Agent de navigateur courant permettra à vos requêtes de passer inaperçues par cette règle spécifique.
  • Réduction de la suspicion : Un administrateur système examinant les journaux pourrait remarquer un volume élevé de requêtes provenant d'un User-Agent inhabituel (comme gobuster/3.1.0). En imitant un navigateur courant, vos requêtes se fondent dans le trafic utilisateur légitime, les rendant moins susceptibles d'être étudiées manuellement ou signalées automatiquement.
  • Contournement de la limitation de débit (dans certains cas) : Bien que non directement lié au User-Agent, certains systèmes peuvent appliquer des limites de débit plus strictes aux User-Agents non-navigateurs. En apparaissant comme un navigateur, vous pourriez éviter ces limites plus strictes, permettant à votre scan de se dérouler plus rapidement ou plus complètement.

Il est important de noter que cette technique est efficace contre les filtres simples. Les WAF et IDS plus sophistiqués utilisent une combinaison de facteurs (par exemple, les modèles de requêtes, la réputation de l'IP, l'analyse comportementale) pour détecter les activités malveillantes, donc un User-Agent personnalisé seul pourrait ne pas suffire à contourner les défenses avancées. Cependant, c'est une première étape fondamentale et souvent nécessaire dans la reconnaissance furtive.

Pour nettoyer l'environnement, vous pouvez arrêter le serveur web Python :

pkill -f "python3 -m http.server 8080"

Cette commande trouve et termine le processus exécutant le serveur web Python.

Résumé

Dans ce laboratoire, vous avez appris l'importance de la chaîne User-Agent dans les requêtes web et comment elle peut être utilisée par des outils de sécurité comme Gobuster. Vous avez réussi à identifier une chaîne User-Agent de navigateur courante et, plus important encore, vous avez utilisé le drapeau -a dans Gobuster pour définir un User-Agent personnalisé pour vos scans. Cette compétence pratique est cruciale pour rendre vos efforts de reconnaissance plus discrets et efficaces, vous aidant à contourner les mécanismes de détection simples et à vous fondre dans le trafic web légitime.