Dienst- und Versionserkennung

NmapBeginner
Jetzt üben

Einführung

In der Netzwerksicherheit und Systemadministration ist die bloße Erkenntnis, dass ein Port offen ist, nur die halbe Miete. Standardmäßig raten Port-Scanner den laufenden Dienst basierend auf den Standard-Portnummern (man geht beispielsweise davon aus, dass Port 80 immer ein HTTP-Webserver ist). Administratoren können jedoch jeden beliebigen Dienst auf jedem beliebigen Port ausführen.

Genau deshalb sind Banner- und Versionserkennung so wichtig. Portnummern sind lediglich Hinweise, keine Beweise. In realen Umgebungen werden häufig benutzerdefinierte Ports, Reverse-Proxys, Container-Frontends oder irreführende Dienstnamen verwendet.

Um präzise zu identifizieren, was tatsächlich auf einem Zielsystem läuft, müssen Sie die offenen Ports aktiv abfragen. In diesem Lab erkunden Sie die Funktionen von Nmap zur Versionserkennung. Sie lernen, wie Sie Service-Banner abgreifen und die exakten Softwarenamen sowie Versionsnummern ermitteln – ein entscheidender Schritt bei der Schwachstellenanalyse.

Versionserkennung aktivieren

In diesem Schritt lernen Sie die Grundlagen der Nmap-Versionserkennung kennen. Standardmäßig teilt Ihnen Nmap lediglich mit, ob ein Port offen ist und welcher Dienst basierend auf einer statischen Nachschlagetabelle normalerweise auf diesem Port läuft. Um herauszufinden, welche Software tatsächlich auf Anfragen wartet, müssen Sie den Dienst aktiv abfragen.

Sie können die Versionserkennung aktivieren, indem Sie das Flag -sV zu Ihrem Nmap-Befehl hinzufügen. Dies weist Nmap an, eine Reihe spezifischer Sonden (Probes) an die offenen Ports zu senden und die Antworten zu analysieren, um den Dienst und dessen Version zu bestimmen.

Mit anderen Worten: Nmap verlässt sich nicht mehr nur auf die Portnummer, sondern beginnt, das Verhalten der Anwendung direkt zu untersuchen.

Führen Sie den folgenden Befehl in Ihrem Terminal aus, um Ihren lokalen Rechner zu scannen und die Versionen der laufenden Dienste zu erkennen:

nmap -sV -p 80,8080 localhost

Sie erhalten eine Ausgabe, die in etwa so aussieht:

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000010s latency).
PORT     STATE SERVICE VERSION
80/tcp   open  http    nginx 1.18.0 (Ubuntu)
8080/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.51 seconds

Achten Sie auf die Spalte VERSION in der Ausgabe. Anstatt nur zu vermuten, dass Port 80 HTTP ist, hat Nmap aktiv mit dem Port kommuniziert und festgestellt, dass dort Nginx in der Version 1.18.0 läuft. Zudem wurde erfolgreich ein Python-HTTP-Server auf Port 8080 identifiziert.

Versionsintensität anpassen

In diesem Schritt lernen Sie, wie Sie die Aggressivität der Nmap-Versionserkennung steuern können. Nmap verwendet eine Skala von 0 bis 9, um festzulegen, wie viele Sonden an einen Zieldienst gesendet werden sollen.

Die Standardintensität ist 7. Eine höhere Intensität bedeutet, dass Nmap mehr Sonden ausprobiert, was die Chancen auf eine korrekte Identifizierung des Dienstes erhöht, aber mehr Zeit in Anspruch nimmt. Eine niedrigere Intensität ist schneller, könnte jedoch bei exotischen Diensten scheitern. Sie können dies mit dem Flag --version-intensity gefolgt von einer Zahl zwischen 0 und 9 anpassen.

Dies ist ein klassischer Kompromiss zwischen Geschwindigkeit und Genauigkeit. Je unsicherer oder ungewöhnlicher das Ziel erscheint, desto wertvoller wird eine tiefere Untersuchung.

Lassen Sie uns einen hochgradig aggressiven Scan durchführen, indem wir die Intensität auf 9 setzen. Dies zwingt Nmap dazu, jede einzelne Sonde aus seiner Datenbank gegen die offenen Ports zu testen. Führen Sie den folgenden Befehl aus:

nmap -sV -p 80,8080 --version-intensity 9 localhost

Die Ausgabe sieht ähnlich aus wie im vorherigen Schritt, aber im Hintergrund war Nmap bei der Untersuchung deutlich gründlicher:

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000012s latency).
PORT     STATE SERVICE VERSION
80/tcp   open  http    nginx 1.18.0 (Ubuntu)
8080/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Sie können auch das Flag --version-light als Abkürzung für Intensität 2 oder --version-all als Abkürzung für Intensität 9 verwenden. Diese Abkürzungen erleichtern es, das Scan-Verhalten schnell anzupassen, ohne sich die genauen Zahlen merken zu müssen.

Exakte Softwareversion identifizieren

In diesem Schritt konzentrieren Sie sich darauf, die exakte Softwareversion eines bestimmten Dienstes zu identifizieren und die Ergebnisse für die Dokumentation zu speichern. Bei Sicherheitsüberprüfungen ist das Festhalten der genauen Softwareversionen entscheidend, um bekannte Schwachstellen zu finden.

Anstatt alle Ports zu scannen, können Sie einen spezifischen Port mit dem Flag -p anvisieren und die Ausgabe mit dem Flag -oN in eine Datei speichern. Dies ist sehr nützlich, wenn Sie einen bestimmten Dienst isolieren und die Ergebnisse mit Ihrem Team teilen möchten.

Führen Sie den folgenden Befehl aus, um nur Port 80 zu scannen, dessen Version zu erkennen und die Ausgabe in einer Datei namens version_scan.txt in Ihrem aktuellen Verzeichnis zu speichern:

nmap -sV -p 80 localhost -oN version_scan.txt

Nachdem der Scan abgeschlossen ist, können Sie den Inhalt der gespeicherten Datei mit dem Befehl cat anzeigen:

cat version_scan.txt

Ihre Ausgabe sollte die exakte Version des Nginx-Servers anzeigen, der auf Port 80 läuft:

## Nmap 7.80 scan initiated ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000015s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    nginx 1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

## Nmap done at ...

Durch die Dokumentation der exakten Version, wie z. B. nginx 1.18.0, können Sie nun in Schwachstellendatenbanken nachsehen, ob für diese spezifische Version bekannte Sicherheitslücken existieren.

Zusammenfassung

In diesem Lab haben Sie die leistungsstarken Funktionen von Nmap zur Versionserkennung erkundet. Sie haben gelernt, wie Sie das Flag -sV verwenden, um über einfaches Port-Scanning hinauszugehen und Dienste aktiv abzufragen, um deren exakte Softwarenamen und Versionen zu entdecken. Zudem haben Sie gelernt, wie Sie die Scan-Intensität mit --version-intensity anpassen, um ein Gleichgewicht zwischen Geschwindigkeit und Genauigkeit zu finden, und wie Sie gezielt einzelne Ports scannen und die Ergebnisse für die Schwachstellenanalyse speichern. Diese Fähigkeiten sind für eine präzise Netzwerkabbildung und Sicherheitsaudits unerlässlich.