
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 http://nmap.org/book/nse-usage.html#nse-categories.
Die Nmap Scripting Engine wird detailliert
at http://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 ein
scripts/-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 Endung nse
werden ignoriert. Nmap sucht keine Unterverzeichnisse rekursiv durch,
um Scripts zu finden. Wenn individuelle Dateinamen angegeben werden,
dann muss deren Dateierweiterung nicht nse lauten.
Nmap-Scripts werden standardmäßig in einem
scripts-Unterverzeichnis des Nmap-Datenverzeichnisses
gespeichert
(see http://nmap.org/book/data-files.html).
Aus Effizienzgründen
werden Scripts in einer Datenbank indiziert, die in scripts/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 Argument all 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) in argument-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 Standardverzeichnis scripts hinzufügt oder
von dort entfernt, oder wenn man die Kategorie eines Scripts ändert.
Diese Option wird ohne Argumente benutzt:
nmap --script-updatedb.
|
|