Nmap: Scripting Engine (NSE)

Die Nmap Scripting Engine (NSE) ist eine erweiterte Funktion von Nmap, einem weit verbreiteten Netzwerk-Scanning-Tool. Sie ermöglicht es Benutzern, benutzerdefinierte Netzwerkinteraktionen mit Hilfe von Skripten zu automatisieren, die in der Skriptsprache Lua geschrieben sind. Diese Skripte ermöglichen ein hohes Maß an Anpassung und Flexibilität, um den spezifischen Anforderungen und Zielen der Benutzer gerecht zu werden. Nmap selbst wird mit einer Vielzahl vorinstallierter Skripte ausgeliefert, die für eine Reihe von Netzwerkaufgaben nützlich sind, darunter das Aufspüren von Sicherheitslücken und erweiterte Netzwerkerkennung.

Neben der Flexibilität, die benutzerdefinierte Skripte bieten, profitiert die Nmap-Skripting-Engine von einer aktiven Community, die eigene Skripte entwickelt und mit anderen teilt. Dieser Austausch fördert die Weiterentwicklung und Verbesserung der verfügbaren Skripte. NSE wird in verschiedenen Bereichen wie Netzwerksicherheit, Systemadministration, Penetrationstests und Cyber-Forensik eingesetzt. Es vereinfacht komplexe Netzwerkaufgaben und bietet detaillierte Einblicke in Netzwerkkomponenten und deren Sicherheitsstatus, was es zu einem wertvollen Werkzeug für IT-Fachleute in vielen verschiedenen Bereichen macht.

Eine ausgezeichnete Community-Ressource für Nmap Scripting Engine (NSE)-Skripte ist das Nmap NSEDoc Reference Portal auf der Nmap-Website. Dieses Portal bietet eine umfassende Dokumentation und eine Liste von über 600 NSE-Skripten sowie Informationen über die verschiedenen NSE-Bibliotheken.

Speicherort

Die NSE-Skripte sind in der Regel an folgenden Orten zu finden:

  • Linux: /usr/share/nmap/scripts/
  • Windows: C:\Program Files (x86)\Nmap\scripts\

Hilfe zu Skripte

Um sich alle verfügbaren Nmap Scripting Engine (NSE) Skripte mit einer kurzen Beschreibung anzeigen zu lassen, können Sie den folgenden Befehl verwenden:

┌──(pronto㉿kali)-[~]
└─$ nmap --script-help '*'

Syntax

Die Syntax zum Ausführen von Skripte ist folgende:

nmap --script [skriptname] [target]

Kategorien

In der Nmap Scripting Engine (NSE) beziehen sich Kategorien nicht auf einzelne Skripte, sondern sind eine Art, die vorhandenen Skripte zu organisieren und zu klassifizieren. Jedes NSE-Skript kann einer oder mehreren Kategorien zugeordnet werden, die seine Funktionalität und seinen beabsichtigten Einsatzbereich beschreiben. Diese Kategorisierung hilft dem Benutzer, geeignete Skripte für seine spezifischen Bedürfnisse zu identifizieren. Im Folgenden sind einige der gebräuchlichsten Kategorien und ihre allgemeine Bedeutung aufgeführt (Eine ausführlichere Liste finden Sie hier):

  • Safe: Skripte in dieser Kategorie sollen keine Auswirkungen auf das Ziel haben. Sie führen in der Regel harmlose Operationen aus, die das Netzwerk oder den Host nicht stören.
  • Intrusive: Diese Skripte können potenziell störend oder aggressiv sein. Sie können Dienste auf dem Ziel beeinträchtigen oder als bösartig wahrgenommen werden. Sie sollten mit Vorsicht eingesetzt werden und idealerweise nur in Netzwerken, in denen Sie die Erlaubnis zum Scannen haben.
  • Auth: Skripte dieser Kategorie beschäftigen sich mit Authentifizierungsmechanismen. Sie können verwendet werden, um Authentifizierungsverfahren zu testen oder Schwachstellen in solchen Systemen aufzudecken.
  • Exploit: In diese Kategorie fallen Skripte, die aktiv versuchen, bekannte Schwachstellen auszunutzen. Sie werden in der Regel für Penetrationstests und Sicherheitsüberprüfungen verwendet.
  • Vuln: Skripte dieser Kategorie zielen darauf ab, bekannte Schwachstellen zu identifizieren. Sie dienen der Sicherheitsbewertung und dem Aufspüren potenzieller Risiken.

Diese Kategorien helfen bei der Strukturierung des breiten Spektrums von NSE-Skripten und erleichtern die Auswahl von Skripten entsprechend der Art des gewünschten Scans und der Risikobereitschaft. Es ist wichtig, die Kategorie eines Skripts und seine möglichen Auswirkungen auf das Zielnetzwerk zu verstehen, bevor man es einsetzt.

Die Verwendung von Kategorien in der Nmap Scripting Engine (NSE) ermöglicht die Auswahl und Ausführung von Skripten auf der Grundlage ihres Zwecks und ihrer Wirkung. Nachfolgend ein Beispiel für die Verwendung verschiedener Kategorien von NSE-Skripten:

Angenommen, Sie möchten eine umfassende Sicherheitsüberprüfung eines Zielsystems durchführen. Dazu könnten Sie verschiedene Kategorien von NSE-Skripten verwenden:

Safe: Beginnen Sie mit Skripten aus der Kategorie "safe", um grundlegende Informationen über das Netzwerk zu sammeln, ohne das Ziel zu stören. Der Befehl könnte so aussehen:

┌──(pronto㉿kali)-[~]
└─$ nmap --script "safe" <target>

Vuln: Anschließend könnten Sie Skripte aus der Kategorie "vuln" verwenden, um bekannte Schwachstellen zu identifizieren. Dies könnte wichtige Informationen über potenzielle Sicherheitsrisiken liefern:

┌──(pronto㉿kali)-[~]
└─$ nmap --script "vuln" <target>

Auth: Wenn Sie speziell die Authentifizierungssysteme des Ziels überprüfen möchten, können Sie Skripte aus der Kategorie "auth" verwenden:

┌──(pronto㉿kali)-[~]
└─$ nmap --script "auth" <target>

Wenn Sie beispielsweise in Nmap den Befehl nmap --script "safe" <target> ausführen, startet Nmap alle Skripte, die der Kategorie "safe" zugeordnet sind. Jedes NSE-Skript kann zu einer oder mehreren Kategorien gehören, und diese Kategorisierung hilft, die Art der durchgeführten Tests zu bestimmen.

Wenn Sie also den Befehl mit der Kategorie "safe" verwenden, führt Nmap eine Reihe von Skripten aus, die in dieser Kategorie enthalten sind. Es werden eine Reihe von Prüfungen und Informationen abgerufen, die für das Zielnetzwerk als sicher gelten. Dies ist besonders nützlich für erste Analysen oder wenn Sie sicherstellen wollen, dass Ihre Scans keine unerwünschten Auswirkungen auf das Zielsystem haben.

Sie können den Befehl --script-help in Kombination mit dem Namen der Kategorie verwenden, um eine Liste der Skripte in dieser Kategorie zu erhalten. Zum Beispiel:

┌──(pronto㉿kali)-[~]
└─$ nmap --script-help "safe"

Sie sollten sich die Zeit nehmen, die Liste der Skripte zu analysieren, die in einer bestimmten Kategorie ausgeführt werden, um zu verstehen, welchen Einfluss sie auf das Zielsystem haben und welche Spuren sie dort hinterlassen können. Andernfalls werden Sie versehentlich wie ein Elefant durch einen Porzellanladen poltern.

Updates

Skript-Datenbank

Die regelmäßige Aktualisierung der Skriptdatenbank der Nmap Scripting Engine (NSE) ist ein wesentlicher Schritt, um die Effizienz von Nmap-Scans zu maximieren. Der Befehl nmap --script-updatedb aktualisiert die Liste der NSE-Skripte und stellt sicher, dass Sie immer die aktuellsten Werkzeuge und Funktionen für Ihre Netzwerkanalyse zur Verfügung haben. Diese Aktualisierung ist für die Aufrechterhaltung der Leistungsfähigkeit und Genauigkeit von Nmap von wesentlicher Bedeutung.

┌──(pronto㉿kali)-[~]
└─$ sudo nmap --script-updatedb                                                                                                                              
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-01-07 08:27 EST
NSE: Updating rule database.
NSE: Script Database updated successfully.

Vulnerability-Datenbanken

Darüber hinaus ist es wichtig, die Datenbanken für bekannte Sicherheitslücken (Vulnerabilities) auf dem neuesten Stand zu halten, um die Effektivität bei der Erkennung von Schwachstellen zu verbessern. Dazu können Skripte wie Vulscan oder Nmap-vulners verwendet werden, die auf umfangreichen Schwachstellendatenbanken basieren. Regelmäßige Updates dieser Datenbanken stellen sicher, dass Ihre Scans die neuesten Informationen über bekannte Schwachstellen enthalten.

Nmap-vulners

Nmap-vulners wird normalerweise bei einer Standardinstallation von Nmap mitinstalliert. Das Nmap-vulners-Skript verwendet die API von Vulners.com, um Informationen über Schwachstellen zu erhalten. Im Gegensatz zu Skripten wie Vulscan, die lokale Datenbanken verwenden und regelmäßig manuell aktualisiert werden müssen, bezieht Nmap-vulners seine Daten direkt und in Echtzeit von der Vulners-API. Es benötigt daher keinen separaten Update-Prozess. Wenn das Skript ausgeführt wird, holt es sich automatisch die neuesten Informationen über Sicherheitslücken von Vulners.com, sofern eine Internetverbindung besteht. Dadurch ist das Skript immer auf dem neuesten Stand, was die erkannten Sicherheitslücken betrifft.

Beispiele

http-title

Ein einfaches und häufig verwendetes NSE-Skript ist zum Beispiel http-title. Dieses Skript versucht, den Titel der Hauptseite eines Webservers zu ermitteln. Es ist in der Regel für jedes Ziel sinnvoll, das einen Webserver betreibt. Der Befehl zur Ausführung dieses Skripts lautet:

┌──(pronto㉿kali)-[~]
└─$ nmap --script http-title 192.168.178.67 -p80,443                                                                                                         
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-01-07 11:20 EST
Nmap scan report for 192.168.178.67
Host is up (0.00076s latency).

PORT    STATE  SERVICE
80/tcp  open   http
|_http-title: Metasploitable2 - Linux
443/tcp closed https

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

Mit dem Parameter -p80,443 schränken Sie Nmap auf diese beiden Ports ein, da dies die üblichen Standardports für Webserver sind. Sie können diesen Parameter auch weglassen, dann scannt Nmap alle Ports. Dies kann z.B. sinnvoll sein, wenn der Verdacht besteht, dass auf dem System ein Webserver auf einem Nicht-Standard-Port gehostet wird.

smb-os-discovery

Versucht, das Betriebssystem, den Computernamen, die Domäne, die Arbeitsgruppe und die aktuelle Uhrzeit über das SMB-Protokoll (Ports 445 oder 139) zu ermitteln. Dazu wird eine Sitzung mit einem anonymen Konto gestartet (oder mit einem richtigen Benutzerkonto, falls eines angegeben ist); als Antwort auf den Start einer Sitzung sendet der Server alle diese Informationen zurück:

┌──(pronto㉿kali)-[~]
└─$ nmap --script smb-os-discovery -p445 192.168.178.210
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-20 14:30 EDT
Nmap scan report for DC1.fritz.box (192.168.178.210)
Host is up (0.00092s latency).

PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-os-discovery: 
|   OS: Windows Server 2019 Standard 17763 (Windows Server 2019 Standard 6.3)
|   Computer name: DC1
|   NetBIOS computer name: DC1\x00
|   Domain name: PROSYS.intern
|   Forest name: PROSYS.intern
|   FQDN: DC1.PROSYS.intern
|_  System time: 2024-04-20T20:30:34+02:00

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

Funktioniert nur bei aktiviertem SMB1 Protokoll und deaktivierter Firewall.

Updated on 20. April 2024
Was this article helpful?

Related Articles