DNS-Lookups für schnellere Scans in Nikto deaktivieren

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.

Standardmäßig führt Nikto Reverse-DNS-Lookups für IP-Adressen durch, die es im Inhalt des Webservers findet. Dies kann zwar nützlich sein, um verwandte Hostnamen zu entdecken, kann aber auch den Scan erheblich verlangsamen, insbesondere beim Scannen großer Netzwerke oder nicht reagierender Ziele.

In diesem Lab lernen Sie, wie Sie die Option -nolookup verwenden, um diese Funktion zu deaktivieren und die Scan-Zeiten zu vergleichen, um die Leistungsvorteile zu verstehen.

Zweck der Option -nolookup verstehen

In diesem Schritt lernen Sie die Option -nolookup in Nikto kennen.

Wenn Nikto einen Webserver scannt, kann er IP-Adressen in den Konfigurationsdateien, Protokollen oder Webseiten des Servers finden. Standardmäßig versucht Nikto, für jede dieser IPs eine Reverse-DNS-Auflösung durchzuführen, um die zugehörigen Hostnamen zu ermitteln. Dieser Vorgang kann zeitaufwendig sein.

Die Option -nolookup weist Nikto an, diesen Schritt vollständig zu überspringen. Dies kann zu einem wesentlich schnelleren Scan führen, Sie verpassen jedoch potenziell wertvolle Informationen über andere mit dem Ziel verknüpfte Hostnamen.

Sie können diese Option und andere anzeigen, indem Sie das Nikto-Hilfemenü aufrufen. Lassen Sie uns das jetzt tun.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

nikto -Help

Scrollen Sie durch die Ausgabe und suchen Sie die Option -nolookup. Sie wird mit einer kurzen Beschreibung aufgeführt.

...
-nolookup           Skip name lookups
...

Nachdem Sie nun verstanden haben, was -nolookup bewirkt, können wir fortfahren und es in Aktion sehen.

Ausführen eines Baseline-Scans gegen ein Ziel mithilfe seiner IP-Adresse

In diesem Schritt führen Sie einen Standard-Nikto-Scan gegen einen lokalen Webserver durch. Wir verwenden den Befehl time, um zu messen, wie lange der Scan dauert. Dies dient als unsere Basislinie für den Vergleich.

Die Laborumgebung hat bereits einen einfachen Nginx-Webserver gestartet, der auf 127.0.0.1 läuft. Dies werden wir als unser Ziel verwenden.

Um den Scan auszuführen und zu timen, führen Sie den folgenden Befehl aus:

time nikto -h 127.0.0.1

Der Scan wird gestartet, und Sie sehen eine Ausgabe, die der folgenden ähnelt. Bitte haben Sie Geduld, da die Ausführung eine Minute dauern kann.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

real    0m15.543s
user    0m14.987s
sys     0m0.312s

Achten Sie genau auf die letzten drei Zeilen, die die Ausgabe des Befehls time sind. Die real-Zeit ist die gesamte verstrichene Wanduhrzeit. Notieren Sie diesen Wert für den nächsten Schritt.

Ausführen desselben Scans erneut mit dem Flag -nolookup

Nachdem Sie nun eine Basis-Ausführungszeit haben, führen wir denselben Scan erneut aus, fügen jedoch das Flag -nolookup hinzu. Dies verhindert, dass Nikto Reverse-DNS-Lookups durchführt.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

time nikto -h 127.0.0.1 -nolookup

Der Scan wird erneut ausgeführt. Die Nikto-Ausgabe selbst wird der des vorherigen Scans sehr ähnlich sein, aber Sie sollten einen Unterschied in der vom time-Befehl gemeldeten Ausführungszeit feststellen.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (8 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

real    0m8.123s
user    0m7.890s
sys     0m0.201s

Beachten Sie, dass der Target Hostname in der Ausgabe nun 127.0.0.1 anstelle von localhost lautet. Dies liegt daran, dass Nikto die Reverse-Lookup nicht durchgeführt hat, um die IP in einen Hostnamen aufzulösen. Beachten Sie auch die neue real-Zeit.

Vergleichen der Ausführungszeit beider Scans

In diesem Schritt analysieren Sie die Ergebnisse der beiden vorherigen Schritte, um die Auswirkung des Flags -nolookup auf die Leistung zu sehen.

Betrachten wir die real-Zeit beider Befehle.

Scan 1 (Baseline): real 0m15.543s (Ihre Zeit kann leicht variieren)

Scan 2 (mit -nolookup): real 0m8.123s (Ihre Zeit kann leicht variieren)

Wie Sie sehen können, wurde der Scan mit dem Flag -nolookup deutlich schneller abgeschlossen. In diesem Beispiel war er fast doppelt so schnell. Der Leistungsgewinn kann bei Scans mehrerer Hosts oder Ziele in langsamen oder falsch konfigurierten Netzwerken, bei denen DNS-Lookups möglicherweise fehlschlagen, noch dramatischer sein.

Dieser einfache Vergleich zeigt den direkten Leistungsvorteil der Deaktivierung von DNS-Lookups in Ihren Nikto-Scans.

Analysieren, wann diese Leistungsoptimierung verwendet werden sollte

In diesem letzten Schritt besprechen wir die Kompromisse und legen fest, wann die Option -nolookup angemessen ist.

Während -nolookup einen deutlichen Leistungsschub bietet, geht dies auf Kosten potenziell fehlender Informationen. Reverse-DNS-Lookups können Ihnen helfen, andere Hostnamen und virtuelle Hosts zu entdecken, die mit einer IP-Adresse verbunden sind, was für eine umfassende Sicherheitsbewertung entscheidend sein kann.

Wann sollten Sie also -nolookup verwenden?

  • Erste Scans & Triage: Wenn Sie eine große Anzahl von Hosts scannen und einen schnellen Überblick über potenzielle Schwachstellen erhalten möchten. Geschwindigkeit ist in dieser Phase wichtiger als erschöpfende Details.
  • Scannen nach IP-Adresse: Wenn Ihre Zielliste ausschließlich aus IP-Adressen besteht und Sie keine zugehörigen Domainnamen entdecken möchten, ist die Verwendung von -nolookup eine logische Wahl.
  • Unzuverlässige Netzwerke: Beim Scannen über eine langsame oder unzuverlässige Netzwerkverbindung, bei der DNS-Abfragen fehlschlagen oder Zeitüberschreitungen auftreten können, kann -nolookup verhindern, dass der Scan ins Stocken gerät.
  • Wenn Geschwindigkeit entscheidend ist: In zeitkritischen Situationen, wie z. B. bei einem Penetration-Testing-Wettbewerb oder einer schnellen Reaktion auf Vorfälle, kann die durch diese Option gewonnene Geschwindigkeit von unschätzbarem Wert sein.

Wann sollten Sie -nolookup vermeiden?

  • Umfassende Bewertung: Wenn Sie eine vollständige, tiefgehende Sicherheitsprüfung eines bestimmten Ziels durchführen, möchten Sie so viele Informationen wie möglich erhalten. Die durch DNS-Lookups entdeckten Hostnamen könnten zusätzliche Angriffsflächen aufdecken.
  • Entdeckung virtueller Hosts: Wenn Sie vermuten, dass die Ziel-IP mehrere Websites hostet (Virtual Hosting), sollten Sie Nikto erlauben, Lookups durchzuführen, um diese zu identifizieren.

Das Verständnis dieses Kompromisses zwischen Geschwindigkeit und Gründlichkeit ermöglicht es Ihnen, Nikto für verschiedene Szenarien effektiver einzusetzen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Ihre Nikto-Scans für Geschwindigkeit optimieren. Sie haben mit dem Verständnis des Zwecks des Flags -nolookup begonnen, das Reverse-DNS-Lookups deaktiviert.

Anschließend haben Sie zwei Scans durchgeführt: einen Baseline-Scan und einen zweiten Scan mit der Option -nolookup. Durch den Vergleich der Ausführungszeiten mit dem time-Befehl haben Sie eine deutliche Leistungsverbesserung festgestellt.

Schließlich haben Sie die Kompromisse analysiert und sind zu dem Schluss gekommen, dass -nolookup ideal für schnelle, groß angelegte Scans oder wenn Geschwindigkeit Priorität hat, ist, während vollständige Scans für umfassende Bewertungen dieses Flag weglassen sollten, um so viele Informationen wie möglich zu sammeln.