Schwachstellen-Scan mit Nmap

NmapBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie die Grundlagen des Netzwerk-Scannings mit Nmap (Network Mapper), einem leistungsstarken Open-Source-Tool für die Netzwerkerkennung und Sicherheitsüberprüfung. Sie beginnen mit einfachen Port-Scans, gehen über zur Dienst- und Versionserkennung und erkunden anschließend die Nmap Scripting Engine (NSE), um Schwachstellenprüfungen durchzuführen. Abschließend erfahren Sie, wie Sie Ihre Scan-Ergebnisse analysieren und in verschiedenen Formaten für Berichte speichern. Dieses Lab bietet eine schrittweise, praktische Einführung in die Kernfunktionen von Nmap für eine effektive Netzwerksicherheitsbewertung.

Einen grundlegenden Netzwerk-Scan durchführen

In diesem Schritt machen Sie sich mit Nmap vertraut, indem Sie einen grundlegenden Scan durchführen. Ein Basis-Scan wird verwendet, um herauszufinden, welche Ports auf einem Zielsystem geöffnet sind. Ein offener Port deutet darauf hin, dass ein Dienst (wie ein Webserver oder SSH) ausgeführt wird und auf Verbindungen wartet.

Die Lab-Umgebung wurde mit mehreren Diensten vorkonfiguriert, die auf localhost (Ihrer eigenen virtuellen Maschine) laufen, damit Sie damit üben können. Das Tool nmap ist bereits installiert.

Überprüfen Sie zunächst, ob Nmap installiert ist, und prüfen Sie die Version. Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:

nmap --version

Sie sollten eine Ausgabe sehen, die die Nmap-Version bestätigt, ähnlich wie diese:

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1f libssh2-1.8.0 libz-1.2.11 libpcre-8.39 nmap-libpcap-1.9.1
Compiled without:
Available nsock engines: epoll poll select

Führen Sie nun Ihren ersten Scan gegen localhost durch. Dieser Befehl weist Nmap an, die gängigsten offenen Ports auf Ihrem lokalen Rechner zu überprüfen.

nmap localhost

Untersuchen Sie die Ausgabe. Nmap listet die Ports auf, die als offen erkannt wurden, zusammen mit dem Status und dem gängigen Dienst, der mit diesem Port verknüpft ist. Die Ausgabe sieht in etwa so aus und zeigt die für dieses Lab vorbereiteten Dienste:

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000092s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

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

Dieser erste Scan liefert Ihnen eine Übersicht der laufenden Dienste, was der erste Schritt bei jeder Netzwerksicherheitsbewertung ist.

Dienstversionen erkennen

In diesem Schritt verwenden Sie Nmap zur Dienst- und Versionserkennung. Zu wissen, welche Ports offen sind, ist nützlich, aber für einen Sicherheitsanalysten ist es wesentlich wertvoller, die genaue Software und Version zu kennen, die auf diesen Ports läuft. Veraltete Software ist eine Hauptquelle für Schwachstellen.

Wir verwenden das Flag -sV, das Nmap anweist, offene Ports zu untersuchen, um detaillierte Dienst- und Versionsinformationen zu ermitteln.

Führen Sie einen Versionserkennungs-Scan gegen localhost durch. Um den Scan effizienter zu gestalten, zielen Sie auf die spezifischen Ports ab, die in diesem Beispiel verwendet werden, anstatt alle Ports zu scannen.

nmap -sV -p 22,8080 localhost

Profi-Tipp: Die gezielte Auswahl bestimmter Ports verkürzt die Scanzeit drastisch. Ein Scan des gesamten Portbereichs mit -sV kann mehrere Minuten dauern, während dieser gezielte Ansatz normalerweise in Sekunden abgeschlossen ist.

Vergleichen Sie die Ausgabe mit dem Basis-Scan aus Schritt 1. Sie sehen nun eine zusätzliche Spalte, VERSION, die Details über die auf dem jeweiligen Port laufende Software liefert.

Die Ausgabe ist detaillierter, ähnlich wie diese:

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
8080/tcp open  http    nginx 1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Diese Information ist entscheidend. Wenn der Scan beispielsweise eine alte Version von nginx mit einer bekannten kritischen Schwachstelle aufdecken würde, wüssten Sie genau, wo Sie Ihre Korrekturmaßnahmen ansetzen müssen.

Die Nmap Scripting Engine (NSE) verwenden

In diesem Schritt nutzen Sie die Nmap Scripting Engine (NSE), eine der leistungsstärksten Funktionen von Nmap. Sie ermöglicht es Ihnen, eine Vielzahl von Netzwerkaufgaben mithilfe einer Bibliothek von Skripten zu automatisieren. Diese Skripte können für fortgeschrittene Erkennung, Schwachstellensuche und sogar Exploitation verwendet werden.

Sie verwenden das Flag -sC, das eine Reihe von Standard-Skripten ausführt, die als sicher und nützlich für die Erkennung gelten. Da der FTP-Dienst in diesem Lab auf dem nicht standardmäßigen Port 2121 läuft, kombinieren Sie -sC mit der Diensterkennung (-sV), damit Nmap den Dienst identifizieren kann, bevor es die passenden Skripte auswählt.

Führen Sie einen Nmap-Scan mit Diensterkennung und aktivierten Standard-Skripten gegen localhost durch. Zielen Sie auf die Ports 2121 und 8080, damit der Scan schnell bleibt und dennoch die Skriptausgabe der FTP- und Webdienste anzeigt.

nmap -sV -sC -p 2121,8080 localhost

Überprüfen Sie die Ausgabe. Sie sehen zusätzliche Informationen, die unter jedem Port eingerückt sind. Dies ist die Ausgabe der NSE-Skripte. Zum Beispiel kann das Skript ftp-anon melden, dass ein anonymer FTP-Login auf Port 2121 erlaubt ist, das Skript http-title könnte den Titel der Webseite auf Port 8080 abrufen, und SSL-Skripte könnten Details zu Zertifikaten melden.

Die Ausgabe ist noch ausführlicher:

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000099s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 995 closed ports
PORT     STATE SERVICE VERSION
2121/tcp open  ftp     vsftpd 3.0.5
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
|   STAT:
| FTP server status:
|      Logged in as ftp
|_End of status
8080/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
Service Info: OS: Unix

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

Wie Sie sehen, haben die Standard-Skripte entdeckt, dass ein anonymer FTP-Login auf Port 2121 erlaubt ist, und den Titel der Webseite auf Port 8080 abgerufen. Dies sind wertvolle Informationen, die automatisch gesammelt wurden.

Einen Schwachstellen-Scan durchführen

In diesem Schritt verwenden Sie NSE-Skripte, um nach Schwachstellen zu suchen. Die NSE enthält eine Kategorie von Skripten, die speziell darauf ausgelegt sind, nach bekannten Sicherheitslücken zu suchen. Sie können alle Skripte in der Kategorie vuln ausführen, um einen umfassenden Schwachstellen-Scan durchzuführen.

Es ist bewährte Praxis, die Ausgabe von langen oder wichtigen Scans immer in einer Datei zu speichern. Wir verwenden das Flag -oN, um die Ausgabe im normalen Nmap-Format zu speichern.

Kombinieren Sie zunächst das Gelernte. Führen Sie einen Scan durch, der die Diensterkennung (-sV) beinhaltet und alle Schwachstellen-Skripte (--script vuln) ausführt. Speichern Sie die Ausgabe in einer Datei namens vuln_scan.txt.

nmap -sV --script vuln -oN vuln_scan.txt localhost

Dieser Scan kann einige Minuten dauern, da er viele Skripte gegen jeden offenen Port ausführt.

Sobald der Scan abgeschlossen ist, wird eine Datei namens vuln_scan.txt in Ihrem aktuellen Verzeichnis (/home/labex/project) erstellt. Sie können den Inhalt mit dem Befehl cat anzeigen:

cat vuln_scan.txt

Die Ausgabedatei ist lang, daher ist es effizienter, nach Schlüsselwörtern zu suchen. Verwenden Sie grep, um nach Zeilen zu suchen, die auf eine Schwachstelle hinweisen. Der Begriff "VULNERABLE" ist ein starker Indikator.

grep "VULNERABLE" vuln_scan.txt

Sie sollten eine Ausgabe sehen, die alle gefundenen Schwachstellen anzeigt. In dieser Lab-Umgebung werden Sie wahrscheinlich eine Schwachstelle im Zusammenhang mit dem Byterange-Filter von Apache sehen:

|   VULNERABLE:
|     State: VULNERABLE

Um die vollständigen Details der Schwachstelle zu sehen, können Sie nach der spezifischen CVE suchen oder die vollständige Scan-Ausgabe betrachten. Sie könnten beispielsweise eine Apache DoS-Schwachstelle (CVE-2011-3192) auf Port 8080 finden. Beachten Sie, dass Sie möglicherweise auch einige Skriptfehler sehen (wie clamav-exec: ERROR), die normal sind und ignoriert werden können – diese treten auf, wenn bestimmte Schwachstellen-Skripte in der Lab-Umgebung nicht ordnungsgemäß ausgeführt werden können.

Dieser Schritt zeigt, wie man aktiv nach Schwachstellen sucht und von der einfachen Erkennung zu einem gezielten Sicherheitsaudit übergeht.

Scan-Ergebnisse speichern und formatieren

In diesem Schritt lernen Sie, wie Sie Ihre Ergebnisse in mehreren Formaten speichern und einen benutzerfreundlichen HTML-Bericht erstellen. Die ordnungsgemäße Dokumentation und Berichterstattung Ihrer Ergebnisse ist eine entscheidende Fähigkeit für jeden Sicherheitsexperten. Nmap unterstützt verschiedene Ausgabeformate, die für unterschiedliche Zwecke geeignet sind.

Erstellen Sie zunächst ein dediziertes Verzeichnis, um Ihre Berichte organisiert zu halten.

mkdir -p ~/project/reports

Führen Sie nun den Scan erneut aus, aber speichern Sie die Ausgabe diesmal gleichzeitig in zwei Formaten: als normalen Text (-oN) und als XML (-oX). XML ist ein strukturiertes Format, das sich ideal für die Weiterverarbeitung mit anderen Tools eignet.

nmap -sV -p 8080 --script vuln -oN ~/project/reports/scan_report.txt -oX ~/project/reports/scan_report.xml localhost

Das XML-Format ist für Menschen nicht sehr gut lesbar. Nmap bietet ein Dienstprogramm namens xsltproc, um die XML-Datei in einen sauberen HTML-Bericht zu konvertieren. Führen Sie den folgenden Befehl aus, um scan_report.html zu generieren.

xsltproc ~/project/reports/scan_report.xml -o ~/project/reports/scan_report.html

Überprüfen Sie, ob alle Ihre Berichtsdateien im Verzeichnis ~/project/reports erstellt wurden. Verwenden Sie den Befehl ls -l, um die Dateien und ihre Details aufzulisten.

ls -l ~/project/reports

Sie sollten Ihre drei Berichtsdateien sehen:

total 40
-rw-rw-r-- 1 labex labex 14276 Aug 28 15:12 scan_report.html
-rw-rw-r-- 1 labex labex  5686 Aug 28 15:11 scan_report.txt
-rw-rw-r-- 1 labex labex 14924 Aug 28 15:11 scan_report.xml

Sie verfügen nun über eine einfache Textdatei zur schnellen Überprüfung, eine XML-Datei für die maschinelle Verarbeitung und eine HTML-Datei für die einfache Weitergabe und Präsentation.

Zusammenfassung

In diesem Lab haben Sie praktische Erfahrungen mit Nmap gesammelt, einem grundlegenden Werkzeug in der Cybersicherheit. Sie begannen mit der Durchführung grundlegender Port-Scans, um offene Dienste auf einem Netzwerk-Host zu identifizieren. Anschließend sind Sie zu fortgeschritteneren Techniken übergegangen, einschließlich der Dienst-Versionserkennung (-sV), um spezifische Software und deren Version zu identifizieren. Sie haben auch die Leistungsfähigkeit der Nmap Scripting Engine (NSE) erkundet, indem Sie Standard-Skripte (-sC) und einen vollständigen Schwachstellen-Scan (--script vuln) ausgeführt haben. Abschließend haben Sie die professionelle Praxis erlernt, Scan-Ergebnisse in mehreren Formaten (-oN, -oX) zu speichern und sie zur Analyse und Dokumentation in einen lesbaren HTML-Bericht zu konvertieren. Diese Fähigkeiten bilden eine solide Grundlage für den Einsatz von Nmap bei realen Netzwerksicherheitsbewertungen.