Umgehungstechniken in Nikto verwenden

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.

Bei Sicherheitsüberprüfungen ist es oft wünschenswert, die Erkennung durch Sicherheitssysteme wie Intrusion Detection Systems (IDS), Intrusion Prevention Systems (IPS) oder Web Application Firewalls (WAF) zu vermeiden. Diese Systeme überwachen den Netzwerkverkehr auf bösartige Muster. Nikto enthält integrierte Umgehungstechniken, um seine Scans zu verschleiern und sie für solche Systeme weniger offensichtlich zu machen.

In diesem Lab lernen Sie, wie Sie die Option -evasion von Nikto verwenden, um unauffälligere Scans durchzuführen.

Die verfügbaren Umgehungstechniken mit -evasion verstehen

In diesem Schritt lernen Sie, wie Sie die in Nikto verfügbaren Umgehungstechniken auflisten und verstehen. Die Option -evasion (oder -e) wird verwendet, um eine Umgehungstechnik anzugeben. Um alle verfügbaren Techniken anzuzeigen, können Sie Nikto nur mit der Option -evasion und keiner spezifischen Techniknummer ausführen.

Listen wir die verfügbaren Techniken auf. Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:

nikto -evasion

Sie sehen eine Liste der verfügbaren Techniken mit einer Nummer und einer kurzen Beschreibung für jede einzelne.

- Evasion options:
      1   Random URI encoding (non-UTF8)
      2   Directory self-reference (/./)
      3   Premature URL ending
      4   Prepend long random string to request
      5   Fake parameter
      6   GET instead of HEAD
      7   Use a random User-Agent
      8   Random case sensitivity
      A   Use a random IP for the Source-IP
      B   Obfuscate with TABs
      C   Use a carriage return (CR) as a line-ending
      D   Use a binary value as a line-ending
      E   Use a long false request to mis-direct an IDS
      F   Use Windows-style directory separators (\)

Diese Ausgabe zeigt die verschiedenen Methoden, die Nikto verwenden kann, um seine Anfragen zu ändern und so der Erkennung zu entgehen. In den folgenden Schritten werden wir einige dieser Techniken üben.

Ausführen eines Scans mit -evasion 1 für zufällige URI-Kodierung

In diesem Schritt verwenden Sie die erste Umgehungstechnik, "Random URI encoding". Diese Technik kodiert Teile der Request-URI auf eine nicht standardmäßige Weise. Während Webserver diese Kodierungen normalerweise verstehen, können einfache signaturbasierte IDS die Muster möglicherweise nicht erkennen, sodass die Anfrage unentdeckt bleibt.

Wir werden einen Scan gegen den einfachen Webserver ausführen, der für Sie im Lab-Setup gestartet wurde. Er läuft unter http://127.0.0.1:8000.

Um die Technik 1 zu verwenden, hängen Sie die Nummer an die Option -evasion an. Führen Sie den folgenden Befehl in Ihrem Terminal aus:

nikto -h http://127.0.0.1:8000 -evasion 1

Nikto beginnt nun mit dem Scannen des Ziels. Der Scan wird wie gewohnt fortgesetzt, aber die an den Server gesendeten Anfragen werden ihre URIs zufällig kodiert haben.

Hier ist ein Beispiel für die Ausgabe, die Sie möglicherweise sehen:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ Server leaks a possible file system path: /home/labex/project/test-site/. This may suggest the server is running on a Unix-like system.
+ Allowed HTTP Methods: GET, HEAD, OPTIONS
+ Public HTTP Methods: GET, HEAD, OPTIONS
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Beachten Sie, dass der Scan abgeschlossen wird und Ergebnisse liefert, aber die zugrunde liegenden Anfragen wurden modifiziert, um evasiver zu sein.

Versuch eines Scans mit -evasion 2 für Verzeichnis-Selbstreferenz

Lassen Sie uns nun eine weitere Technik ausprobieren. Die Umgehungstechnik 2 verwendet "Directory self-reference" (Verzeichnis-Selbstreferenz). Diese Methode fügt /./ in die Request-URLs ein (z. B. wird /cgi-bin/ zu /./cgi-bin/). Die meisten Webserver normalisieren diesen Pfad und behandeln ihn als reguläre Anfrage, aber er kann einige Sicherheitsfilter verwirren, die nach exakten Pfadübereinstimmungen suchen.

Führen Sie einen Nikto-Scan mit der Umgehungstechnik 2 gegen dasselbe Ziel aus:

nikto -h http://127.0.0.1:8000 -evasion 2

Der Scan wird erneut ausgeführt, diesmal jedoch unter Verwendung des Verzeichnis-Selbstreferenz-Tricks. Die Ausgabe wird der vorherigen ähneln, da der Server korrekt auf die modifizierten Anfragen reagiert.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

Die wichtigste Erkenntnis ist, dass Sie weiterhin gültige Scan-Ergebnisse erhalten, während Sie Techniken anwenden, die bei der Umgehung von Sicherheitsüberwachungen helfen können.

Verwendung von -evasion 4 für das Voranstellen langer zufälliger Zeichenketten

In diesem Schritt werden wir die Umgehungstechnik 4 untersuchen, die eine lange zufällige Zeichenkette vor die Anfrage stellt. Die Idee hinter dieser Technik ist es, den eigentlichen bösartigen oder interessanten Teil der Anfrage über das Pufferlimit einiger einfacher IDS/IPS-Geräte hinaus zu schieben. Wenn das IDS nur den ersten Teil einer Anfrage inspiziert, könnte es die eigentliche Nutzlast übersehen.

Führen wir einen Scan mit dieser Technik aus.

nikto -h http://127.0.0.1:8000 -evasion 4

Nikto wird seinen Scan erneut durchführen, aber diesmal wird jeder Anfrage eine lange, zufällige Zeichenkette vorangestellt. Der Webserver wird diese Junk-Daten ignorieren, aber es kann ein effektiver Weg sein, Mustererkennungs-Sicherheitssysteme zu täuschen.

Die Ausgabe wird den vorherigen Scans ähneln und zeigen, dass die Technik die Effektivität des Scans gegen den Zielserver nicht beeinträchtigt.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

Kombination mehrerer Umgehungstechniken in einem einzigen Scan

Eine der mächtigsten Funktionen der Umgehungsfähigkeiten von Nikto ist die Möglichkeit, mehrere Techniken in einem einzigen Scan zu kombinieren. Dies erzeugt komplexere und vielfältigere Anfragen, was es für ein IDS noch schwieriger macht, den Scan zu erkennen.

Um Techniken zu kombinieren, listen Sie einfach die Nummern der Techniken auf, die Sie nacheinander verwenden möchten. Um beispielsweise Random URI encoding (1), Directory self-reference (2) und Prepending long random strings (4) zu kombinieren, würden Sie -evasion 124 verwenden.

Lassen Sie uns einen Scan ausführen, der diese drei Techniken kombiniert:

nikto -h http://127.0.0.1:8000 -evasion 124

Nikto wird nun alle drei Techniken auf seine Anfragen anwenden und einen stark verschleierten Scan erstellen. Dieser mehrschichtige Ansatz erhöht die Wahrscheinlichkeit, die Erkennung zu umgehen, erheblich.

Die Ausgabe zeigt erneut dieselben Ergebnisse, was bestätigt, dass die Kombination von Umgehungstechniken die Funktionalität des Scans nicht beeinträchtigt hat.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

Durch die Kombination von Techniken können Sie eine wesentlich robustere und unauffälligere Scan-Strategie entwickeln, die auf die spezifischen Abwehrmaßnahmen zugeschnitten ist, die Sie erwarten.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie die leistungsstarken Umgehungsfunktionen von Nikto nutzen können, um unauffälligere Web-Schwachstellen-Scans durchzuführen. Sie haben damit begonnen, die verfügbaren Techniken mit der Option -evasion aufzulisten. Anschließend haben Sie die Anwendung einzelner Techniken geübt, darunter Random URI encoding (1), Directory self-reference (2) und Prepending long random strings (4).

Schließlich haben Sie gelernt, wie Sie diese Techniken kombinieren können, um eine mehrschichtige Umgehungsstrategie zu erstellen, die die Schwierigkeit für Intrusion Detection Systeme, Ihre Scan-Aktivitäten zu identifizieren, erheblich erhöht. Diese Fähigkeiten sind unerlässlich für die Durchführung effektiver und diskreter Sicherheitsbewertungen in Umgebungen mit aktiver Überwachung.