Nmap Scripting Engine nutzen

NmapNmapBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Labyrinth lernen Sie, die Nmap Scripting Engine zu nutzen. Das Labyrinth umfasst das Ausführen von Standardskripts, das Verwenden von spezifischen Skripten, das Hinzufügen von Argumenten zu Skripten, das Aktualisieren von Skripten, das Testen von mehreren Skripten und das Anzeigen der Skriptausgabe im Xfce-Terminal. Sie führen Befehle wie nmap -sC, nmap --script und nmap --script-updatedb gegen Ziel-IP-Adressen aus, um verschiedene Scans durchzuführen und Informationen zu sammeln.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/scripting_basics("Scripting Engine Basics") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") subgraph Lab Skills nmap/output_formats -.-> lab-530187{{"Nmap Scripting Engine nutzen"}} nmap/port_scanning -.-> lab-530187{{"Nmap Scripting Engine nutzen"}} nmap/service_detection -.-> lab-530187{{"Nmap Scripting Engine nutzen"}} nmap/scripting_basics -.-> lab-530187{{"Nmap Scripting Engine nutzen"}} nmap/script_management -.-> lab-530187{{"Nmap Scripting Engine nutzen"}} end

Führen Sie standardmäßige Skripte mit nmap -sC 192.168.1.1 aus

In diesem Schritt werden wir untersuchen, wie man Nmap verwendet, um seine standardmäßige Skriptmenge gegen einen Zielhost auszuführen. Nmap-Skripte sind leistungsstarke Werkzeuge, mit denen eine Vielzahl von Aufgaben automatisiert werden können, von der Identifizierung von Schwachstellen bis hin zur Erfassung von Informationen über ein Zielsystem. Die Option -sC veranlasst Nmap, die Kategorie "Standard" von Skripten zu verwenden. Diese Kategorie umfasst Skripte, die als sicher und nützlich für das allgemeine Scannen angesehen werden.

Bevor wir beginnen, stellen wir sicher, dass wir im richtigen Verzeichnis sind.

cd ~/project

Lassen Sie uns nun Nmap mit der Option -sC gegen die Ziel-IP-Adresse 192.168.1.1 ausführen. Diese IP-Adresse ist ein Platzhalter. In einem realen Szenario würden Sie sie durch die tatsächliche IP-Adresse des Ziels ersetzen, das Sie scannen möchten. Für diese Lab-Umgebung nehmen wir an, dass 192.168.1.1 ein gültiges Ziel ist.

sudo nmap -sC 192.168.1.1

Dieser Befehl führt einen standardmäßigen Nmap-Scan durch, einschließlich eines Portscans und einer Diensterkennung, und führt dann die Standardskripte gegen alle offenen Ports aus. Die Ausgabe wird die Ergebnisse des Portscans, der Diensterkennung und alle von den Skripten gesammelten Informationen anzeigen.

Die Ausgabe wird ungefähr so aussehen (die genaue Ausgabe variiert je nach Zielsystem):

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu)
| ssh-hostkey:
|   2048 ... (RSA)
| ssh-rsa ...
|_ssh-algorithm: ...
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: mean: -1s, deviation: 0s, median: -1s
|_nbstat: NetBIOS name: ..., NetBIOS user: ..., NetBIOS MAC: ... (unknown)
| smb-os-discovery:
|   OS: Unix
|   ...
|_  System time: ...

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

In diesem Beispiel zeigt die Ausgabe an, dass Port 22 offen ist und SSH läuft. Das Skript ssh-hostkey hat den SSH-Hostschlüssel identifiziert, und das Skript ssh-algorithm hat die unterstützten Algorithmen identifiziert. Das Skript clock-skew hat eine leichte Uhrzeitabweichung auf dem Zielsystem festgestellt. Die Skripte nbstat und smb-os-discovery haben jeweils Informationen über die NetBIOS- und SMB-Dienste gesammelt.

In diesem Schritt werden wir lernen, wie man ein spezielles Nmap-Skript verwendet. Nmap verfügt über eine umfangreiche Skriptbibliothek, die zur Durchführung verschiedener Aufgaben genutzt werden kann. Wir werden das Skript banner verwenden, das versucht, die Bannerinformationen eines Diensts auf einem Zielhost abzurufen. Banner enthalten oft Informationen über die Softwareversion und andere Details, die für die Aufklärung nützlich sein können.

Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project befinden:

cd ~/project

Lassen Sie uns nun den Befehl nmap mit der Option --script verwenden, um das Skript banner anzugeben und die IP-Adresse der localhost, 127.0.0.1, als Ziel zu setzen.

sudo nmap --script banner 127.0.0.1

Dieser Befehl veranlasst Nmap, das Skript banner gegen alle offenen Ports auf 127.0.0.1 auszuführen. Die Ausgabe wird die Ergebnisse des Skripts anzeigen, einschließlich aller abgerufen Banner.

Die Ausgabe könnte ähnlich wie folgt aussehen (die genaue Ausgabe hängt von den auf Ihrer localhost laufenden Diensten ab):

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
631/tcp  open  ipp
5900/tcp open  vnc
8000/tcp open  http
8080/tcp open  http

Host script results:
|_banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_banner: 111/tcp:  rpcbind version 2-4
|_banner: 631/tcp: CUPS v2.4.1
|_banner: 5900/tcp: RFB 003.008
|_banner: 8000/tcp: Werkzeug/2.0.1 Python/3.9.7
|_banner: 8080/tcp: Jetty(9.4.44.v20210927)

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

In diesem Beispiel hat das Skript banner erfolgreich die Banner von mehreren Diensten auf 127.0.0.1 abgerufen, einschließlich von SSH-, rpcbind-, CUPS-, VNC- und HTTP-Servern. Die Banner liefern Informationen über die verwendeten Softwareversionen.

Fügen Sie Argumente hinzu mit nmap --script http-title --script-args http.useragent=Test 192.168.1.1

In diesem Schritt werden wir lernen, wie man Argumente an Nmap-Skripte übergeben. Einige Skripte erfordern oder erlauben die Anpassung von Argumenten. Wir werden das Skript http-title verwenden und seinen Argument http.useragent ändern. Das Skript http-title holt den Titel von einem HTTP-Server. Das Argument http.useragent gibt die User-Agent-Zeichenfolge an, die das Skript bei der Erstellung von HTTP-Anfragen verwenden wird.

Lassen Sie uns zunächst in unserem Arbeitsverzeichnis navigieren:

cd ~/project

Lassen Sie uns nun Nmap mit der Option --script ausführen, um das Skript http-title anzugeben, und die Option --script-args verwenden, um das Argument http.useragent auf Test zu setzen. Wir verwenden die Ziel-IP-Adresse 192.168.1.1. Denken Sie daran, dass Sie dies in einem realen Szenario durch die tatsächliche IP-Adresse eines Ziels ersetzen müssen, das einen HTTP-Server ausführt.

sudo nmap --script http-title --script-args http.useragent=Test 192.168.1.1

Dieser Befehl veranlasst Nmap, das Skript http-title gegen alle offenen HTTP-Ports auf 192.168.1.1 auszuführen, wobei "Test" als User-Agent-Zeichenfolge verwendet wird.

Die Ausgabe könnte ähnlich wie folgt aussehen (die genaue Ausgabe hängt von dem Zielsystem und seiner HTTP-Server-Konfiguration ab):

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE VERSION
80/tcp open  http    nginx 1.18.0
|_http-title: Test

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

In diesem Beispiel hat das Skript http-title erfolgreich den Titel vom auf Port 80 von 192.168.1.1 laufenden HTTP-Server abgerufen. Das Argument http.useragent wurde verwendet, um die User-Agent-Zeichenfolge in der HTTP-Anfrage auf "Test" zu setzen. Der Server kann diese User-Agent-Zeichenfolge protokollieren, was für die Identifizierung von Scans nützlich sein kann. Wenn das Ziel Port 80 nicht offen hat, sehen Sie eine andere Ausgabe.

Aktualisieren Sie die Skripte mit nmap --script-updatedb

In diesem Schritt werden wir die Nmap-Skriptdatenbank aktualisieren. Der Nmap Scripting Engine (NSE) basiert auf einer Datenbank von Skripten. Im Laufe der Zeit werden neue Skripte hinzugefügt und vorhandene Skripte aktualisiert. Um sicherzustellen, dass Sie die neuesten Skripte haben, sollten Sie die Skriptdatenbank regelmäßig aktualisieren.

Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project befinden:

cd ~/project

Lassen Sie uns nun den Befehl nmap mit der Option --script-updatedb verwenden, um die Skriptdatenbank zu aktualisieren.

sudo nmap --script-updatedb

Dieser Befehl wird die neuesten Skriptinformationen herunterladen und die Datenbank aktualisieren. Die Ausgabe wird den Fortschritt der Aktualisierung anzeigen.

Die Ausgabe könnte ähnlich wie folgt aussehen:

Starting Nmap 7.80 ( https://nmap.org ) at ...
NSE: Updating rule database.
NSE: Using nmap.org/svn/nse_svn to download the latest scripts.
Downloaded nmap-mac-prefixes.lua
Downloaded nselib/data/nmap-services.
Downloaded nselib/data/service-ports.
Downloaded scripts/script.db
NSE: Script database updated.
Nmap done: 0 IP addresses (0 hosts up) scanned in ... seconds

Diese Ausgabe zeigt an, dass die Skriptdatenbank erfolgreich aktualisiert wurde. Jetzt haben Sie die neuesten Nmap-Skripte zur Verfügung.

Testen Sie mehrere Skripte mit nmap --script banner,http-title 127.0.0.1

In diesem Schritt werden wir mehrere Nmap-Skripte gleichzeitig ausführen. Dadurch können Sie in einem einzelnen Scan mehr Informationen über ein Ziel sammeln. Wir werden die Skripte banner und http-title gegen das Ziel 127.0.0.1 verwenden.

Lassen Sie uns zunächst in unserem Arbeitsverzeichnis navigieren:

cd ~/project

Lassen Sie uns nun Nmap mit der Option --script ausführen, wobei wir sowohl das Skript banner als auch das Skript http-title angeben, getrennt durch ein Komma. Wir verwenden die Ziel-IP-Adresse 127.0.0.1, die auf den lokalen Computer verweist.

sudo nmap --script banner,http-title 127.0.0.1

Dieser Befehl veranlasst Nmap, sowohl das Skript banner als auch das Skript http-title gegen alle offenen Ports auf 127.0.0.1 auszuführen. Das Skript banner versucht, Service-Banner abzurufen, während das Skript http-title den Titel von allen HTTP-Servern abruft.

Die Ausgabe könnte ähnlich wie folgt aussehen (die genaue Ausgabe hängt von den auf 127.0.0.1 laufenden Diensten ab):

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000018s latency).
Loopback interface ignored
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu)
| banner: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.1
|_ssh-hostkey:
80/tcp open  http    nginx 1.18.0
|_http-title: Welcome to nginx!

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

In diesem Beispiel hat das Skript banner das SSH-Banner von Port 22 abgerufen, und das Skript http-title hat den Titel vom auf Port 80 laufenden HTTP-Server abgerufen. Wenn das Ziel diese Ports nicht offen hat, sehen Sie eine andere Ausgabe.

Anzeige des Skriptausgangs im Xfce-Terminal

In diesem Schritt werden wir uns auf die Anzeige des Ausgangs von Nmap-Skripten im Xfce-Terminal konzentrieren. Der Xfce-Terminal ist der Standard-Terminalemulator in der LabEx-VM-Umgebung. Sie haben ihn in den vorherigen Schritten bereits verwendet. Dieser Schritt geht mehr darum, zu verstehen, wie man das Ausgabe interpretieren kann, und weniger darum, einen neuen Befehl auszuführen.

Die Ausgabe von Nmap-Skripten wird direkt im Terminal angezeigt, nachdem der Scan abgeschlossen ist. Das Format der Ausgabe hängt vom Skript selbst ab. Einige Skripte liefern einfache Textausgaben, während andere möglicherweise strukturiertere Daten liefern.

Lassen Sie uns den Befehl aus dem vorherigen Schritt noch einmal betrachten:

sudo nmap --script banner,http-title 127.0.0.1

Wenn Sie diesen Befehl ausführen, wird die Ausgabe direkt in den Xfce-Terminal gedruckt. Sie können durch die Terminalausgabe scrollen, um die Ergebnisse der Skripte banner und http-title zu überprüfen.

Zum Beispiel kann die Ausgabe enthalten:

  • Banner-Informationen: Das Skript banner versucht, Service-Banner von offenen Ports abzurufen. Dies kann die auf einem bestimmten Port laufende Softwareversion aufdecken.
  • HTTP-Titel: Das Skript http-title ruft den Titel der von einem HTTP-Server bereitgestellten Webseite ab.

Der Schlüssel ist es, die Ausgabe sorgfältig auf jede nützliche Information zu untersuchen. Der Xfce-Terminal bietet eine einfache und direkte Möglichkeit, diese Informationen anzuzeigen. Sie können auch standardmäßige Linux-Tools wie grep verwenden, um die Ausgabe zu filtern, wenn erforderlich. Beispielsweise können Sie die Ausgabe des nmap-Befehls an grep weiterleiten, um nur die Zeilen zu finden, die "http-title" enthalten:

sudo nmap --script banner,http-title 127.0.0.1 | grep "http-title"

Dieser Befehl führt denselben Nmap-Scan wie zuvor aus, zeigt jedoch nur die Zeilen in der Ausgabe an, die den String "http-title" enthalten. Dies kann hilfreich sein, um sich auf bestimmte Teile der Ausgabe zu konzentrieren.

Dieser Schritt geht hauptsächlich um Beobachtung und Verständnis. Es gibt keinen einzigen Befehl, der ausgeführt werden muss, sondern eher ein Fokus auf die Interpretation der Ergebnisse, die Sie in den vorherigen Schritten bereits im Xfce-Terminalumfeld erzeugt haben.

Zusammenfassung

In diesem Lab haben die Teilnehmer gelernt, die Nmap Scripting Engine über verschiedene Befehle zu nutzen. Sie haben begonnen, Standardskripte mit nmap -sC gegen eine Ziel-IP auszuführen, was sichere und nützliche Skripte für das allgemeine Scannen umfasst. Sie haben auch gelernt, ein bestimmtes Skript mit nmap --script zu verwenden, Argumente zu Skripten mit --script-args hinzuzufügen, Skripte mit --script-updatedb zu aktualisieren und mehrere Skripte gleichzeitig zu testen. Schließlich haben sie die Skriptausgabe im Xfce-Terminal angesehen.