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
-sVkann 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.



