Nmap NSE: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Grundsätzliches= Die Nmap Scripting Engine (NSE) erweitert nmap weit über das reine Port-Scanning hinaus. Die Skripte sind in Lua geschrieben und in Kategor…“)
 
 
Zeile 83: Zeile 83:
  
 
=HTTP-Scripts=
 
=HTTP-Scripts=
Die vulnsite 10.88.215.123 hört auf Port 80
+
Die vulnsite 10.88.215.11 hört auf Port 80
 
;Titel der Seite anzeigen
 
;Titel der Seite anzeigen
*nmap 10.88.215.123 -p 80 -sV --script http-title
+
*nmap 10.88.215.11 -p 80 -sV --script http-title
 
;Verzeichnisse und Dateien finden
 
;Verzeichnisse und Dateien finden
*nmap 10.88.215.123 -p 80 --script http-enum
+
*nmap 10.88.215.11 -p 80 --script http-enum
 
;Banner abgreifen
 
;Banner abgreifen
*nmap 10.88.215.123 -p 80 -sV --script banner
+
*nmap 10.88.215.11 -p 80 -sV --script banner
  
 
=SMB-Scripts=
 
=SMB-Scripts=

Aktuelle Version vom 22. Juni 2026, 11:04 Uhr

Grundsätzliches

Die Nmap Scripting Engine (NSE) erweitert nmap weit über das reine Port-Scanning hinaus. Die Skripte sind in Lua geschrieben und in Kategorien organisiert. Gescannt wird von der kali-innen (10.0.10.101) gegen das Opfernetz 10.88.215.0/24.

NSE-Kategorien

auth
  • Ermittelt Authentifizierungsdaten für Dienste
broadcast
  • Findet Hosts per Broadcast und fügt sie dem Scan hinzu
brute
  • Brute-Force-Angriffe auf Dienste
default
  • Standardskripte, ausgeführt bei -sC
discovery
  • Enumeriert erreichbare Dienste
dos
  • Prüft auf Denial-of-Service-Schwachstellen - mit Vorsicht verwenden
exploit
  • Versucht bekannte Schwachstellen auszunutzen
intrusive
  • Kann das Zielsystem beeinträchtigen
safe
  • Nicht-invasive Informationsgewinnung
version
  • Erweitert die Service-Versionserkennung
vuln
  • Identifiziert bekannte Schwachstellen am Ziel

Scripts finden

Alle mitgelieferten Skripte liegen in einem Verzeichnis

  • ls /usr/share/nmap/scripts

Nach einem Stichwort suchen

  • ls /usr/share/nmap/scripts | grep ssh

Script-Hilfe

Zeigt Beschreibung, Aufruf und Argumente eines Skripts

  • nmap --script-help=ssh-hostkey

Aufruf-Arten

Alle Standardskripte ausführen
  • nmap 10.88.215.61 -sC
Alle Skripte einer Kategorie
  • nmap 10.88.215.61 --script vuln
Bestimmte Skripte namentlich
  • nmap 10.88.215.61 --script ssh-hostkey,ssh-auth-methods

Standardskripte (-sC)

Führt die default-Skripte gegen offene Ports aus

  • nmap 10.88.215.61 -sC
PORT    STATE SERVICE
22/tcp  open  ssh
| ssh-hostkey:
|   2048 3a:94:d8:3f:e0:a2:7a:b8:c3:94:d7:5e:00:55:0c:a7 (RSA)
80/tcp  open  http
|_http-title: Apache2 Debian Default Page
445/tcp open  microsoft-ds
| smb-security-mode:
|_  message_signing: disabled (dangerous, but default)

SSH-Scripts

Fingerprint der Hostkeys
  • nmap 10.88.215.61 -p 22 --script ssh-hostkey
Welche Authentifizierungsmethoden werden unterstützt
  • nmap 10.88.215.61 -p 22 --script ssh-auth-methods
Welche Algorithmen werden angeboten
  • nmap 10.88.215.61 -p 22 --script ssh2-enum-algos

SSL-Scripts

Der Mailserver 10.88.215.34 bietet TLS auf Port 993 (imaps)

Welches Zertifikat wird angeboten
  • nmap 10.88.215.34 -p 993 --script ssl-cert
Welche Cipher-Suites werden angeboten
  • nmap 10.88.215.34 -p 993 -sV --script ssl-enum-ciphers

SMTP-Scripts

Der Mailserver 10.88.215.34 hört auf Port 25

Welche Kommandos werden unterstützt
  • nmap 10.88.215.34 -p 25 --script smtp-commands
Ist der Server ein offenes Relay
  • nmap 10.88.215.34 -p 25 --script smtp-open-relay
Benutzer auf dem Mailsystem herausfinden
  • nmap 10.88.215.34 -p 25 --script smtp-enum-users

HTTP-Scripts

Die vulnsite 10.88.215.11 hört auf Port 80

Titel der Seite anzeigen
  • nmap 10.88.215.11 -p 80 -sV --script http-title
Verzeichnisse und Dateien finden
  • nmap 10.88.215.11 -p 80 --script http-enum
Banner abgreifen
  • nmap 10.88.215.11 -p 80 -sV --script banner

SMB-Scripts

Betriebssystem über SMB ermitteln
  • nmap 10.88.215.61 -p 445 --script smb-os-discovery
Freigaben auflisten
  • nmap 10.88.215.61 -p 445 --script smb-enum-shares

Script-Datenbank aktualisieren

Nach dem Hinzufügen eigener Skripte muss die Datenbank neu aufgebaut werden

  • nmap --script-updatedb

Eigene Scripts schreiben

Die NSE-Engine sucht in einem Skript nach festen Funktionen. Die wichtigsten sind die Trigger-Funktionen und die Action.

portrule(host, port)
  • Bestimmt, ob das Skript auf einen Port angewendet wird
hostrule(host)
  • Bestimmt, ob das Skript auf einen Host angewendet wird
action(host, port)
  • Enthält die eigentliche Logik und wird ausgeführt, wenn eine Trigger-Funktion true liefert

Hello World

Ein minimales Skript, das immer eine Nachricht ausgibt

  • vi helloworld.nse
description = [[
Simple Hello World Script.
]]
author = "Thomas Will"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {"safe"}

function hostrule()
   return true
end

function action(host, port)
    return("Hello World")
end
Aufruf
  • nmap -sn --script ./helloworld.nse 10.88.215.61
Host script results:
|_helloworld: Hello World

Echt Koelnisch Wasser

Prüft, ob Port 4711 offen ist

  • vi echtkoelnisch.nse
description = [[
Prüft, ob Port 4711 offen ist, und gibt eine Nachricht aus.
]]

author = "Thomas"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {"default", "discovery"}

portrule = function(host, port)
  return port.number == 4711 and port.protocol == "tcp"
end

action = function(host, port)
  if port.state == "open" then
    return "Port 4711 offen. Dies riecht nach Echt Koelnisch Wasser!"
  end
end
Aufruf
  • nmap --script ./echtkoelnisch.nse -p 4711 10.0.10.104
PORT     STATE SERVICE
4711/tcp open  trinity-dist
|_echtkoelnisch: Port 4711 offen. Dies riecht nach Echt Koelnisch Wasser!

Checkmk Agent unverschlüsselt

Prüft, ob ein unverschlüsselter Checkmk-Agent auf Port 6556 antwortet

  • vi checkmk-plain.nse
description = [[
Checks if an unencrypted Checkmk Agent is responding on port 6556.
If the header <<<check_mk>>> is found, it is considered a potential information disclosure vulnerability.
]]

author = "Thomas"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {"default", "discovery", "vuln"}

portrule = function(host, port)
  return port.number == 6556 and port.protocol == "tcp"
end

action = function(host, port)
  local socket = nmap.new_socket()
  socket:set_timeout(3000)
  local status, err = socket:connect(host.ip, port.number)
  if not status then
    return "Connection failed: " .. err
  end

  local data
  status, data = socket:receive_lines(1)
  socket:close()

  if status and data and data:find("<<<check_mk>>>") then
    return "Unencrypted Checkmk Agent detected - potential information disclosure!"
  end
end
Aufruf
  • nmap -sV --script ./checkmk-plain.nse -p 6556 10.0.10.104
PORT     STATE SERVICE  VERSION
6556/tcp open  check_mk check_mk extension for Nagios 2.0.0p38
|_checkmk-plain: Unencrypted Checkmk Agent detected - potential information disclosure!