Nmap eigenes Script: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=Grundsätzliches=
+
*[[Nmap eigenes Script Erläuterung]]
Nmap wird mit Hunderten von Skripten geliefert. Viele dieser Skripte werden tatsächlich ausgeführt, wenn Sie Nmap mit dem häufig verwendeten Flag -sC ausführen. Diese Skripte führen beispielsweise grundlegende HTTP-Aufzählungen durch, versuchen, eine Verbindung zu SMB-Freigaben herzustellen und diese aufzulisten, greifen auf Dienstbanner zu usw. Das Schreiben Ihrer eigenen NSE-Skripte kann jedoch äußerst nützlich sein. Hier ist zum Beispiel ein NSE-Skript, das Anwendungen in Ihrem Netzwerk entdeckt, die anfällig für den kürzlich offenbarten Exploit gegen die beliebte Log4J-Bibliothek sind, die immer noch in freier Wildbahn ausgenutzt wird. Lassen Sie uns ein wenig über die Struktur eines NSE-Skripts sprechen.
+
*[[Nmap eigenes Script Beispiele]]
=Aufbau eines NSE-Skripts=
 
Die Struktur eines NSE-Skripts ist einfach. Es gibt fünf (5) Funktionen, nach denen die Nmap-Skript-Engine in einem NSE-Skript sucht, um sie auszuführen:
 
 
 
==prerule()==
 
wird einmal ausgeführt, bevor Hosts gescannt werden
 
==hostrule(host)==
 
wird ausgeführt, nachdem Hosts gescannt wurden
 
==portrule(host, port)==
 
wird ausgeführt, nachdem Hosts gescannt wurden
 
==postrule()==wird ausgeführt, nachdem alle Hosts gescannt wurden; Wird normalerweise zum Berichten/Parsen von Daten verwendet, die während des Scannens angesammelt wurden
 
==action(host, port)==
 
wird ausgeführt, wenn eine der Triggerfunktionen (oben aufgeführt) ausgelöst wird; entspricht der Hauptfunktion eines normalen Programms, das die gesamte Logik des Skripts enthält.
 
 
 
Ein NSE-Skript muss eine der oben definierten ausgelösten Funktionen enthalten, die bestimmt, ob die im Hauptteil der Aktionsfunktion angegebenen Anweisungen ausgeführt werden. Hier ist eine Vorlage, die alle Mindestanforderungen zum Schreiben eines NSE-Skripts enthält:
 
=NSE-Skriptvorlage=
 
Wie Sie sehen können, habe ich einige globale Variablen und einige Funktionen definiert und auch einige Kommentare eingefügt, die Sie normalerweise auch in einem NSE-Skript finden. Gehen wir einige der Komponenten durch, aus denen dieses Skript besteht.
 
=Kommentare=
 
Es gibt einige Standardkommentare, die in einem NSE-Skript zu finden sind. Diese Kommentare werden normalerweise oben im Skript definiert und enthalten drei Anweisungen:
 
==@usage==
 
was eine beispielhafte Verwendung des Skripts mit dem Nmap-CLI-Tool demonstriert
 
==@output==
 
was dem Benutzer eine schnelle Beispielausgabe des Skripts liefert
 
==@args==
 
informiert den Benutzer über die Argumente, die an das Skript übergeben werden können, um das Standardverhalten des Skripts zu ändern
 
 
 
=Globale NSE-Variablen=
 
So wie es Standardkommentare für NSE-Skripte gibt, gibt es auch eine Reihe globaler Variablen, die für jedes von Ihnen geschriebene NSE-Skript definiert werden sollten.
 
 
 
Die '''description''' Variable ist ein String (in Lua werden mehrzeilige Strings in '''[[]]''' eckigen Klammern definiert), der dem Benutzer eine detaillierte Beschreibung dessen liefert, was das Skript macht; Die '''author''' ariable ist eine Zeichenfolge oder ein Array, das den Autor des Skripts angibt. die '''licence''' Variable stellt die Lizenz bereit, mit der das Skript vertrieben wird; und die '''categorie''' Variable ist ein Array, das die Nmap-Kategorien definiert, zu denen das Skript gehört.
 
 
 
=Beschreibungen=
 
Beschreibung = [[
 
Dies ist die Beschreibung für dieses NSE-Skript.
 
]]
 
author = "John Wick"
 
license = "Gleich wie Nmap – siehe http://nmap.org/book/man-legal.html"
 
Kategorien = {"sicher", "Entdeckung"}
 
=Trigger- und Aktionsfunktionen=
 
Wie bereits erwähnt, sucht die Nmap Scripting Engine nach fünf Funktionen im Hauptteil eines NSE-Skripts. In der oben bereitgestellten Vorlage habe ich die Funktionen hostrule, portrule und action verwendet, um das Verhalten des NSE-Skripts zu definieren. Alle Triggerfunktionen, prerule, hostrule, portrule oder postrule , geben einen booleschen Wert zurück – wenn einer der von diesen Funktionen zurückgegebenen Werte falsch ist, wird der in der Aktionsfunktion definierte Code abhängig von der Phase des Scans nicht ausgeführt.
 
 
 
=Ein Beispiel-NSE-Skript=
 
Das folgende NSE-Skript ist ein einfaches Skript, das prüft, ob die Ziel-IP-Adresse privat ist, prüft, ob die Ports 80/tcp oder 443/tcp geöffnet sind oder ob ein Port einen Dienst ausführt, der über HTTP oder HTTPS läuft – sofern die Bedingungen erfüllt sind true , druckt der Code in der Aktionsfunktion den vom Server zurückgegebenen HTTP-Server-Header. **HINWEIS**: Ich habe keine Kommentare eingefügt, da dieses Skript zu Demonstrationszwecken dient, Ihre Nicht-Demo-Skripte sollten jedoch Kommentare enthalten!
 
 
 
 
 
http-server-header.nse
 
Sehen Sie sich den Quellcode auf meinem GitHub an. Speichern Sie das Skript als http-server-header.nse und führen Sie das Skript mit dem folgenden Befehl aus:
 
 
 
nmap -Pn --script ./http-server-header.nse -d -p 80 scanme.nmap.org
 
Die Ausgabe sollte in etwa so aussehen:
 
 
 
 
 
Aus dieser Ausgabe können wir sehen, dass Nmap das Skript erfolgreich geladen und ausgeführt hat und den Server-Header des HTTP-Servers wie erwartet anzeigt.
 
 
 
EOF
 
Wenn Sie diesen Artikel gerne gelesen haben, folgen Sie mir bitte auf Medium für weitere Artikel zu Cybersicherheit/Technologie und auf GitHub für weitere Programmierprojekte zur Cybersicherheit. Vielen Dank für Ihre Zeit!
 
=Quelle=
 
*https://medium.com/geekculture/writing-nmap-scripts-49aaa8b153e0
 

Aktuelle Version vom 10. August 2025, 12:11 Uhr