Schwachstellen-Scanning mit NSE

NmapBeginner
Jetzt üben

Einführung

Willkommen zum Lab „Schwachstellen-Scanning mit NSE“.

Nmap (Network Mapper) ist ein leistungsstarkes Open-Source-Tool für die Netzwerkerkennung und Sicherheitsüberprüfung. Eine seiner flexibelsten und mächtigsten Funktionen ist die Nmap Scripting Engine (NSE). NSE ermöglicht es Benutzern, einfache Skripte zu schreiben und zu teilen, um eine Vielzahl von Netzwerkaufgaben zu automatisieren.

Die Verwendung von NSE für das Schwachstellen-Scanning ist effektiv, verändert jedoch die Art des Scans. Sie beobachten nicht mehr nur die Exposition, sondern suchen aktiv nach bekannten Schwachstellen. Dies macht eine präzise Kontrolle des Scopes und eine sorgfältige Interpretation der Ergebnisse umso wichtiger.

In diesem Lab lernen Sie, wie Sie Nmap von einem einfachen Port-Scanner in einen aktiven Schwachstellen-Scanner verwandeln. Sie nutzen spezifische Skriptkategorien wie vuln, um Ziel-Dienste aktiv zu untersuchen. Dieser Prozess hilft dabei, bekannte Common Vulnerabilities and Exposures (CVEs) und gefährliche Fehlkonfigurationen auf Servern zu identifizieren. Am Ende dieses Labs werden Sie in der Lage sein, die Skript-Datenbank zu aktualisieren, kategorienbasierte Scans durchzuführen, spezifische Dienste wie HTTP und SMB zu prüfen und die Scan-Ergebnisse zu analysieren.

Aktualisierung der NSE-Skript-Datenbank

In diesem Schritt lernen Sie, wie Sie die Datenbank der Nmap Scripting Engine (NSE) aktualisieren.

Nmap wird mit hunderten von Skripten ausgeliefert, die sich im Verzeichnis /usr/share/nmap/scripts/ befinden. Diese Skripte sind nach ihrem Zweck kategorisiert, beispielsweise in default, discovery, safe, intrusive, vuln und exploit.

Bevor Sie Schwachstellen-Scans durchführen, ist es bewährte Praxis sicherzustellen, dass die interne Skript-Datenbank von Nmap auf dem neuesten Stand ist. Diese Datenbank fungiert als Index, der es Nmap ermöglicht, Skripte schnell zu finden und zu kategorisieren. Wenn neue Skripte zum System hinzugefügt oder bestehende geändert werden, muss die Datenbank aktualisiert werden, damit Nmap weiß, wie diese zu verwenden sind.

Dies spiegelt ein grundlegendes Sicherheitsprinzip wider: Erkennungs- und Bewertungsinhalte veralten schnell. Tools sind nur so aktuell wie die Regeln, Signaturen oder Vorlagen, auf denen sie basieren.

Um die NSE-Skript-Datenbank zu aktualisieren, müssen Sie das Argument --script-updatedb verwenden. Da dieser Befehl Systemdateien im Nmap-Installationsverzeichnis ändert, sind administrative Rechte erforderlich.

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

sudo nmap --script-updatedb

Sie sollten eine Ausgabe ähnlich der folgenden sehen, die bestätigt, dass die Datenbank erfolgreich aktualisiert wurde:

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:25 CST
NSE: Updating rule database.
NSE: Script Database updated successfully.
Nmap done: 0 IP addresses (0 hosts up) scanned in 1.09 seconds

Dies bestätigt, dass Nmap seinen Index der verfügbaren Skripte und Kategorien erfolgreich aktualisiert hat. Sie sind nun bereit, mit dem Scannen zu beginnen.

Durchführung von Schwachstellen-Scans (Kategorie vuln)

In diesem Schritt verwenden Sie die vuln-Kategorie der NSE-Skripte, um Ihre lokale Maschine auf bekannte Schwachstellen zu scannen.

Die Kategorie vuln enthält Skripte, die speziell dafür entwickelt wurden, nach bekannten Schwachstellen zu suchen und diese zu melden. Wenn Sie eine Kategorie anstelle eines einzelnen Skriptnamens angeben, führt Nmap automatisch alle Skripte aus, die zu dieser Kategorie gehören, gegen die entdeckten offenen Ports.

Die Ergebnisse dieser Skripte sind Hinweise, keine endgültigen Beweise für eine Kompromittierung. Ein positives Ergebnis bedeutet oft: „Dieser Dienst scheint mit einem bekannten Problem übereinzustimmen“ und erfordert weiterhin eine Analyse durch einen Experten.

Um die genauesten Ergebnisse zu erzielen, wird dringend empfohlen, NSE-Skripte mit der Versionserkennung zu kombinieren. Die Versionserkennung (-sV) versucht, die genaue Software und Version zu bestimmen, die auf einem offenen Port läuft. Viele Schwachstellen-Skripte verlassen sich auf diese Versionsinformationen, um zu entscheiden, ob ein Ziel anfällig sein könnte, bevor sie intrusive Sonden senden.

Sie scannen Ihre lokale Maschine (localhost) unter Verwendung der Versionserkennung und der Skriptkategorie vuln.

Führen Sie den folgenden Befehl aus:

nmap -sV --script vuln -p 80,139,445 localhost

Der Scan kann ein oder zwei Minuten dauern, da Schwachstellen-Skripte komplexe Prüfungen durchführen. Ihre Ausgabe wird in etwa so aussehen:

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:25 CST
Pre-scan script results:
| broadcast-avahi-dos: 
|   Discovered hosts:
|     224.0.0.251
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0014s latency).

PORT    STATE SERVICE     VERSION
80/tcp  open  http        Apache httpd 2.4.52 ((Ubuntu))
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-enum: 
|_  /server-status/: Potentially interesting folder
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| vulners: 
|   cpe:/a:apache:http_server:2.4.52: 
|      PACKETSTORM:176334 9.8 https://vulners.com/packetstorm/PACKETSTORM:176334 *EXPLOIT*
|      HTTPD:C072933AA965A86DA3E2C9172FFC1569 9.8 https://vulners.com/httpd/HTTPD:C072933AA965A86DA3E2C9172FFC1569
|       ... (truncated for brevity)
139/tcp open  netbios-ssn Samba smbd 4.6.2
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
| vulners: 
|   cpe:/a:samba:samba:4.6.2: 
|      SSV:93139 10.0 https://vulners.com/seebug/SSV:93139 *EXPLOIT*
|      SAMBA_IS_KNOWN_PIPENAME 10.0 https://vulners.com/canvas/SAMBA_IS_KNOWN_PIPENAME *EXPLOIT*
|       ... (truncated for brevity)
445/tcp open  netbios-ssn Samba smbd 4.6.2
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
| vulners: 
|   cpe:/a:samba:samba:4.6.2: 
|      SSV:93139 10.0 https://vulners.com/seebug/SSV:93139 *EXPLOIT*
|       ... (truncated for brevity)

Host script results:
|_samba-vuln-cve-2012-1182: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [9]
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [9]

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

In dieser Ausgabe hat Nmap den Apache-Webserver auf Port 80 und den Samba-Dienst auf den Ports 139 und 445 entdeckt. Die Skripte der Kategorie vuln wurden automatisch gegen diese Dienste ausgeführt und prüften auf häufige Probleme wie interessante HTTP-Verzeichnisse und bekannte SMB-Schwachstellen.

Prüfung spezifischer Dienste (z. B. SMB/HTTP)

In diesem Schritt lernen Sie, wie Sie gezielt einzelne Dienste mit spezifischen NSE-Skripten untersuchen, anstatt eine ganze Kategorie auszuführen.

Das Ausführen einer ganzen Kategorie wie vuln kann zeitaufwendig sein und viel „Rauschen“ erzeugen. Oft identifizieren Sie während einer Sicherheitsbewertung einen bestimmten Dienst (wie einen Webserver oder eine Dateifreigabe) und möchten gezielte Skripte dagegen ausführen.

Zum Beispiel enumeriert das Skript http-enum Verzeichnisse, die von gängigen Webanwendungen und Servern verwendet werden. Es ist eine hervorragende Methode, um versteckte Administrations-Panels oder Backup-Ordner zu finden. Um den Scan zu beschleunigen, können Sie das Flag -p verwenden, um Nmap anzuweisen, nur den spezifischen Port zu scannen, auf dem der Dienst läuft (z. B. Port 80 für HTTP).

Führen Sie den folgenden Befehl aus, um den lokalen Apache-Webserver zu prüfen:

nmap -p 80 --script http-enum localhost

Sie werden eine Ausgabe sehen, die sich nur auf Port 80 konzentriert:

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000096s latency).

PORT   STATE SERVICE
80/tcp open  http
| http-enum: 
|_  /server-status/: Potentially interesting folder

Nmap done: 1 IP address (1 host up) scanned in 0.62 seconds

Ebenso können Sie den Samba (SMB)-Dienst ins Visier nehmen. SMB ist ein Netzwerk-Dateifreigabeprotokoll, das in der Vergangenheit häufig Ziel von Exploits war. Sie können das Skript smb-os-discovery verwenden, um detaillierte Informationen über das Betriebssystem und die SMB-Konfiguration zu sammeln. SMB läuft typischerweise auf den Ports 139 und 445.

Führen Sie den folgenden Befehl aus, um den lokalen SMB-Dienst zu prüfen:

nmap -p 139,445 --script smb-os-discovery localhost

Die Ausgabe liefert detaillierte Informationen über den SMB-Dienst:

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).

PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds

Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds

Durch die gezielte Auswahl von Ports und Skripten reduzieren Sie die Scan-Zeit erheblich und erhalten hochgradig fokussierte, verwertbare Ergebnisse.

Analyse der NSE-Ausgabe

In diesem letzten Schritt lernen Sie, wie Sie Ihre Nmap-Scan-Ergebnisse in einer Datei speichern und die Ausgabe nach bestimmten Schlüsselwörtern analysieren.

Bei der Durchführung von Schwachstellen-Scans kann die Ausgabe sehr umfangreich sein. Es ist entscheidend, die Ergebnisse in einer Datei zu speichern, damit Sie sie später überprüfen, mit Ihrem Team teilen oder mit anderen Befehlszeilen-Tools parsen können. Nmap bietet verschiedene Ausgabeformate. Das Flag -oN speichert die Ausgabe in einem normalen, menschenlesbaren Textformat.

Sie führen einen Schwachstellen-Scan gegen die lokale Maschine durch und speichern die Ergebnisse in einer Datei namens vuln_scan.txt in Ihrem Projektverzeichnis.

Führen Sie den folgenden Befehl aus:

nmap -sV --script vuln -p 80,139,445 localhost -oN ~/project/vuln_scan.txt

Warten Sie, bis der Scan abgeschlossen ist. Sobald er fertig ist, sind die Ergebnisse sicher in ~/project/vuln_scan.txt gespeichert.

Nun können Sie diese Datei analysieren. In einem realen Szenario suchen Sie möglicherweise nach spezifischen Indikatoren für eine Kompromittierung oder kritischen Schwachstellen. Sie können den Befehl grep verwenden, um die Textdatei zu durchsuchen. Sie können beispielsweise nach dem Wort „VULNERABLE“ suchen (unter Verwendung des Flags -i für die Groß-/Kleinschreibung), um schnell bestätigte Probleme zu finden.

Führen Sie den folgenden Befehl aus, um die Ausgabedatei zu durchsuchen:

grep -i "VULNERABLE" ~/project/vuln_scan.txt
|_  Hosts are all up (not vulnerable).

Um zu überprüfen, ob die Datei erstellt wurde und die Scandaten enthält, können Sie die ersten Zeilen der Datei mit dem Befehl head anzeigen:

head -n 10 ~/project/vuln_scan.txt

Sie sollten den Standard-Nmap-Header und den Beginn des Scan-Berichts sehen:

## Nmap 7.80 scan initiated Mon Mar  9 15:27:21 2026 as: nmap -sV --script vuln -p 80,139,445 -oN /home/labex/project/vuln_scan.txt localhost
Pre-scan script results:
| broadcast-avahi-dos: 
|   Discovered hosts:
|     224.0.0.251
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000085s latency).

Das Speichern und Parsen von Ausgaben ist eine grundlegende Fähigkeit für jeden Sicherheitsexperten, die es Ihnen ermöglicht, große Datenmengen effizient zu verwalten.

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Lab „Schwachstellen-Scanning mit NSE“ erfolgreich abgeschlossen.

In diesem Lab haben Sie gelernt, wie Sie Nmap von einem Standard-Port-Scanner zu einem aktiven Schwachstellen-Bewertungstool erweitern. Sie begannen mit der Aktualisierung der Nmap Scripting Engine-Datenbank, um sicherzustellen, dass Ihnen die neuesten Skripte zur Verfügung stehen. Anschließend nutzten Sie die Kategorie vuln, um entdeckte Dienste automatisch auf bekannte Schwachstellen zu untersuchen. Darüber hinaus haben Sie geübt, spezifische Dienste wie HTTP und SMB mit individuellen Skripten für gezielte Audits anzusprechen. Schließlich haben Sie gelernt, wie Sie Ihre Scan-Ergebnisse in einer Datei speichern und diese mit Befehlszeilen-Tools für eine effiziente Analyse parsen.

Diese Fähigkeiten bilden eine solide Grundlage für die Netzwerksicherheitsüberprüfung und das Schwachstellenmanagement.