Einführung
In diesem Lab verwandeln Sie Nmap von einem einfachen Port-Scanner in ein vielseitiges Audit-Tool. Sie werden die Nmap Scripting Engine (NSE) erkunden, eine der leistungsfähigsten und flexibelsten Funktionen von Nmap.
Die NSE ermöglicht es Benutzern, einfache Skripte zu schreiben und zu teilen, um eine Vielzahl von Netzwerkaufgaben zu automatisieren. Diese Skripte werden parallel mit der Geschwindigkeit und Effizienz ausgeführt, die Sie von Nmap erwarten. Am Ende dieses Labs werden Sie wissen, wie Sie diese Skripte auf Ihrem Linux-System finden, standardmäßige, nicht-intrusive Skripte ausführen und gezielte Skripte verwenden, um automatisch Informationen wie HTTP-Webseitentitel zu extrahieren.
Die NSE ist deshalb so wichtig, weil sie Nmap von einem reinen Mapper in eine kleine Audit-Plattform verwandelt. Sobald ein Port gefunden wurde, können Skripte detailliertere Fragen an die Anwendung stellen, ohne dass sofort ein separates Tool erforderlich ist.
NSE-Skripte lokalisieren
In diesem Schritt erkunden Sie, wo Nmap seine Skripte speichert und wie Sie nach bestimmten Skripten suchen können.
Die Nmap Scripting Engine (NSE) verwendet Skripte, die in der Programmiersprache Lua geschrieben sind. Wenn Sie Nmap auf einem Linux-System installieren, sind Hunderte dieser Skripte bereits vorinstalliert, die alles von der grundlegenden Netzwerkerkennung bis hin zur komplexen Schwachstellenanalyse abdecken.
Zu wissen, wo sich die Skripte befinden, ist nützlich, da sowohl Verteidiger als auch Tester verstehen müssen, welche Logik sie tatsächlich gegen ein Ziel ausführen.
Standardmäßig speichert Nmap alle seine NSE-Skripte im Verzeichnis /usr/share/nmap/scripts/. Sie können den Inhalt dieses Verzeichnisses auflisten, um zu sehen, was verfügbar ist.
Führen Sie den folgenden Befehl aus, um die ersten Skripte im Verzeichnis aufzulisten:
ls /usr/share/nmap/scripts/ | head -n 10
Sie erhalten eine Ausgabe, die in etwa so aussieht:
acarsd-info.nse
address-info.nse
afp-brute.nse
afp-ls.nse
afp-path-vuln.nse
afp-serverinfo.nse
afp-showmount.nse
ajp-auth.nse
ajp-brute.nse
ajp-headers.nse
Beachten Sie, dass alle Dateien auf die Endung .nse enden, was für Nmap Scripting Engine steht.
Da es über 600 Skripte gibt, ist es oft hilfreich, nach Skripten zu suchen, die sich auf einen bestimmten Dienst beziehen. Wenn Sie beispielsweise Skripte im Zusammenhang mit HTTP (Webservern) finden möchten, können Sie den Befehl grep verwenden, um die Ergebnisse zu filtern.
Führen Sie den folgenden Befehl aus, um HTTP-bezogene Skripte zu finden:
ls /usr/share/nmap/scripts/ | grep http | head -n 10
Dies zeigt eine Liste von Skripten an, die für die Interaktion mit Webservern entwickelt wurden, wie z. B. http-title.nse, das den Titel einer Webseite abruft, oder http-auth.nse, das auf Authentifizierungsmechanismen prüft.
Standard-Skripte ausführen (-sC)
In diesem Schritt lernen Sie, wie Sie die Standard-Skriptsammlung von Nmap ausführen.
Nmap kategorisiert seine Skripte in verschiedene Gruppen, basierend auf ihrem Zweck und ihrer Intrusivität. Die Kategorie default enthält Skripte, die als sicher, schnell und zuverlässig gelten. Sie sammeln nützliche Informationen, ohne das Ziel aggressiv anzugreifen oder Dienstunterbrechungen zu verursachen.
Kategorien sind im Grunde eine Klassifizierung von Risiko und Absicht. Sie helfen Ihnen dabei, Skripte auszuwählen, die zum Kontext passen, anstatt blind alles Verfügbare auszuführen.
Um die Standard-Skripte auszuführen, können Sie das Flag -sC verwenden. Dies entspricht der Eingabe von --script=default.
Für dieses Lab wurde im Hintergrund ein leichtgewichtiger Webserver auf Port 8080 gestartet, und der Standard-SSH-Dienst läuft auf Port 22. Lassen Sie uns die lokale Maschine (localhost) auf diesen spezifischen Ports mit den Standard-Skripten scannen.
Führen Sie den folgenden Befehl aus:
nmap -sC -p 22,8080 localhost
Sie erhalten eine Ausgabe, die in etwa so aussieht:
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:56 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
22/tcp open ssh
8080/tcp open http-proxy
|_http-title: LabEx Nmap NSE Target
Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds
Betrachten Sie die Ausgabe genau. Unter Port 8080 hat Nmap automatisch das Skript http-title ausgeführt und erfolgreich den Webseitentitel "LabEx Nmap NSE Target" extrahiert. Nmap verwendet diese Standard-Skripte, um nahtlos mehr Informationen über die offenen Ports zu sammeln.
Dies zeigt, wie das Flag -sC Nmap sofort von einem einfachen Port-Scanner in ein Tool zur Informationsbeschaffung verwandelt.
Spezifische Skriptkategorien ausführen
In diesem Schritt lernen Sie, wie Sie spezifische Skripte oder ganze Skriptkategorien mit dem Argument --script ausführen.
Während die Standard-Skripte (-sC) hervorragend für die allgemeine Aufklärung geeignet sind, müssen Sie manchmal ein bestimmtes Skript für eine gezielte Aufgabe ausführen. Dies können Sie tun, indem Sie den Namen des Skripts an das Argument --script übergeben.
Wenn Sie beispielsweise nur den HTTP-Titel des Webservers auf Port 8080 abrufen möchten, ohne andere Standard-Skripte auszuführen, können Sie das Skript http-title direkt angeben.
Führen Sie den folgenden Befehl aus:
nmap --script=http-title -p 8080 localhost
Die Ausgabe ist sehr fokussiert und zeigt nur den Port-Status und das Ergebnis des Skripts http-title:
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:56 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000057s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
8080/tcp open http-proxy
|_http-title: LabEx Nmap NSE Target
Nmap done: 1 IP address (1 host up) scanned in 0.28 seconds
Zusätzlich zu einzelnen Skriptnamen können Sie auch Skriptkategorien angeben. Nmap gruppiert Skripte in Kategorien wie safe, intrusive, vuln (Schwachstellenerkennung), discovery und exploit.
Führen Sie den folgenden Befehl aus, um alle safe-Skripte gegen Port 8080 auszuführen:
nmap --script=safe -p 8080 localhost
Hinweis: Das Ausführen einer ganzen Kategorie von Skripten kann je nach Netzwerkumgebung und Anzahl der Skripte in dieser Kategorie eine beträchtliche Zeit in Anspruch nehmen (manchmal über 9 Minuten!). Einige Skripte warten möglicherweise auch auf Timeouts. Wenn Sie nicht warten möchten, können Sie
Ctrl+Cdrücken, um den Scan abzubrechen und diesen Schritt zu überspringen.
Die Ausgabe enthält den HTTP-Titel, kann aber je nach Nmap-Version und Umgebung auch weitere sichere Prüfungen enthalten:
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:56 CST
Pre-scan script results:
| targets-asn:
|_ targets-asn.asn is a mandatory parameter
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000057s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
8080/tcp open http-proxy
|_http-date: Mon, 09 Mar 2026 06:57:04 GMT; 0s from local time.
|_http-fetch: Please enter the complete path of the directory to save data in.
| http-headers:
| Server: SimpleHTTP/0.6 Python/3.10.12
| Date: Mon, 09 Mar 2026 06:57:03 GMT
| Content-type: text/html
| Content-Length: 103
| Last-Modified: Mon, 09 Mar 2026 06:55:32 GMT
|
|_ (Request type: HEAD)
|_http-title: LabEx Nmap NSE Target
Host script results:
| dns-blacklist:
| SPAM
| list.quorum.to - SPAM
| l2.apews.org - FAIL
|_ bl.nszones.com - SPAM
|_fcrdns: FAIL (No PTR record)
| resolveall:
| Host 'localhost' also resolves to:
| Use the 'newtargets' script-arg to add the results as targets
|_ Use the --resolve-all option to scan all resolved addresses without using this script.
| unusual-port:
|_ WARNING: this script depends on Nmap's service/version detection (-sV)
Post-scan script results:
| reverse-index:
|_ 8080/tcp: 127.0.0.1
Nmap done: 1 IP address (1 host up) scanned in 551.51 seconds
Die Verwendung des Arguments --script gibt Ihnen eine granulare Kontrolle über Ihren Audit-Prozess und ermöglicht es Ihnen, Ihre Scans an Ihre spezifischen Anforderungen bei Sicherheitstests anzupassen.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Lab zu den Grundlagen der Nmap Scripting Engine (NSE) erfolgreich abgeschlossen.
In diesem Lab haben Sie gelernt:
- Das Standardverzeichnis für NSE-Skripte (
/usr/share/nmap/scripts/) zu lokalisieren und mit Standard-Linux-Befehlen nach spezifischen Skripten zu suchen. - Das Flag
-sCzu verwenden, um eine Sammlung von standardmäßigen, sicheren Skripten auszuführen, die automatisch Informationen wie SSH-Host-Keys und HTTP-Webseitentitel sammeln. - Das Argument
--scriptzu verwenden, um einzelne Skripte namentlich auszuführen oder ganze Skriptkategorien zu starten, was Ihnen eine präzise Kontrolle über Ihre Netzwerk-Audit-Aufgaben gibt.
Diese grundlegenden Fähigkeiten werden es Ihnen ermöglichen, Nmap als leistungsstarkes, automatisiertes Sicherheits-Audit-Tool bei Ihren zukünftigen Netzwerkuntersuchungen und Penetrationstests einzusetzen.



