Nmap-Ausgabeformate

NmapBeginner
Jetzt üben

Einführung

Bei der Durchführung von Penetrationstests oder Netzwerksicherheitsanalysen ist das Ausführen von Scans nur die halbe Miete. Die ordnungsgemäße Dokumentation und Speicherung Ihrer Scan-Ergebnisse ist entscheidend für die Berichterstattung, die Nachverfolgung des Fortschritts und die Weitergabe der Daten an andere Sicherheitstools.

Die Wahl des Ausgabeformats beeinflusst, was Sie mit Ihren Ergebnissen als Nächstes tun können. Für eine schnelle Überprüfung ist eine für Menschen lesbare Ausgabe am besten geeignet. Für die Automatisierung ist eine strukturierte Ausgabe vorzuziehen. Professionelle Workflows bewahren in der Regel beides auf.

Nmap, der Industriestandard für Netzwerk-Mapping, bietet verschiedene Ausgabeformate für unterschiedliche Anforderungen. Die drei gängigsten Formate sind Normal (für Menschen lesbar), Grepable (für die Analyse über die Befehlszeile konzipiert) und XML (strukturierte Daten für den Import in andere Software).

In diesem Lab lernen Sie, wie Sie diese drei Ausgabeformate generieren und wie Sie grundlegende Linux-Befehlszeilentools verwenden, um die Ergebnisse zu analysieren und wertvolle Informationen zu extrahieren.

Ausgabe im Normal-Format (-oN)

In diesem Schritt lernen Sie, wie Sie Nmap-Scan-Ergebnisse im Normal-Format speichern. Das Normal-Format ist im Wesentlichen eine direkte Kopie dessen, was Sie auf Ihrem Terminalbildschirm sehen, wenn Sie einen Nmap-Scan ausführen. Es ist sehr gut lesbar und eignet sich perfekt für die schnelle Überprüfung von Ergebnissen oder um sie in einem Textdokument mit Kollegen zu teilen.

Dieses Format ist für Menschen optimiert, nicht für automatisierte Pipelines. Es ist die richtige Wahl, wenn der unmittelbare Empfänger ein menschlicher Analyst ist, der den Scan als Bericht liest.

Um Ihre Scan-Ergebnisse im Normal-Format zu speichern, verwenden Sie das Flag -oN, gefolgt von dem Namen der Datei, die Sie erstellen möchten. Wir scannen unsere lokale Maschine (127.0.0.1), um offene Ports zu entdecken und die Ausgabe zu speichern.

Führen Sie den folgenden Befehl in Ihrem Terminal aus, um einen Scan durchzuführen und ihn als normal_scan.txt zu speichern:

nmap -p 22,8080 -oN normal_scan.txt 127.0.0.1

Nachdem der Scan abgeschlossen ist, können Sie den Inhalt der Datei mit dem Befehl cat anzeigen. Dies zeigt genau die gleiche Ausgabe, die während des Scans auf Ihrem Bildschirm ausgegeben wurde.

cat normal_scan.txt

Sie sollten eine Ausgabe sehen, die dieser ähnelt und die offenen Ports sowie die zugehörigen Dienste anzeigt:

## Nmap 7.80 scan initiated Sat Mar  7 16:07:07 2026 as: nmap -p 22,8080 -oN normal_scan.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000057s latency).

PORT     STATE SERVICE
22/tcp   open  ssh
8080/tcp open  http-proxy

## Nmap done at Sat Mar  7 16:07:07 2026 -- 1 IP address (1 host up) scanned in 0.02 seconds

Ausgabe im Grepable-Format (-oG)

In diesem Schritt erkunden Sie das Grepable-Ausgabeformat. Während das Normal-Format gut für das menschliche Auge geeignet ist, ist es schwierig, es programmgesteuert zu verarbeiten, da sich die Informationen über mehrere Zeilen erstrecken. Das Grepable-Format löst dieses Problem, indem es alle Informationen für einen einzelnen Host in eine einzige, lange Zeile schreibt.

Diese Art der Datenaufbereitung macht die shell-basierte Analyse praktikabel. Es ist ein klassisches Beispiel dafür, wie Ausgaben für nachgelagerte Tools statt für den direkten Lesekomfort gestaltet werden.

Dieses Format wurde speziell für die Verwendung mit Linux-Befehlszeilentools wie grep, awk und cut entwickelt. Um eine Grepable-Ausgabe zu generieren, verwenden Sie das Flag -oG.

Führen Sie den folgenden Befehl aus, um denselben Scan durchzuführen, diesmal jedoch die Ergebnisse im Grepable-Format als grepable_scan.txt zu speichern:

nmap -p 22,8080 -oG grepable_scan.txt 127.0.0.1

Sehen Sie sich nun den Inhalt der neu erstellten Datei an:

cat grepable_scan.txt

Die Ausgabe sieht ganz anders aus als beim Normal-Format. Beachten Sie, wie die Host-Informationen und alle offenen Ports in einer einzigen Zeile zusammengefasst sind:

## Nmap 7.80 scan initiated Sat Mar  7 16:07:20 2026 as: nmap -p 22,8080 -oG grepable_scan.txt 127.0.0.1
Host: 127.0.0.1 (localhost)     Status: Up
Host: 127.0.0.1 (localhost)     Ports: 22/open/tcp//ssh///, 8080/open/tcp//http-proxy///
## Nmap done at Sat Mar  7 16:07:20 2026 -- 1 IP address (1 host up) scanned in 0.02 seconds

Diese Struktur macht es unglaublich einfach, nach bestimmten Schlüsselwörtern wie "open" zu suchen und die entsprechenden IP-Adressen zu extrahieren, was Sie in einem späteren Schritt üben werden.

Ausgabe im XML-Format (-oX)

In diesem Schritt lernen Sie, wie Sie eine XML-Ausgabe generieren. XML (eXtensible Markup Language) ist ein hochstrukturiertes Format, das von vielen verschiedenen Softwareanwendungen weitgehend unterstützt wird.

Strukturierte, maschinenlesbare Ausgaben werden immer wichtiger, je größer der Umfang von Sicherheitsanalysen wird. Sobald Ihre Scan-Ergebnisse in andere Tools übertragen werden müssen, wird eine Ad-hoc-Textanalyse fehleranfällig und wartungsintensiv.

Im Kontext von Penetrationstests ist XML das bevorzugte Format, wenn Sie Ihre Nmap-Scan-Ergebnisse in andere Sicherheitstools importieren müssen, wie z. B. das Metasploit Framework, Schwachstellenscanner oder benutzerdefinierte Berichtsskripte. Um eine XML-Ausgabedatei zu erstellen, verwenden Sie das Flag -oX.

Führen Sie den folgenden Befehl aus, um den Scan durchzuführen und die Ergebnisse als xml_scan.xml zu speichern:

nmap -p 22,8080 -oX xml_scan.xml 127.0.0.1

Sie können den Inhalt der XML-Datei mit dem Befehl cat überprüfen:

cat xml_scan.xml

Die Ausgabe besteht aus einem großen Block strukturierter XML-Tags. Obwohl sie für Menschen nicht sehr leicht schnell zu lesen ist, ist sie perfekt für die maschinelle Verarbeitung formatiert:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nmaprun>
<?xml-stylesheet href="file:///usr/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
<!-- Nmap 7.80 scan initiated Sat Mar  7 16:07:30 2026 as: nmap -p 22,8080 -oX xml_scan.xml 127.0.0.1 -->
<nmaprun scanner="nmap" args="nmap -p 22,8080 -oX xml_scan.xml 127.0.0.1" start="1772870850" startstr="Sat Mar  7 16:07:30 2026" version="7.80" xmloutputversion="1.04">
...
<host starttime="1772870850" endtime="1772870850"><status state="up" reason="conn-refused" reason_ttl="0"/>
<address addr="127.0.0.1" addrtype="ipv4"/>
<hostnames>
<hostname name="localhost" type="PTR"/>
</hostnames>
<ports><port protocol="tcp" portid="22"><state state="open" reason="syn-ack" reason_ttl="0"/><service name="ssh" method="table" conf="3"/></port>
...

Grepable-Ausgabe mit Awk analysieren

In diesem letzten Schritt setzen Sie das Grepable-Ausgabeformat praktisch ein. Ein häufiges Szenario bei Penetrationstests ist das Scannen eines großen Netzwerks, das Auffinden von Hosts mit bestimmten offenen Ports und das anschließende Extrahieren nur der IP-Adressen dieser Hosts, um sie an ein anderes Tool (wie einen Passwort-Cracker oder einen Schwachstellen-Exploit) weiterzuleiten.

Wir verwenden zwei leistungsstarke Linux-Textverarbeitungstools: grep und awk. Der Befehl grep filtert Zeilen, die ein bestimmtes Wort enthalten, und awk kann bestimmte Spalten aus diesen Zeilen extrahieren.

Schauen wir uns zunächst an, wie wir unsere Grepable-Datei filtern können, um nur Zeilen anzuzeigen, die das Wort "open" enthalten:

grep "open" grepable_scan.txt

Dieser Befehl gibt die Zeile aus, die den Host und seine offenen Ports enthält.

Host: 127.0.0.1 (localhost)     Ports: 22/open/tcp//ssh///, 8080/open/tcp//http-proxy///

Jetzt möchten wir nur die IP-Adresse extrahieren. Im Grepable-Format ist die IP-Adresse immer das zweite "Wort" (oder die zweite Spalte) in der Zeile. Wir können die Ausgabe von grep per Pipe (|) an awk weiterleiten und es anweisen, die zweite Spalte ($2) auszugeben.

Führen Sie den folgenden Befehl aus, um die IP-Adresse zu extrahieren und in einer neuen Datei namens open_hosts.txt zu speichern:

grep "open" grepable_scan.txt | awk '{print $2}' > open_hosts.txt

Überprüfen wir den Inhalt unserer neuen Datei:

cat open_hosts.txt

Sie sollten nur die IP-Adresse sehen:

127.0.0.1

Durch die Beherrschung dieser einfachen Befehlskombination können Sie schnell riesige Scan-Dateien analysieren und genau die Ziele extrahieren, die Sie für die nächste Phase Ihrer Analyse benötigen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Nmap-Scan-Ergebnisse mithilfe verschiedener Ausgabeformate effektiv dokumentieren und verwalten. Sie haben das Normal-Format (-oN) für die menschliche Lesbarkeit, das Grepable-Format (-oG) für die Befehlszeilenanalyse und das XML-Format (-oX) für die Tool-Integration kennengelernt. Abschließend haben Sie die Verwendung von Linux-Textverarbeitungsprogrammen wie grep und awk geübt, um spezifische Zielinformationen aus Grepable-Ausgabedateien zu extrahieren. Diese Fähigkeiten sind unerlässlich, um Daten zu organisieren und Workflows während Sicherheitsanalysen zu optimieren.