Einleitung
Im Bereich der Websicherheit ist die Aufklärung (Reconnaissance) ein entscheidender erster Schritt. Tools wie Gobuster werden häufig für die Verzeichnis- und Dateierkennung (Enumeration) eingesetzt. Viele Webserver und Web Application Firewalls (WAFs) verwenden jedoch einfache Erkennungsmechanismen, wie z. B. das Blockieren von Anfragen mit verdächtigen User-Agent-Strings. Standardmäßig verwendet Gobuster einen User-Agent-String, der leicht identifiziert werden kann.
In diesem Lab lernen Sie, wie Sie einen benutzerdefinierten User-Agent-String für Ihre Gobuster-Scans festlegen. Diese Technik kann Ihnen helfen, einfache Erkennungsmechanismen zu umgehen und Ihre Aufklärungsbemühungen unauffälliger zu gestalten, wodurch Sie potenziell mehr versteckte Verzeichnisse und Dateien entdecken können.
Zweck eines User-Agent-Strings verstehen
In diesem Schritt lernen Sie, was ein User-Agent-String ist und warum er bei Webanfragen wichtig ist.
Der User-Agent-String ist ein Header, der von einem Client (wie einem Webbrowser oder einem Tool wie Gobuster) an einen Webserver gesendet wird. Er enthält typischerweise Informationen über den Anwendungstyp, das Betriebssystem, den Softwareanbieter und die Softwareversion des Clients. Webserver nutzen diese Informationen, um für den Client optimierte Inhalte bereitzustellen oder Client-Statistiken zu protokollieren.
Bei Sicherheitstools wie Gobuster verrät der Standard-User-Agent-String oft die Identität des Tools, was WAFs oder Intrusion Detection Systeme (IDS) auslösen kann. Beispielsweise könnte der Standard-User-Agent von Gobuster etwa so aussehen: gobuster/3.1.0.
Führen wir einen grundlegenden Gobuster-Scan ohne benutzerdefinierten User-Agent durch, um sein Standardverhalten zu sehen. Wir werden einen lokalen Webserver scannen, der im Hintergrund eingerichtet wurde.
Stellen Sie zunächst sicher, dass der Webserver läuft, indem Sie seinen Prozess überprüfen:
ps aux | grep "python3 -m http.server 8080" | grep -v grep
Sie sollten eine Ausgabe ähnlich dieser sehen, die anzeigt, dass der Server läuft:
labex 1234 0.0 0.1 12345 6789 ? Sl HH:MM 0:00 python3 -m http.server 8080 --directory /tmp/web_root
Führen Sie nun einen einfachen Gobuster-Scan gegen den lokalen Server auf Port 8080 aus. Wir verwenden eine kleine Wortliste zur Demonstration.
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: Gibt die Ziel-URL an.-w /usr/share/wordlists/dirb/common.txt: Gibt die zu verwendende Wortliste an.-q: Leiser Modus (Quiet mode), gibt nur Ergebnisse aus.-x html,txt: Gibt die zu suchenden Erweiterungen an.-t 10: Legt die Anzahl der gleichzeitigen Threads auf 10 fest.
Sie sehen eine Ausgabe ähnlich dieser, die entdeckte Verzeichnisse und Dateien anzeigt:
/admin (Status: 200)
/secret (Status: 200)
/backup (Status: 200)
Obwohl dieser Scan funktioniert, verwendet Gobuster seinen Standard-User-Agent, der leicht von einer WAF blockiert werden könnte.
Einen gängigen Browser-User-Agent-String finden
In diesem Schritt lernen Sie, wie Sie einen gängigen Browser-User-Agent-String finden, den Sie verwenden können, um Ihre Gobuster-Scans zu verschleiern.
Damit Ihre Gobuster-Scans so aussehen, als kämen sie von einem legitimen Webbrowser, müssen Sie einen User-Agent-String verwenden, den ein typischer Browser senden würde. Sie können diese Strings finden, indem Sie:
- Netzwerkanfragen in den Entwicklertools Ihres Browsers inspizieren: Wenn Sie eine Website besuchen, öffnen Sie die Entwicklertools Ihres Browsers (normalerweise F12), wechseln Sie zum Tab "Netzwerk" (Network) und inspizieren Sie die Header einer beliebigen Anfrage.
- Online suchen: Viele Websites stellen Listen mit gängigen User-Agent-Strings zusammen.
Für dieses Lab verwenden wir einen gängigen User-Agent-String für eine aktuelle Version von Chrome unter Windows. Ein typischer User-Agent-String für Chrome könnte wie folgt aussehen:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Dieser String gibt an:
Mozilla/5.0: Ein allgemeines Token, das viele Browser aus historischen Gründen enthalten.(Windows NT 10.0; Win64; x64): Informationen zum Betriebssystem (Windows 10, 64-Bit).AppleWebKit/537.36 (KHTML, like Gecko): Informationen zur Rendering-Engine (WebKit, mit KHTML-Kompatibilität).Chrome/120.0.0.0: Name und Version des Browsers.Safari/537.36: Ein weiteres historisches Token, das oft von WebKit-basierten Browsern enthalten wird.
Sie können diesen String direkt für den nächsten Schritt kopieren. Es ist wichtig, den User-Agent-String bei der Verwendung in der Befehlszeile in Anführungszeichen zu setzen, insbesondere wenn er Leerzeichen oder Sonderzeichen enthält.
Das Flag -a zum Festlegen eines benutzerdefinierten User-Agents verwenden
In diesem Schritt lernen Sie, wie Sie das Flag -a in Gobuster verwenden, um einen benutzerdefinierten User-Agent-String für Ihre Scans festzulegen.
Gobuster stellt das Flag -a (oder --agent) speziell für diesen Zweck bereit. Sie übergeben einfach Ihren gewünschten User-Agent-String als Argument an dieses Flag.
Bereiten wir den Gobuster-Befehl mit dem benutzerdefinierten User-Agent-String vor, den wir im vorherigen Schritt identifiziert haben. Wir verwenden dasselbe Ziel und dieselbe Wortliste.
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"
Konstruieren Sie nun den Gobuster-Befehl. Beachten Sie, wie das Flag -a verwendet wird:
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": Dies ist der neue Teil, bei dem wir unseren benutzerdefinierten User-Agent-String übergeben. Die Anführungszeichen um$CUSTOM_USER_AGENTsind entscheidend, da der String Leerzeichen enthält.
Überlegen Sie vor der Ausführung, welchen Unterschied dies macht. Ohne das Flag -a würde der Webserver eine Anfrage von "gobuster" sehen. Mit dem Flag -a würde er eine Anfrage von "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" sehen, was wie ein legitimer Browser aussieht.
Den Scan mit dem neuen User-Agent ausführen
In diesem Schritt führen Sie den Gobuster-Scan mit dem benutzerdefinierten User-Agent-String aus und beobachten die Ergebnisse.
Führen Sie nun den Gobuster-Befehl mit dem benutzerdefinierten User-Agent aus. Die Ausgabe des Scans selbst wird ähnlich wie die vorherige aussehen, da der User-Agent nur beeinflusst, wie die Anfrage vom Server wahrgenommen wird, nicht die Scanergebnisse selbst (es sei denn, der Server blockiert den Standard-User-Agent).
Führen Sie den Befehl aus:
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
Sie sollten dieselben Verzeichnisse und Dateien entdecken:
/admin (Status: 200)
/secret (Status: 200)
/backup (Status: 200)
Obwohl die Ausgabe dieselbe ist, liegt der entscheidende Unterschied darin, dass in einem realen Szenario mit einer WAF (Web Application Firewall) oder einem IDS (Intrusion Detection System) dieser Scan im Vergleich zu einem Scan mit dem Standard-User-Agent von Gobuster weniger wahrscheinlich als verdächtig eingestuft würde. Dies ist eine grundlegende Technik im ethischen Hacking und Penetration Testing, um Entdeckung zu vermeiden.
Erläuterung, warum dies bei der Umgehung einfacher Filter helfen kann
In diesem Schritt erörtern wir, warum das Festlegen eines benutzerdefinierten User-Agents eine effektive Technik zur Umgehung einfacher Filter und Erkennungsmechanismen sein kann.
Viele Web Application Firewalls (WAFs), Intrusion Detection Systeme (IDS) und sogar grundlegende Serverkonfigurationen verwenden Regeln, um verdächtigen Datenverkehr zu identifizieren und zu blockieren. Eine der einfachsten und häufigsten Regeln ist die Überprüfung des User-Agent-Strings.
Hier ist, warum das Festlegen eines benutzerdefinierten User-Agents hilft:
- Umgehung von User-Agent-basierten Blockierungen: Wenn eine WAF eine Regel hat, um Anfragen mit User-Agents wie "gobuster", "nmap", "sqlmap" oder anderen bekannten Sicherheitstools zu blockieren, können Sie mit einem gängigen Browser-User-Agent Ihre Anfragen durchlassen, ohne von dieser spezifischen Regel erkannt zu werden.
- Reduzierung des Verdachts: Ein Serveradministrator, der Protokolle überprüft, könnte eine hohe Anzahl von Anfragen von einem ungewöhnlichen User-Agent (wie
gobuster/3.1.0) bemerken. Indem Sie einen gängigen Browser nachahmen, fügen sich Ihre Anfragen in den legitimen Benutzerverkehr ein, wodurch die Wahrscheinlichkeit, dass sie manuell untersucht oder automatisch markiert werden, geringer ist. - Umgehung von Ratenbegrenzungen (in einigen Fällen): Obwohl dies nicht direkt mit dem User-Agent zusammenhängt, könnten einige Systeme strengere Ratenbegrenzungen für Nicht-Browser-User-Agents anwenden. Indem Sie wie ein Browser erscheinen, können Sie diese strengeren Limits umgehen, was Ihrem Scan ermöglicht, schneller oder vollständiger fortzufahren.
Es ist wichtig zu beachten, dass diese Technik gegen einfache Filter wirksam ist. Anspruchsvollere WAFs und IDS verwenden eine Kombination von Faktoren (z. B. Anfragemuster, IP-Reputation, Verhaltensanalyse), um bösartige Aktivitäten zu erkennen. Daher reicht ein benutzerdefinierter User-Agent allein möglicherweise nicht aus, um fortgeschrittene Abwehrmaßnahmen zu umgehen. Es ist jedoch ein grundlegender und oft notwendiger erster Schritt bei der unauffälligen Erkundung (Reconnaissance).
Um die Umgebung aufzuräumen, können Sie den Python-Webserver stoppen:
pkill -f "python3 -m http.server 8080"
Dieser Befehl findet und beendet den Prozess, der den Python-Webserver ausführt.
Zusammenfassung
In diesem Lab haben Sie die Bedeutung des User-Agent-Strings in Webanfragen und seine Verwendung durch Sicherheitstools wie Gobuster kennengelernt. Sie haben erfolgreich einen gängigen Browser-User-Agent-String identifiziert und, was am wichtigsten ist, das Flag -a in Gobuster verwendet, um einen benutzerdefinierten User-Agent für Ihre Scans festzulegen. Diese praktische Fähigkeit ist entscheidend, um Ihre Erkundungsbemühungen (Reconnaissance) unauffälliger und effektiver zu gestalten, indem Sie einfache Erkennungsmechanismen umgehen und sich in den legitimen Webverkehr einfügen.
