User-Agent-Zeichenkette in Nikto fälschen

Kali LinuxBeginner
Jetzt üben

Einleitung

Nikto ist ein beliebter Open-Source-Webserver-Scanner, der umfassende Tests gegen Webserver für mehrere Elemente durchführt, darunter über 6700 potenziell gefährliche Dateien/Programme, Prüfungen auf veraltete Versionen von über 1250 Servern und versionsspezifische Probleme auf über 270 Servern.

Wenn Nikto Anfragen an einen Zielserver sendet, identifiziert es sich mit einer Standard-„User-Agent“-Zeichenkette. Diese Zeichenkette kann leicht von Firewalls oder Intrusion Detection Systemen erkannt werden, die den Scan blockieren könnten. Um einen unauffälligeren Scan durchzuführen, können Sie den User-Agent „spoofen“ oder ändern, um einen gängigen Webbrowser zu imitieren.

In diesem Lab lernen Sie, wie Sie Nikto's Standard-User-Agent identifizieren und ihn dann mit der Option -useragent ändern, um Ihre Scans weniger auffällig zu gestalten.

Identifizieren des Standard-Nikto-User-Agents aus einem Test-Scan

In diesem Schritt führen Sie einen grundlegenden Nikto-Scan gegen einen lokalen Webserver durch, um dessen Standard-User-Agent-Zeichenkette zu sehen. Ein einfacher Python-Webserver wurde für Sie im Hintergrund gestartet, der alle eingehenden Anfragen in eine Datei namens access.log protokolliert.

Führen Sie zunächst einen Standard-Nikto-Scan gegen den lokalen Server auf Port 8000 durch. Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:

nikto -h http://localhost:8000

Nikto führt eine Reihe von Tests durch. Wir sind nicht an den Scan-Ergebnissen selbst interessiert, sondern an dem Protokolleintrag, den er erstellt.

Nach Abschluss des Scans zeigen Sie den Inhalt der Protokolldatei an, um zu sehen, wie der Server die Anfrage von Nikto aufgezeichnet hat. Verwenden Sie den Befehl cat:

cat ~/project/access.log

Sie sollten Protokolleinträge sehen, die den Standard-User-Agent von Nikto enthalten. Er wird ungefähr so aussehen und den Scanner deutlich identifizieren.

127.0.0.1 - "GET / HTTP/1.1" Mozilla/5.0 (X11; Linux x86_64) Nikto/2.5.0 (Evasions:None) (Test:Port Check)
127.0.0.1 - "GET /icons/blank.gif HTTP/1.1" Mozilla/5.0 (X11; Linux x86_64) Nikto/2.5.0 (Evasions:None) (Test:Port Check)
... (other log entries) ...

Beachten Sie den Teil Nikto/2.5.0 der Zeichenkette. Dies ist die Signatur, die wir in den nächsten Schritten ausblenden möchten.

Auswahl einer gängigen Browser-User-Agent-Zeichenkette zur Nachahmung

In diesem Schritt wählen wir eine User-Agent-Zeichenkette eines gängigen Webbrowsers aus. Ziel ist es, unseren Scan-Traffic so aussehen zu lassen, als käme er von einem normalen Benutzer und nicht von einem automatisierten Tool. Dies hilft bei der Umgehung einfacher Erkennungsregeln, die den Traffic basierend auf bekannten Scanner-User-Agents blockieren.

Es gibt viele Online-Ressourcen, um aktuelle User-Agent-Zeichenketten zu finden. Für dieses Lab verwenden wir einen typischen User-Agent für den Firefox-Browser auf einem Windows-Rechner.

Hier ist die Zeichenkette, die wir verwenden werden: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0

Dieser Schritt ist rein informativ. Sie müssen keine Befehle ausführen. Machen Sie sich einfach mit der obigen Zeichenkette vertraut, da Sie sie in den folgenden Schritten verwenden werden.

Verwenden der Option -useragent zum Festlegen der neuen Zeichenkette

In diesem Schritt lernen Sie, wie Sie den Nikto-Befehl zum Verwenden des neuen, gefälschten User-Agents erstellen. Nikto bietet hierfür eine spezielle Kommandozeilenoption: -useragent.

Die Syntax für diese Option ist einfach. Sie hängen -useragent an Ihren Befehl an, gefolgt von der neuen Zeichenkette, die Sie verwenden möchten. Da User-Agent-Zeichenketten Leerzeichen und Sonderzeichen enthalten, ist es entscheidend, die gesamte Zeichenkette in doppelte Anführungszeichen (") zu setzen.

So würden Sie den Befehl zum Scannen unseres lokalen Servers mit dem Firefox-User-Agent, den wir im vorherigen Schritt ausgewählt haben, erstellen:

nikto -h http://localhost:8000 -useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"

In diesem Schritt müssen Sie nur verstehen, wie der Befehl aufgebaut ist. Sie werden ihn im nächsten Schritt ausführen.

Ausführen eines Scans mit dem gefälschten User-Agent

In diesem Schritt führen Sie den Nikto-Scan mit dem benutzerdefinierten User-Agent aus. Um sicherzustellen, dass wir nur die Ergebnisse unseres neuen Scans sehen, ist es eine gute Praxis, die alte Log-Datei zuerst zu leeren.

Leeren Sie die Datei access.log mit dem folgenden Befehl:

> ~/project/access.log

Dieser Befehl überschreibt die Datei und hinterlässt sie leer. Führen Sie nun den Nikto-Scan mit der Option -useragent und der Firefox-Zeichenkette aus.

nikto -h http://localhost:8000 -useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"

Nikto führt nun denselben Scan wie zuvor aus, aber jede gesendete Anfrage trägt die Firefox-User-Agent-Zeichenkette anstelle der standardmäßigen Nikto-Zeichenkette. Lassen Sie den Scan bis zum Abschluss laufen.

Überprüfen des neuen User-Agents in Server-Logs oder einem Proxy

In diesem letzten Schritt überprüfen Sie, ob das Spoofing des User-Agents erfolgreich war. Wir überprüfen erneut die Log-Datei des Servers, um zu sehen, welcher User-Agent während des letzten Scans aufgezeichnet wurde.

Verwenden Sie den Befehl cat, um den Inhalt von access.log anzuzeigen:

cat ~/project/access.log

Dieses Mal sollte die Ausgabe anders aussehen. Anstatt "Nikto" in den Logs zu sehen, sehen Sie die von Ihnen angegebene Firefox-User-Agent-Zeichenkette.

127.0.0.1 - "GET / HTTP/1.1" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
127.0.0.1 - "GET /icons/blank.gif HTTP/1.1" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
... (andere Log-Einträge) ...

Wie Sie sehen können, zeigt das Log jetzt einen standardmäßigen Firefox-User-Agent an. Das Wort "Nikto" ist verschwunden, wodurch die Identität unseres Scanners erfolgreich vor den grundlegenden Server-Logs verborgen wird.

Zusammenfassung

In diesem Lab haben Sie eine grundlegende Technik gelernt, um Sicherheitsscans unauffälliger zu gestalten. Sie haben erfolgreich die User-Agent-Zeichenkette in Nikto gefälscht, um einen regulären Webbrowser zu imitieren.

Sie haben gelernt, wie Sie:

  • Einen standardmäßigen Nikto-Scan ausführen, um eine Basislinie zu erstellen.
  • Server-Logs inspizieren, um den standardmäßigen Nikto-User-Agent zu identifizieren.
  • Die Kommandozeilenoption -useragent verwenden, um eine benutzerdefinierte Zeichenkette anzugeben.
  • Einen neuen Scan mit dem gefälschten User-Agent ausführen.
  • Die Änderung durch erneute Überprüfung der Server-Logs verifizieren.

Diese Fähigkeit ist unerlässlich für Penetrationstester und Sicherheitsexperten, die Schwachstellenbewertungen durchführen müssen, ohne sofort von Sicherheitssystemen blockiert oder erkannt zu werden.