Script-Scanning und gezielte Service-Analyse
In diesem Schritt werden wir die leistungsstarke Scripting Engine (NSE) von Nmap untersuchen und lernen, wie man eine gezielte Service-Analyse durchführt. NSE-Skripte erweitern die Funktionalität von Nmap, indem sie detailliertere Scans für bestimmte Dienste und Schwachstellen ermöglichen.
Einführung in die Nmap Scripting Engine (NSE)
Die Nmap Scripting Engine ermöglicht es Benutzern, Skripte zu schreiben und auszutauschen, um eine Vielzahl von Netzwerkaufgaben zu automatisieren. Nmap wird mit Hunderten von vorgefertigten Skripten geliefert, die in verschiedene Gruppen eingeteilt sind:
auth: Authentifizierungsbezogene Skripte
default: Skripte, die standardmäßig mit -sC ausgeführt werden
discovery: Host- und Service-Discovery
exploit: Versuche, Schwachstellen auszunutzen
malware: Malware und Backdoors erkennen
safe: Sichere, nicht-intrusive Skripte
vuln: Skripte zur Erkennung von Schwachstellen
Ausführen von Standard-Skripten (-sC)
Das Flag -sC führt den Standardsatz von Skripten aus, die im Allgemeinen sicher sind und nützliche Informationen liefern:
nmap -sC localhost
Ausgabe:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
| 256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_ 256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp open http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp open ipp
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open mysql
|_mysql-info: ERROR: Script execution failed (use -d to debug)
Nmap done: 1 IP address (1 host up) scanned in 3.42 seconds
Beachten Sie, wie die Skripte zusätzliche Informationen über jeden Dienst bereitgestellt haben, wie z. B. SSH-Hostschlüssel und HTTP-Seitentitel.
Ausführen bestimmter Skripte
Sie können bestimmte Skripte mit dem Flag --script ausführen, gefolgt vom Skriptnamen oder der Kategorie:
nmap --script=http-title localhost
Dies führt nur das Skript http-title aus, das den Titel von HTTP-Seiten abruft:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp open ipp
|_http-title: Home - CUPS 2.3.1
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 0.68 seconds
Ausführen von Skripten nach Kategorie
Sie können alle Skripte in einer bestimmten Kategorie ausführen:
nmap --script=discovery localhost
Dies führt alle Discovery-Skripte aus, die eine Fülle von Informationen über Netzwerkdienste liefern können (Ausgabe für die Kürze gekürzt):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
| 256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_ 256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp open http
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
| http-methods:
|_ Supported Methods: GET POST OPTIONS HEAD
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp open ipp
| cups-info:
| CUPS Server:
| Server: CUPS/2.3 IPP/2.1
|_ Authentication-Method: Basic
| http-methods:
|_ Supported Methods: GET HEAD OPTIONS POST
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open mysql
| mysql-info:
| Protocol: 10
| Version: 8.0.30-0ubuntu0.20.04.2
| Thread ID: 15
| Capabilities flags: 65535
| Some Capabilities: ConnectWithDatabase, SupportsLoadDataLocal, SupportsTransactions, DontAllowDatabaseTableColumn, Support41Auth, InteractiveClient, Speaks41ProtocolOld, FoundRows, IgnoreSigpipes, ODBCClient, SwitchToSSLAfterHandshake, IgnoreSpaceBeforeParenthesis, LongColumnFlag, Speaks41ProtocolNew, SupportsMultipleStatments, LongPassword, SupportsCompression, SupportsMultipleResults, SupportsAuthPlugins
| Status: Autocommit
| Salt: \x7FeL)\x0C\x5C#S\x06N%\x1E\x7EYaC
|_ Auth Plugin Name: caching_sha2_password
Nmap done: 1 IP address (1 host up) scanned in 5.28 seconds
Kombinieren von Script-Scanning mit Service-Erkennung
Für die umfassendsten Ergebnisse kombinieren Sie Script-Scanning mit Service-Erkennung:
nmap -sV -sC localhost
Ausgabe:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
| 256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_ 256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp open ipp CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open mysql MySQL 8.0.30-0ubuntu0.20.04.2
|_mysql-info: ERROR: Script execution failed (use -d to debug)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.03 seconds
Gezielte Service-Analyse
Konzentrieren wir uns auf die detailliertere Analyse bestimmter Dienste.
Analyse von HTTP-Diensten
Um HTTP-Dienste detailliert zu analysieren, können wir die http-*-Skripte verwenden:
nmap --script="http-*" -p 80 localhost
Dies führt alle HTTP-bezogenen Skripte gegen Port 80 aus:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
PORT STATE SERVICE
80/tcp open http
|_http-chrono: Request times for /; avg: 32.68ms; min: 32.68ms; max: 32.68ms
|_http-comments-displayer: Couldn't find any comments.
|_http-date: Thu, 14 Sep 2023 17:30:24 GMT; +6s from local time.
|_http-devframework: Couldn't determine the underlying framework or CMS. Try increasing 'httpspider.maxpagecount' value to spider more pages.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
|_http-feed: Couldn't find any feeds.
|_http-fetch: Please enter the complete path of the directory to save data in.
|_http-generator: Couldn't find any generator in the HTML headers and body
| http-methods:
|_ Supported Methods: GET POST OPTIONS HEAD
|_http-mobileversion-checker: No mobile version detected.
|_http-referer-checker: Couldn't find any cross-domain scripts.
|_http-security-headers:
| http-server-header:
| Apache/2.4.41
|_ Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-traceroute: ERROR: Script execution failed (use -d to debug)
|_http-useragent-tester:
|_http-xssed: No previously reported XSS vuln.
Nmap done: 1 IP address (1 host up) scanned in 2.31 seconds
Analyse von SSH-Diensten
In ähnlicher Weise können wir SSH-Dienste analysieren:
nmap --script="ssh-*" -p 22 localhost
Ausgabe:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
| 256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_ 256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
|_ssh-run: ERROR: Script execution failed (use -d to debug)
Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds
Schwachstellen-Scanning
Nmap enthält Skripte, die potenzielle Schwachstellen erkennen können. Die Verwendung der Kategorie vuln kann helfen, Sicherheitsprobleme zu identifizieren:
nmap --script=vuln localhost
Dies kann einige Zeit dauern, da verschiedene Schwachstellenprüfungen durchgeführt werden. Die Ausgabe könnte so aussehen:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-slowloris-check:
| VULNERABLE:
| Slowloris DOS attack
| State: LIKELY VULNERABLE
| IDs: CVE:CVE-2007-6750
| Slowloris tries to keep many connections to the target web server open and hold
| them open as long as possible. It accomplishes this by opening connections to
| the target web server and sending a partial request. By doing so, it starves
| the http server's resources causing Denial Of Service.
|
| Disclosure date: 2009-09-17
| References:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
|_ http://ha.ckers.org/slowloris/
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
631/tcp open ipp
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 87.28 seconds
In diesem Fall hat Nmap festgestellt, dass der Apache-Webserver möglicherweise anfällig für einen Slowloris-DoS-Angriff ist. Diese Informationen können für die Sicherung Ihrer Systeme wertvoll sein.
Erstellen eines umfassenden Scan-Berichts
Kombinieren wir nun alles, was wir gelernt haben, um einen umfassenden Sicherheitsbericht zu erstellen:
sudo nmap -sS -sV -O -sC --script=vuln -T4 -oA comprehensive_security_report localhost
Dieser Befehl:
- Verwendet SYN Stealth Scan (-sS)
- Erkennt Service-Versionen (-sV)
- Versucht OS Detection (-O)
- Führt Standard-Skripte aus (-sC)
- Führt Skripte zur Schwachstellenerkennung aus (--script=vuln)
- Verwendet aggressives Timing (-T4)
- Speichert Ergebnisse in allen Formaten (-oA)
Die Ausgabe ist umfassend und kann einige Zeit in Anspruch nehmen. Nach Abschluss erhalten Sie einen detaillierten Sicherheitsbericht in verschiedenen Formaten (normal, XML und grepable), auf den Sie sich für die Sicherheitsanalyse beziehen können.
In diesem Schritt haben Sie gelernt, wie Sie die Scripting Engine von Nmap verwenden, um detaillierte Informationen über Dienste zu sammeln und potenzielle Schwachstellen zu erkennen. Diese erweiterten Techniken sind für umfassende Netzwerksicherheitsbewertungen unerlässlich.