Einführung
In diesem Labor ist es das Ziel, zu lernen, wie man HTTP-Dienste mit Nmap aufzählt. Sie beginnen mit der Ausführung einer HTTP-Aufzählung auf dem Localhost 127.0.0.1 mit dem http-enum-Skript. Anschließend scannen Sie Port 80, fügen einen User-Agent hinzu und speichern die Aufzählungsergebnisse. Abschließend überprüfen Sie die HTTP-Ergebnisse und vergleichen sie mit einem Banner-Scan im Xfce-Terminal.
Denken Sie daran, dass Sie in realen Szenarien nur Netzwerke und Systeme mit ausdrücklicher Genehmigung scannen sollten.
HTTP-Enum mit nmap --script http-enum 127.0.0.1 ausführen
In diesem Schritt verwenden wir Nmap mit dem http-enum-Skript, um HTTP-Dienste auf dem Localhost aufzuzählen. Dieses Skript hilft bei der Identifizierung potenzieller Schwachstellen und Fehlkonfigurationen, indem es gängige Webserver-Dateien und -Verzeichnisse entdeckt.
Bevor wir beginnen, lassen Sie uns kurz besprechen, was Nmap und NSE-Skripte sind. Nmap ("Network Mapper") ist ein kostenloses Open-Source-Dienstprogramm für die Netzwerkerkennung und Sicherheitsprüfung. NSE (Nmap Scripting Engine) ermöglicht es Benutzern, Skripte zu schreiben, um eine Vielzahl von Netzwerkaufgaben zu automatisieren. Das http-enum-Skript ist ein solches NSE-Skript, das zur Aufzählung gängiger HTTP-Ressourcen entwickelt wurde.
Für dieses Labor werden wir die Localhost-IP-Adresse 127.0.0.1 anvisieren. Dies ist ein sicherer Ansatz zum Lernen, da wir unsere eigene lokale Maschine scannen.
Nun führen wir den Nmap-Befehl aus:
sudo nmap --script http-enum 127.0.0.1
Dieser Befehl weist Nmap an:
sudo: Den Befehl mit Superuser-Privilegien auszuführen, was für bestimmte Nmap-Operationen erforderlich sein kann.nmap: Das Nmap-Tool aufzurufen.--script http-enum: Festzulegen, dass wir dashttp-enum-Skript verwenden möchten.127.0.0.1: Die zu scannende Ziel-IP-Adresse (localhost).
Nachdem Sie den Befehl ausgeführt haben, sehen Sie eine Ausgabe, die der folgenden ähnelt (die genaue Ausgabe hängt vom Zielsystem ab):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
3001/tcp open nessus
8080/tcp open http-proxy
| http-enum:
| /robots.txt: Robots file
|_ /session/: Potentially interesting folder
Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds
Die Ausgabe zeigt, dass das http-enum-Skript auf Port 8080 einige interessante Ressourcen gefunden hat:
/robots.txt: Eine Datei, die angibt, welche Teile der Website von Web-Robotern nicht gecrawlt werden sollten./session/: Ein potenziell interessantes Verzeichnis, das Sitzungs-bezogene Dateien oder Funktionalitäten enthalten könnte.
Diese Ergebnisse können weiter untersucht werden, um potenzielle Schwachstellen oder Fehlkonfigurationen zu identifizieren.
Port 8080 mit nmap --script http-enum -p 8080 127.0.0.1 scannen
In diesem Schritt werden wir unseren Nmap-Scan mit dem http-enum-Skript auf einen bestimmten Port, nämlich Port 8080, konzentrieren. Die Angabe eines Ports kann helfen, den Scan einzugrenzen und gezieltere Ergebnisse zu liefern. Wir werden 127.0.0.1 scannen, was die Loopback-Adresse ist und die lokale Maschine repräsentiert. Dies ist nützlich zum Testen von Diensten, die auf Ihrem eigenen System laufen.
Lassen Sie uns den Befehl, den wir verwenden werden, aufschlüsseln:
sudo nmap --script http-enum -p 8080 127.0.0.1
Hier ist die Bedeutung jedes Teils des Befehls:
sudo: Führt den Befehl mit Superuser-Privilegien aus. Dies kann notwendig sein, um genaue Ergebnisse zu erzielen, insbesondere bei niedrigeren Portnummern.nmap: Ruft das Nmap-Tool auf.--script http-enum: Gibt an, dass wir dashttp-enum-Skript zur Aufzählung von HTTP-Ressourcen verwenden möchten.-p 8080: Diese Option weist Nmap an, nur Port 8080 zu scannen. Port 8080 wird häufig als alternativer HTTP-Port verwendet, oft für Entwicklungsserver oder Proxy-Dienste.127.0.0.1: Die Ziel-IP-Adresse, in diesem Fall die Loopback-Adresse, die sich auf die lokale Maschine bezieht.
Führen Sie nun den Befehl in Ihrem Terminal aus:
sudo nmap --script http-enum -p 8080 127.0.0.1
Die Ausgabe wird in etwa wie folgt aussehen (die genaue Ausgabe hängt von den auf Ihrer lokalen Maschine laufenden Diensten ab):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
| http-enum:
| /robots.txt: Robots file
|_ /session/: Potentially interesting folder
Nmap done: 1 IP address (1 host up) scanned in 0.87 seconds
In diesem Beispiel hat das http-enum-Skript /robots.txt und /session/ gefunden. Dies sind gängige Ressourcen auf Webservern, und weitere Untersuchungen könnten mehr Informationen über die Konfiguration des Servers und potenzielle Schwachstellen aufdecken. Durch die Angabe von Port 8080 haben wir den Scan fokussiert und Ergebnisse erhalten, die spezifisch für den auf der lokalen Maschine laufenden HTTP-Dienst sind.
User-Agent mit nmap --script http-enum --script-args http.useragent=Test 127.0.0.1 hinzufügen
In diesem Schritt passen wir den User-Agent-Header an, der vom http-enum-Skript verwendet wird. Der User-Agent-Header wird vom Client (in diesem Fall Nmap) an den Server gesendet und identifiziert die Client-Software. Die Änderung des User-Agents kann aus mehreren Gründen nützlich sein, wie zum Beispiel:
- Umgehung grundlegender Sicherheitsmaßnahmen: Einige Server blockieren möglicherweise Anfragen von bekannten Scan-Tools. Das Ändern des User-Agents kann helfen, diese Blockaden zu umgehen.
- Testen des Serververhaltens: Sie können beobachten, wie der Server auf verschiedene User-Agent-Strings reagiert.
- Tarnung: Die Verwendung eines weniger gängigen User-Agents kann Ihre Scans unauffälliger machen.
Wir verwenden die Option --script-args, um den Wert http.useragent zu ändern.
Hier ist der Befehl, den wir verwenden werden:
sudo nmap --script http-enum --script-args http.useragent=Test 127.0.0.1
Lassen Sie uns diesen Befehl aufschlüsseln:
sudo: Führt den Befehl mit Superuser-Privilegien aus.nmap: Ruft das Nmap-Tool auf.--script http-enum: Gibt an, dass wir dashttp-enum-Skript verwenden möchten.--script-args http.useragent=Test: Dies ist der entscheidende Teil. Er übergibt ein Argument an dashttp-enum-Skript. Insbesondere setzt er die Variablehttp.useragentauf den Wert "Test". Das bedeutet, dass das Skript bei HTTP-Anfragen "Test" als User-Agent-Header verwendet.127.0.0.1: Die zu scannende Ziel-IP-Adresse (localhost).
Führen Sie den Befehl in Ihrem Terminal aus:
sudo nmap --script http-enum --script-args http.useragent=Test 127.0.0.1
Die Ausgabe wird der Ausgabe aus dem ersten Schritt ähneln, aber die an den Server gesendeten HTTP-Anfragen enthalten nun den Header User-Agent: Test. Sie sehen den User-Agent nicht direkt in der Nmap-Ausgabe, aber er wird während des Scans im Hintergrund verwendet.
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
3001/tcp open nessus
8080/tcp open http-proxy
| http-enum:
| /robots.txt: Robots file
|_ /session/: Potentially interesting folder
Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds
Dieser Schritt zeigt, wie Nmap-Skripte mit der Option --script-args angepasst werden können. Dies ermöglicht es Ihnen, das Verhalten der Skripte fein abzustimmen und sie an spezifische Situationen anzupassen.
Enum-Ergebnisse mit nmap --script http-enum -oN http_enum.txt 127.0.0.1 speichern
In diesem Schritt speichern wir die Ergebnisse des http-enum-Skripts in einer Datei. Dies ist entscheidend für spätere Analysen und Berichte. Nmap bietet mehrere Optionen zum Speichern von Scan-Ergebnissen in verschiedenen Formaten. Wir verwenden die Option -oN, die die Ergebnisse in einem "normalen", für Menschen lesbaren Format speichert.
Hier ist der Befehl, den wir verwenden werden:
sudo nmap --script http-enum -oN http_enum.txt 127.0.0.1
Lassen Sie uns diesen Befehl aufschlüsseln:
sudo: Führt den Befehl mit Superuser-Privilegien aus.nmap: Ruft das Nmap-Tool auf.--script http-enum: Gibt an, dass wir dashttp-enum-Skript verwenden möchten.-oN http_enum.txt: Diese Option weist Nmap an, die Ergebnisse im normalen Format in die Datei namenshttp_enum.txtzu speichern. Die Datei wird in Ihrem aktuellen Verzeichnis (~/project) erstellt.127.0.0.1: Die zu scannende Ziel-IP-Adresse (die Loopback-Adresse).
Führen Sie den Befehl in Ihrem Terminal aus:
sudo nmap --script http-enum -oN http_enum.txt 127.0.0.1
Die Ausgabe im Terminal wird der Ausgabe aus den vorherigen Schritten ähneln, aber zusätzlich zur Anzeige der Ergebnisse auf dem Bildschirm speichert Nmap diese auch in der Datei http_enum.txt.
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
3001/tcp open nessus
8080/tcp open http-proxy
| http-enum:
| /robots.txt: Robots file
|_ /session/: Potentially interesting folder
Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds
Um zu überprüfen, ob die Datei erstellt wurde und die Scan-Ergebnisse enthält, können Sie den Befehl cat verwenden, um den Inhalt der Datei anzuzeigen:
cat http_enum.txt
Sie sollten die Nmap-Scan-Ergebnisse in der Ausgabe sehen. Diese Datei kann nun für weitere Analysen, Berichte oder als Eingabe für andere Tools verwendet werden.
HTTP-Ergebnisse im Xfce-Terminal überprüfen
In diesem Schritt überprüfen wir die HTTP-Ergebnisse aus der Datei http_enum.txt, die wir im vorherigen Schritt erstellt haben. Wir verwenden das Xfce-Terminal und den Befehl cat, um den Inhalt der Datei anzuzeigen und die Ergebnisse zu analysieren.
Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project befinden. Hier sollte sich die Datei http_enum.txt befinden.
Um den Inhalt der Datei http_enum.txt anzuzeigen, verwenden Sie den folgenden Befehl:
cat http_enum.txt
Dieser Befehl gibt den Inhalt der Datei in Ihrem Terminal aus.
Beispielausgabe (die tatsächliche Ausgabe kann je nach Ziel variieren):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
3001/tcp open nessus
8080/tcp open http-proxy
| http-enum:
| /robots.txt: Robots file
|_ /session/: Potentially interesting folder
Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds
Analysieren wir nun die Ausgabe. Das http-enum-Skript versucht, potenziell interessante Dateien und Verzeichnisse auf dem Webserver zu identifizieren. In diesem Beispiel hat es Folgendes gefunden:
/robots.txt: Diese Datei enthält Anweisungen für Web-Robots (Crawler), welche Teile der Website nicht indiziert werden sollten. Sie kann manchmal versteckte oder sensible Bereiche der Website aufdecken./session/: Dies ist ein potenziell interessantes Verzeichnis, das möglicherweise sitzungsbezogene Dateien, Konfigurationsdateien oder andere sensible Informationen enthält.
Durch die Überprüfung dieser Ergebnisse können Sie ein besseres Verständnis der Struktur des Webservers gewinnen und potenzielle Bereiche für weitere Untersuchungen identifizieren. Sie könnten beispielsweise einen Webbrowser verwenden, um http://127.0.0.1:8080/robots.txt und http://127.0.0.1:8080/session/ zu besuchen, um zu sehen, was sie enthalten.
Dieser Schritt zeigt, wie die Ausgabe von Nmap-Skripten überprüft und potenziell interessante Informationen identifiziert werden. Dies ist ein wichtiger Teil des Aufklärungsprozesses (Reconnaissance).
Ergebnisse mit Banner-Scan im Xfce-Terminal vergleichen
In diesem Schritt führen wir einen Banner-Scan mit Nmap durch und vergleichen dessen Ergebnisse mit den Erkenntnissen aus dem http-enum-Skript. Banner Grabbing ist eine Technik, die verwendet wird, um Informationen über einen Dienst zu sammeln, indem der Banner untersucht wird, den er bei Herstellen einer Verbindung präsentiert. Dies kann die Softwareversion und andere Details aufdecken.
Zuerst führen wir einen Banner-Scan auf Port 8080 des Ziels (127.0.0.1) mit Nmap durch. Wir verwenden die Option -sV, die die Versionserkennung aktiviert:
sudo nmap -sV -p 8080 127.0.0.1
Dieser Befehl versucht, den Dienst und die Version zu ermitteln, die auf Port 8080 laufen.
Beispielausgabe:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).
PORT STATE SERVICE VERSION
8080/tcp open http SimpleHTTPServer 0.6 (Python 3.7.5)
Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds
In diesem Beispiel zeigt der Banner-Scan, dass der Webserver SimpleHTTPServer 0.6 ist, der auf Python 3.7.5 läuft.
Vergleichen wir nun diese Informationen mit den Erkenntnissen aus dem http-enum-Skript, das wir im vorherigen Schritt besprochen haben. Das http-enum-Skript identifizierte potenzielle Dateien und Verzeichnisse wie /robots.txt und /session/.
Durch den Vergleich der Ergebnisse des Banner-Scans und des http-enum-Skripts können wir ein umfassenderes Bild des Zielsystems erstellen. Der Banner-Scan liefert Informationen über die Softwareversionen, während das http-enum-Skript potenzielle Dateien und Verzeichnisse aufdeckt. Diese kombinierten Informationen können wertvoll sein, um Schwachstellen zu identifizieren und weitere Angriffe zu planen.
Wenn Sie beispielsweise die Version der Webserver-Software kennen, können Sie nach bekannten Schwachstellen suchen, die spezifisch für diese Version sind. Die identifizierten Dateien und Verzeichnisse können dann für die Ausnutzung ins Visier genommen werden.
Dieser Schritt demonstriert die Bedeutung der Kombination verschiedener Scan-Techniken, um umfassende Informationen über ein Zielsystem zu sammeln.
Zusammenfassung
In diesem Lab lernten die Teilnehmer, HTTP-Dienste mit dem http-enum-Skript von Nmap aufzulisten (enumerieren). Sie führten Befehle aus, um localhost (127.0.0.1) zu scannen, Port 8080 anzuvisieren, einen benutzerdefinierten User-Agent hinzuzufügen und die Ergebnisse in einer Textdatei zu speichern. Das Lab betonte die Verwendung von Superuser-Privilegien für bestimmte Operationen und demonstrierte sichere Scan-Praktiken durch die Verwendung von localhost.
Nachdem die Scans ausgeführt wurden, überprüften die Teilnehmer die HTTP-Ergebnisse und verglichen sie mit einem Banner-Scan im Xfce-Terminal. Dies half ihnen, potenzielle Schwachstellen und Fehlkonfigurationen auf dem lokalen Webserver zu identifizieren. Dieser praktische Ansatz vermittelte praktische Erfahrungen mit Netzwerk-Aufklärungstechniken (network reconnaissance techniques).



