2020 / Offensive Services

Netcat – Daten über Netzwerkverbindung transportieren

Veröffentlicht am

Netcat ist ein Programm mit dem diverse Standardein- oder -ausgaben über eine Netzwerkverbindung transportiert werden kann. Neben diesem Transport kann Netcat auch bspw. einfach HTTP-Befehle selber stellen. Bei der Bewältigung von CTF Challenges wird diese praktische Software häufig benötigt

Installation von Netcat

Netcat ist ein häufig verwendetes Tool, daher ist es sowohl in jeder Ubuntu-Linux Version, MacOS sowie Kali Linux Distribution vorinstalliert. Unter Windows ist die Installation etwas schwieriger, da Netcat ein Kommandozeilen-Tool ist und diese unter Windows nicht sehr häufig vorzufinden sind. Ein Möglichkeit der Installation kann unter packtpub.com nachgeschlagen werden. Wir empfehlen jedoch für die Verwendung jeglicher Pentest-Tools ein UNIX-Betriebssystem zu verwenden.

Um ein UNIX-Betriebssystem zu verwenden, ohne dafür einen neuen Laptop oder Computer zu kaufen empfiehlt sich die Verwendung einer virtuellen Maschine. Mit einer virtuellen Maschine können Sie mehrere Systeme gleichzeitig und getrennt voneinander auf der selben Hardware benutzen. Ein Penetrationstest ist ein gutes Anwendungsbeispiel für die Verwendung einer virtuellen Maschine. Wenn Sie unser Pentest-Tool Netcat selbst einmal ausprobieren möchten eignet sich der Aufbau eines Hacking Labs.

Netcat – so einfach funktioniert die Software!

Netcat oder häufig mit nc bezeichnet hat viele Funktionen die ein Pentester benötigt. Zunächst beschreiben wir den häufigsten Anwendungsfall und zwar den Transport von Standardein- und ausgaben über eine Netzwerkverbindung.

Netcat Showbild
Dieses Diagramm von Wikipedia zeigt deutlich, wie ein Netcat (nc) Prozess Daten von zwei unterschiedlichen Systemen transportieren kann. (Quelle: Wikipedia)

In der Praxis wird durch einen Netcat Prozess häufig versucht eine Reverse-Shell zu erzeugen. Dadurch kann ein möglicher Angreifer auf Host1 Befehle über nc an Host2 schicken und diese dort zur Ausführung bringen. Durch den nc Prozess erhalten wir die Ausgabe, die der Befehl auf dem Zielsystem Host2 erzeugt.

netcat -l 8888                       -> Dieser Befehl erzeugt einen Server, der nun auf eine eingehende Verbindung auf dem Port 8888 wartet. Das Gegenstück ist der Client:

netcat 123.456.789 8888   -> Dieser Befehl versucht eine Verbindung zu der IP-Adresse 123.456.789 auf Port 8888 zu erstellen.

Ist solch eine Verbindung möglich, kann der Angreifer eigenen Code auf einem entfernten System zur Ausführung bringen. Dies ist eine äußerst kritische Sicherheitslücke, daher wird das Vorhandensein solch einer Lücke in jedem Pentest analysiert. Neben der Möglichkeit die oben dargestellte Verbindung zu erzeugen, kann Netcat auch verwendet werden um komplette Dateien über das TCP oder UDP Protokoll zu schicken. Netcat ist ein vielseitiges Tool und liefert mit dem Befehl: netcat -h folgenden Hilfetext, der sämtliche Befehle beschreibt:

netcat -h

Da wir nicht sämtliche Funktionen der Software in diesem Beitrag besprechen und zeigen können, gehen wir im folgenden auf Funktion ein, die in dem oben dargestellten Diagramm gezeichnet ist. Wir befinden uns im Terminal und erstellen mit dem Befehl: nc -l 1234 einen Netcat Prozess der auf eine eingehende Verbindung auf Port 1234 wartet. Genau diesen Netcat Prozess sprechen wir nun an, indem wir in einem Browser http://127.0.0.1:1234 eingeben. Im folgenden erkennen wir eine Ausgabe die viele Informationen über den Kommunikationspartner liefert.

nc-Verbindung

Mit Netcat können Befehle auf entfernten Systemen zur Ausführung gebracht werden. Um dies zu testen benötigt man entweder unterschiedliche Systeme oder man übt seine Pentest-Skills an verschiedenen Stellen. Ein gutes Beispiel ist hackthebox. Diese Seite stellt kostenlos einige Systeme zur Verfügung die man “hacken” muss um an ein Flag zu kommen. In verschiedenen Walkthroughs ist beschrieben wie Netcat eingesetzt wird um bspw. Dateien von dem entfernten System auf das eigene herunterzuladen.

Foto des Autors

Chris Wojzechowski

Mein Name ist Chris Wojzechowski und ich habe vor wenigen Jahren meinen Master in Internet-Sicherheit in Gelsenkirchen studiert. Ich bin geschäftsführender Gesellschafter der AWARE7 GmbH und ausgebildeter IT-Risk Manager, IT-Grundschutz Praktiker (TÜV) und besitze die Prüfverfahrenskompetenz für § 8a BSIG. Unser Brot und Buttergeschäft ist die Durchführung von Penetrationstests. Wir setzen uns darüber hinaus für ein breites Verständnis für IT-Sicherheit in Europa ein und bieten aus diesem Grund den Großteil unserer Produkte kostenfrei an.