Was ist Netcat?
Netcat ist ein Befehlszeilentool, das im Netzwerk für das Schreiben und Lesen von Daten zuständig ist. Für den Datenaustausch nutzt Netcat die Netzwerkprotokolle TCP/IP und UDP. Ursprünglich stammt das Werkzeug aus der Unix Welt; inzwischen ist es für alle Plattformen verfügbar.
Aufgrund der universellen Verwendbarkeit wird Netcat oft als „Schweizer Taschenmesser für TCP/IP“ bezeichnet. Möglich sind beispielsweise Diagnosen von Fehlern und Problemen, die die Funktionsfähigkeit und Sicherheit eines Netzwerks gefährden. Portscans, Datenstreaming oder einfachere Datenübertragungen gehören ebenfalls zum Funktionsumfang von Netcat. Des Weiteren können Chat- und Webserver aufgesetzt und Mailabfragen gestartet werden. Die schlanke Software, die bereits Mitte der 1990er Jahre entwickelt wurde, kann im Server- und im Client-Modus operieren.
- Inklusive Wildcard-SSL-Zertifikat
- Inklusive Domain Lock
- Inklusive 2 GB E-Mail-Postfach
Wie nutze ich Netcat?
Netcat lässt sich auf allen Plattformen über die Kommandozeile nutzen. Unter Linux und macOS ist das Befehlszeilentool meist vorinstalliert. Windows-Nutzer müssen das Programm aus dem Internet herunterladen. Eine besondere Installation ist nicht notwendig, für die Verwendung unter Windows reicht der Download der Programmdatei (nc.exe). Danach können Sie Netcat mithilfe der Eingabeaufforderung (cmd.exe) für diverse Aufgaben im Netzwerk einsetzen. Die Eingabeaufforderung starten Sie folgendermaßen:
- Tastenkombination [Windows] + [R] drücken
- „cmd“ in das Eingabefeld eintragen (1)
- Den OK-Button drücken (2)
Anschließend öffnet sich die cmd.exe mit folgender Ansicht:
Um die Programmdatei (nc.exe) starten zu können, müssen Sie noch zum Speicherort wechseln. Hat man unter Windows die nc.exe auf dem Desktop im Ordner „netcat“ abgelegt, sieht die Syntax folgendermaßen aus:
cd C:\Users\BENUTZERNAME\Desktop\netcat\
Der Befehl „cd“ (change directory) aktiviert den Wechsel, der dahinterstehende Programmpfad adressiert den Speicherordner der nc.exe. In der Kommandozeile sieht der Wechsel so aus:
Für einige Operationen benötigt Netcat erweiterte Zugriffsrechte. Unter Windows 10 lässt sich die Eingabeaufforderung in wenigen Schritten mit Administratorrechten starten:
1. Rechtsklick auf Windows-Symbol links in der Taskleiste oder die Tastenkombination [Windows] + [X] drücken
2. Im sich öffnenden Kontextmenü den Eintrag „Eingabeaufforderung (Administrator)“ wählen:
Der Einsatz von Netcat birgt gewisse Sicherheitsrisiken. Daher sollte das Tool – speziell im Modus mit erweiterten Zugriffsrechten – nur von erfahrenen Anwendern und Systemadministratoren verwendet werden.
Netcat-Syntax: Welche Befehle und Optionen gibt es?
Die Syntax von Netcat besteht aus zwei Grundkomponenten: Dem stets identischen Basisbefehl „nc“ folgen verschiedene „Optionen“. Der Basisbefehl adressiert die Programmdatei nc.exe, die Optionen bestimmen den konkreten Funktionsumfang einer Netcat-Version. Je nach Betriebssystem und verwendeter Netcat-Version variieren die verfügbaren Möglichkeiten.
Die folgende Tabelle beschränkt sich auf wichtige Optionen, die in den meisten Versionen für Linux, macOS und Windows zur Verfügung stehen. Zudem sind weitere nützliche Optionen aufgeführt, vor allem Erweiterungen durch die weit verbreitete GNU-Netcat-Version für Linux, Unix und macOS:
Optionen | Beschreibung |
-4 | Erzwingt die Nutzung von IPv4 (GNU-Netcat) |
-6 | Erzwingt die Nutzung von IPv6 (GNU-Netcat) |
-d | Löst Netcat von der Konsole (Hintergrundbetrieb; unter Windows und bei aktuellen GNU-Netcat-Versionen verfügbar) |
-D | Aktiviert die Option fürs Debugging von Sockets (GNU-Netcat) |
-h (display help) | Zeigt die Hilfe an (Befehle/Optionen mit Kurzbeschreibung) |
-i (secs) | Verzögerung in Sekunden für gesendete Zeilen oder gescannte Ports |
-k | Netcat wartet nach Verbindungsende auf eine neue Verbindung (nur GNU-Netcat und nur in Verbindung mit „-l“ möglich) |
-l (listen mode) | Lausch-/Listen- und Server-Modus für eingehende Verbindungsanfragen (über angegebenen Port) |
-L Listen harder | Netcat wird veranlasst, auch nach clientseitigen Verbindungsabbrüchen weiterhin im Lauschmodus zu operieren (durchgängig mit den gleichen Parametern; wird nur von der Windows-Version unterstützt) |
-n (numeric-only) | Nur IP-Nummern, keine DNS-Namen |
-o (file) | Hex-Dump des Datenverkehrs wird durchgeführt (Inhalt von Dateien wird in hexadezimaler Ansicht dargestellt); dient der Fehlersuche (Debuggen von Netzanwendungen); Mitschneiden von Kommunikation (Sniffen) ist möglich (bei ausgehenden und eingehenden Paketen) |
-p (port) | Gibt den lokalen Quell-Port an, den Netcat für ausgehende Verbindungen nutzen soll |
-r | Verwendung zufälliger Portwerte beim Scannen (für lokale und entfernte Ports) |
-s (adress) | Legt die lokale Quelladresse fest (IP-Adresse oder Namen) |
-t | Telnet-Modus (ermöglicht z. B. Server-Ansprache über Telnet); erfordert eine spezielle Kompilierung von Netcat, ansonsten steht die Option nicht zur Verfügung |
-u | Verwendung des UDP-Modus (statt TCP) |
-U (gateway) | Netcat verwendet Unix-Domain Sockets (GNU-Netcat) |
-v | Ausführliche Ausgabe (ist z. B. für die Anzeige und den Umfang angezeigter Fehlermeldungen verantwortlich) |
-w (secs) | Legt Time-outs fest: für den Verbindungsaufbau und für das Schließen einer Verbindung (Einheit: Sekunden) |
-z | Portscanner-Modus (zero-I/O mode); es wird nur nach lauschenden Diensten gescannt (kein Senden von Daten) |
Ein einfaches Beispiel für die Anwendung der Netcat-Syntax ist der Aufruf der Hilfe mit dem Parameter „-h“:
C:\Users\BENUTZERNAME\Desktop\netcat>nc -h
Möchte man etwa für die Datenübertragung im Netzwerk einen Server oder einen Client definieren, ist folgende Syntax zu beachten:
Client-Modus (connect to somewhere):
nc [Optionen] [IP-Adresse/Hostname] [Port]
Server-Modus (listen for inbound):
nc -l -p port [options] [hostname] [port]
Das grundlegende Schema für die Ausführung eines Portscans sieht so aus:
nc [options] [host] [port]
Dateien mit Netcat kopieren
Ein häufig genutztes Feature von Netcat ist das Kopieren von Dateien. Dabei können auch große Datenmengen übertragen, einzelne Partitionen oder ganze Festplatten geklont werden. In unserem Beispiel soll die Datei testdatei.txt über den Port 6790 von Rechner A (Client) zu Rechner B (Server) kopiert werden. Diese Schritte sind notwendig:
1. Ermitteln der IP-Adresse von Rechner B (Ziel-PC)
2. Anlegen der Testdatei testdatei.txt im Netcat-Verzeichnis von Rechner A; in diesem Beispiel befindet sich die Testdatei im Netcat-Verzeichnis des Clients, auf dem Zielrechner B landet die kopierte Datei dann ebenfalls im Netcat-Ordner (andere Dateipfade müssen entsprechend angepasst werden).
3. Eingabe der Netcat-Syntax in der Kommandozeile
Rechner B (agiert als empfangender Server):
nc -l -p 6790 > testdatei.txt
ENTER
Rechner A (agiert als sendender Client):
nc [ip-Adresse Rechner B] 6790 < testdatei.txt
ENTER
Der Erfolg des Transfers wird in der Eingabeaufforderung nicht bestätigt. Mit einem Blick in das Zielverzeichnis können Sie überprüfen, ob der Transfer geklappt hat.
Portscans durchführen
Um etwa Fehler und Sicherheitsprobleme aufzuspüren, kann man einen Scan durchführen und offene Ports ausfindig machen. Im folgenden Beispiel hat der Rechner die IP-Adresse 192.168.11.1. Nach der IP-Adresse können einzelne Ports (z. B. 1), mehrere Ports (1, 2, 3 etc.) oder ein ganzer Bereich für den Scan (1–1024) angegeben werden:
nc -w 2 -z 192.168.10.1 1-1024
Durch die Option „-w“ wird die Zeit für einen Time-out bestimmt (in diesem Beispiel: „Versuche zwei Sekunden lang, eine Verbindung zu den Ports aufzubauen“). Die Option „-z“ weist Netcat an, ausschließlich nach lauschenden Diensten zu suchen und keine Daten zu senden.
Wird die Option „-v“ hinzugefügt, erhalten Sie genauere Informationen zum Scan:
nc -v -w 2 -z 192.168.11.1 1-1024
Einen gefundenen offenen Port bestätigt Netcat dann mit der Meldung „succeeded!“:
Connection to 192.168.11.1 25 port [tcp/smtp] succeeded!
Auf den gescannten Ports 1–1024 laufen die meisten bekannten Dienste wie Mail, FTP oder SSH. In diesem Beispiel hat Netcat den offenen SMTP-Port eines E-Mail-Clients gefunden.
Netcat als einfaches Chatprogramm
Netcat kann eine einfache TCP- oder eine UDP-Verbindung zwischen zwei Computern herstellen und danach einen Kommunikationskanal öffnen. Im folgenden Beispiel wird zunächst der Empfänger auf dem entfernten Remote-System installiert und in den Listening-Modus versetzt. Er agiert dann als „lauschender“ Part und nutzt für den Nachrichtenempfang den Port 1605. Erreichbar ist er unter der IP-Adresse 192.168.11.1:
nc -l -p 1605
ENTER
Dann wird vom lokalen Rechner (sendender PC) durch folgenden Befehl eine Verbindung zum Nachrichtenempfänger hergestellt:
nc 192.168.11.1 1605
ENTER
Wenn die Verbindung erfolgreich hergestellt wurde, können Nachrichten in beide Richtungen ausgetauscht werden.
Aufsetzen eines einfachen Webservers
Netcat kann auch dazu dienen, einen einfachen Webserver aufzusetzen. Ist etwa der angestammte Server wegen technischer Probleme nicht zu erreichen, kann man auf Anfragen zumindest mit einer vorbereiteten Fehlermeldung (in Form einer html-Datei) über den Ausfall reagieren:
nc -l -v -p 85 -w10 -L < fehlermeldung.html
Netcat wartet auf Port 85 auf Anfragen und reagiert auf diese mit der Datei fehlermeldung.html. Die Option „-L“ sorgt dafür, dass der Netcat-Prozess über eine einmalige Anfrage hinaus aufrechterhalten wird. Der Parameter „-w“ beendet die Verbindung nach 10 Sekunden (Time-out). Der „-v“-Parameter gibt dem Serverbetreiber Auskunft über die Anfragen und dokumentiert durch Statusmeldungen beispielsweise das Betriebssystem und den Browser-Typ des anfragenden Client-Rechners.
Ist Netcat ein Sicherheitsrisiko?
Keine Frage, Netcat kann im Netzwerk universell angewendet werden und erfüllt dort viele nützliche Aufgaben. Daher ist es kein Wunder, dass es vor allem bei System- und Netzwerkadministratoren äußerst beliebt ist, zumal die Erstellung von Netcat-Code nach einer gewissen Einarbeitungszeit relativ leicht von der Hand geht.
Es gibt aber eine Kehrseite der Medaille: Netcat ist auch ein Hackertool, das sich für die Netzwerkspionage eignet, Sicherheitslücken aufspürt, Firewalls umgeht und Backdoors für die Übernahme von Rechnern nutzt. Virenprogramme schlagen z. B. Alarm, wenn sich eine Netcat-Version auf dem Computer befindet, die durch eine spezielle Kompilierung die Ausführung der Option „-e“ ermöglicht.
Mit dem e-Schalter im Code kann eine interaktive Schnittstelle (Backdoor Shell) auf einem entfernten Computer gestartet werden. Wer etwa unter Windows ungehindert Zugriff auf die cmd.exe bekommt, kann erheblichen Schaden anrichten. Über eine Backdoor Shell kann auch weitere Schadsoftware nachgeladen werden. Oft nutzen Hacker im Code auch den Netcat-Parameter „-d“, durch den das Befehlszeilentool unter Windows, unsichtbar für den Anwender, im Hintergrundmodus agieren und ferngesteuert Unheil anrichten kann.
Um gehackte Versionen zu vermeiden, sollte Netcat nur von sicheren Quellen aus dem Internet geladen werden. Zudem empfehlen Sicherheitsexperten eine genaue Abwägung, ob ein Tool wie Netcat überhaupt in den Installationsumfang von Systemen (insbesondere von Frontend-Systemen) gehören sollte.
Ein weiteres Sicherheitsrisiko: Netcat überträgt Daten grundsätzlich unverschlüsselt im Klartext. Daher sollte das Tool nur in Netzen genutzt werden, die sehr gut abgesichert oder – noch besser – vom Internet getrennt sind. Für den Datentransfer über das Internet ist der Netcat-Nachfolger Cryptcat besser geeignet, da er die Daten verschlüsselt. Bei der Übertragung sicherheitsrelevanter Daten können Verbindungen zudem über SSH getunnelt werden.
Die Vorteile und die möglichen Risiken machen deutlich: Netcat ist ein Tool, mit dem sich ambitionierte Anwender, Systemadministratoren und IT-Verantwortliche unbedingt auseinandersetzen sollten. Wer die Vorteile kennt, profitiert von der Vielseitigkeit und Effizienz des Remote-Administration-Tools. Wer die Gefahren für die Sicherheit des eigenen Netzwerks einschätzen und genauer bestimmen kann, kann Hackerattacken durch präventive Maßnahmen verhindern oder zumindest den Schaden in Grenzen halten.
Allerdings gilt das Tool, das vor über 20 Jahren im Hackerumfeld entstand, heutzutage schon als recht betagt und teils auch als veraltet. Mittlerweile gibt es bessere Werkzeuge für diverse Tätigkeiten im Netzwerk. Neben Cryptcat ist Socat zu nennen, das außer TCP und UDP auch das Netzwerkprotokoll SCTP nutzen kann, über Proxy-Server arbeitet und Verschlüsselung unterstützt. Zudem läuft es wie Netcat auf allen gängigen Plattformen.
Als schlanker und schnell einsetzbarer Allrounder mit recht unkomplizierter Befehlssyntax genießt Netcat aber nach wie vor eine Sonderstellung. In Kombination z. B. mit dem Administrationstool Netsh ergeben sich viele weitere Möglichkeiten für eine effiziente Netzwerkdiagnose und -verwaltung.