Nmap Scripting Engine (NSE)
Die Nmap Scripting Engine (NSE) ist eines der mächtigsten und flexibelsten Merkmale von Nmap. Mit ihr können Benutzer einfache Scripts schreiben und weitergeben (geschrieben in der Programmiersprache Lua ), um eine breite Palette von Netzwerkaufgaben zu automatisieren. Diese Scripts werden dann parallel mit der Geschwindigkeit und Effizienz abgearbeitet, die Sie von Nmap erwarten. Als Benutzer können Sie auf eine wachsende und vielfältige Menge von Scripts vertrauen, die mit Nmap veröffentlicht werden, oder eigene Scripts für eigene Bedürfnisse schreiben.
Zu den Aufgaben, die wir bei der Konzeption dieses Systems anvisierten, gehören die Netzwerkerkennung, eine ausgefeiltere Versionserkennung sowie eine Verwundbarkeitserkennung. NSE kann aber sogar bei der Ausbeutung von Schwachstellen benutzt werden.
Um diese verschiedenen Anwendungen widerzuspiegeln und um die Auswahl
des richtigen Scripts zu vereinfachen, verfügen alle Scripts über ein
Kategorie-Feld.
Im Moment sind folgende Kategorien definiert:
safe
, intrusive
,
malware
, version
,
discovery
, vuln
,
auth
und default
.
Sie alle werden
at https://nmap.org/book/nse-usage.html#nse-categories
.
Die Nmap Scripting Engine wird detailliert
at https://nmap.org/book/nse.html
beschrieben und wird mit den
folgenden Optionen gesteuert:
-sC
Führt einen Script-Scan mit dem Standardsatz an Scripts durch. Das ist äquivalent zu
--script=default
. Manche der Scripts in dieser Kategorie werden als aufdringlich betrachtet und sollten nicht ohne Genehmigung auf einem Zielnetzwerk ausgeführt werden.--script
<script-categories>
|<directory>
|<filename>
|allFührt einen Script-Scan (wie z.B.
-sC
) durch und benutzt dabei die mit Kommata getrennte Liste von Script-Kategorien, individuellen Scripts oder Script-Verzeichnissen statt des Standardsatzes. Zuerst versucht Nmap, die Argumente als Kategorien zu interpretieren, dann (wenn das nicht gelingt) als Datei- oder Verzeichnisnamen. Ein Script oder Verzeichnis von Scripts kann als absoluter oder relativer Pfad angegeben werden. Absolute Pfade werden unverändert benutzt. Relative Pfade werden an den folgenden Orten gesucht, bis sie gefunden werden:--datadir/
;$NMAPDIR/
;~/.nmap/
(wird unter Windows nicht durchsucht);NMAPDATADIR
/ oder./
. In all diesen Verzeichnissen wird außerdem auch einscripts/
-Unterverzeichnis ausprobiert.Falls ein Verzeichnis angegeben und gefunden wird, lädt Nmap alle NSE-Scripts (alle Dateinamen, die mit
.nse
enden) aus diesem Verzeichnis. Dateinamen ohne die Endungnse
werden ignoriert. Nmap sucht keine Unterverzeichnisse rekursiv durch, um Scripts zu finden. Wenn individuelle Dateinamen angegeben werden, dann muss deren Dateierweiterung nichtnse
lauten.Nmap-Scripts werden standardmäßig in einem
scripts
-Unterverzeichnis des Nmap-Datenverzeichnisses gespeichert (seehttps://nmap.org/book/data-files.html
). Aus Effizienzgründen werden Scripts in einer Datenbank indiziert, die inscripts/script.db
. gespeichert ist und für jedes Script auflistet, in welche Kategorie bzw. Kategorien es gehört. Um alle Scripts in der Nmap-Script-Datenbank auszuführen, geben Sie das Argumentall
an.Die Scripts werden nicht in einer Sandbox ausgeführt und können Ihr System somit versehentlich oder böswillig beschädigen oder in Ihre Privatsphäre eindringen. Sie sollten Scripts von Dritten nur dann ausführen, wenn Sie deren Autoren vertrauen oder sie selbst eingehend studiert haben.
--script-args
<name1>
=<value1>
,<name2>
={<name3>
=<value3>
},<name4>
=<value4>
Hiermit können Sie Argumente für NSE-Scripts angeben. Argumente werden als
name=value
-Paare angegeben. Die Argumente werden verarbeitet und in einer Lua-Tabelle gespeichert, auf die alle Scripts Zugriff haben. Die Namen werden als Strings (die alphanumerische Werte sein müssen) inargument-table
als Schlüssel gespeichert. Die Werte sind ihrerseits entweder Strings oder Tabellen (innerhalb von ‘{
’ und ‘}
’). Sie könnten z.B. diese mit Kommmata getrennten Argumente angeben:user=bar,pass=foo,whois={whodb=nofollow+ripe}
. String-Argumente werden potenziell von mehreren Scripts benutzt, während Untertabellen normalerweise nur von einem Script benutzt werden. In Scripts, die eine Untertabelle annehmen, wird diese Untertabelle normalerweise nach dem Script benannt (in diesem Fall z.B.whois
).--script-trace
Diese Option macht das, was
--packet-trace
macht, aber eine ISO-Ebene höher. Wenn diese Option angegeben wird, wird die gesamte ein- und ausgehende Kommunikation von Scripts ausgegeben. Die angezeigte Information enthält das Kommunikationsprotokoll, Quell- und Zieladressen sowie die übertragenen Daten. Falls mehr als fünf Prozent der übertragenen Daten nicht druckbar sind, werden sie stattdessen als Hexadezimal-Auszug ausgegeben. Auch die Angabe von--packet-trace
schaltet diese Mitverfolgung von Scripts ein.--script-updatedb
Diese Option aktualisiert die Script-Datenbank in
scripts/script.db
, die von Nmap benutzt wird, um die verfügbaren Standard-Scripts und Kategorien zu bestimmen. Man muss die Datenbank nur dann aktualisieren, wenn man NSE-Scripts in das Standardverzeichnisscripts
hinzufügt oder von dort entfernt, oder wenn man die Kategorie eines Scripts ändert. Diese Option wird ohne Argumente benutzt: nmap --script-updatedb.