Netcat ist ein Be­fehls­zei­len­tool, das im Netzwerk für das Schreiben und Lesen von Daten zuständig ist. Für den Da­ten­aus­tausch nutzt Netcat die Netz­werk­pro­to­kol­le TCP/IP und UDP. Ur­sprüng­lich stammt das Werkzeug aus der Unix Welt; in­zwi­schen ist es für alle Platt­for­men verfügbar.

Aufgrund der uni­ver­sel­len Ver­wend­bar­keit wird Netcat oft als „Schweizer Ta­schen­mes­ser für TCP/IP“ be­zeich­net. Möglich sind bei­spiels­wei­se Diagnosen von Fehlern und Problemen, die die Funk­ti­ons­fä­hig­keit und Si­cher­heit eines Netzwerks gefährden. Portscans, Da­ten­strea­ming oder ein­fa­che­re Da­ten­über­tra­gun­gen gehören ebenfalls zum Funk­ti­ons­um­fang von Netcat. Des Weiteren können Chat- und Webserver auf­ge­setzt und Mail­ab­fra­gen gestartet werden. Die schlanke Software, die bereits Mitte der 1990er Jahre ent­wi­ckelt wurde, kann im Server- und im Client-Modus operieren.

KI-Assistent kostenlos – Ihr smarter All­tags­hel­fer
  • DSGVO-konform & sicher gehostet in Deutsch­land
  • Pro­duk­ti­vi­tät steigern – weniger Aufwand, mehr Output
  • Direkt im Browser starten – ohne In­stal­la­ti­on

Wie nutze ich Netcat?

Netcat lässt sich auf allen Platt­for­men über die Kom­man­do­zei­le nutzen. Unter Linux und macOS ist das Be­fehls­zei­len­tool meist vor­in­stal­liert. Windows-Nutzer müssen das Programm aus dem Internet her­un­ter­la­den. Eine besondere In­stal­la­ti­on ist nicht notwendig, für die Ver­wen­dung unter Windows reicht der Download der Pro­gramm­da­tei (nc.exe). Danach können Sie Netcat mithilfe der Ein­ga­be­auf­for­de­rung (cmd.exe) für diverse Aufgaben im Netzwerk einsetzen. Die Ein­ga­be­auf­for­de­rung starten Sie fol­gen­der­ma­ßen:

  1. Tas­ten­kom­bi­na­ti­on [Windows] + [R] drücken
  2. „cmd“ in das Ein­ga­be­feld eintragen (1)
  3. Den OK-Button drücken (2)

An­schlie­ßend öffnet sich die cmd.exe mit folgender Ansicht:

Um die Pro­gramm­da­tei (nc.exe) starten zu können, müssen Sie noch zum Spei­cher­ort wechseln. Hat man unter Windows die nc.exe auf dem Desktop im Ordner „netcat“ abgelegt, sieht die Syntax fol­gen­der­ma­ßen aus:

cd C:\Users\BENUTZERNAME\Desktop\netcat\

Der Befehl „cd“ (change directory) aktiviert den Wechsel, der da­hin­ter­ste­hen­de Pro­gramm­pfad adres­siert den Spei­cher­ord­ner der nc.exe. In der Kom­man­do­zei­le sieht der Wechsel so aus:

Für einige Ope­ra­tio­nen benötigt Netcat er­wei­ter­te Zu­griffs­rech­te. Unter Windows 10 lässt sich die Ein­ga­be­auf­for­de­rung in wenigen Schritten mit Ad­mi­nis­tra­tor­rech­ten starten:

1. Rechts­klick auf Windows-Symbol links in der Task­leis­te oder die Tas­ten­kom­bi­na­ti­on [Windows] + [X] drücken

2. Im sich öffnenden Kon­text­me­nü den Eintrag „Ein­ga­be­auf­for­de­rung (Ad­mi­nis­tra­tor)“ wählen:

Hinweis

Der Einsatz von Netcat birgt gewisse Si­cher­heits­ri­si­ken. Daher sollte das Tool – speziell im Modus mit er­wei­ter­ten Zu­griffs­rech­ten – nur von er­fah­re­nen Anwendern und Sys­tem­ad­mi­nis­tra­to­ren verwendet werden.

Netcat-Syntax: Welche Befehle und Optionen gibt es?

Die Syntax von Netcat besteht aus zwei Grund­kom­po­nen­ten: Dem stets iden­ti­schen Ba­sis­be­fehl „nc“ folgen ver­schie­de­ne „Optionen“. Der Ba­sis­be­fehl adres­siert die Pro­gramm­da­tei nc.exe, die Optionen bestimmen den konkreten Funk­ti­ons­um­fang einer Netcat-Version. Je nach Be­triebs­sys­tem und ver­wen­de­ter Netcat-Version variieren die ver­füg­ba­ren Mög­lich­kei­ten.

Die folgende Tabelle be­schrä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 auf­ge­führt, vor allem Er­wei­te­run­gen durch die weit ver­brei­te­te GNU-Netcat-Version für Linux, Unix und macOS:

Optionen Be­schrei­bung
-4 Erzwingt die Nutzung von IPv4 (GNU-Netcat)
-6 Erzwingt die Nutzung von IPv6 (GNU-Netcat)
-d Löst Netcat von der Konsole (Hin­ter­grund­be­trieb; 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 Kurz­be­schrei­bung)
-i (secs) Ver­zö­ge­rung in Sekunden für gesendete Zeilen oder gescannte Ports
-k Netcat wartet nach Ver­bin­dungs­en­de auf eine neue Ver­bin­dung (nur GNU-Netcat und nur in Ver­bin­dung mit „-l“ möglich)
-l (listen mode) Lausch-/Listen- und Server-Modus für ein­ge­hen­de Ver­bin­dungs­an­fra­gen (über an­ge­ge­be­nen Port)
-L Listen harder Netcat wird ver­an­lasst, auch nach cli­ent­sei­ti­gen Ver­bin­dungs­ab­brü­chen weiterhin im Lausch­mo­dus zu operieren (durch­gän­gig mit den gleichen Pa­ra­me­tern; wird nur von der Windows-Version un­ter­stützt)
-n (numeric-only) Nur IP-Nummern, keine DNS-Namen
-o (file) Hex-Dump des Da­ten­ver­kehrs wird durch­ge­führt (Inhalt von Dateien wird in he­xa­de­zi­ma­ler Ansicht dar­ge­stellt); dient der Feh­ler­su­che (Debuggen von Netz­an­wen­dun­gen); Mit­schnei­den von Kom­mu­ni­ka­ti­on (Sniffen) ist möglich (bei aus­ge­hen­den und ein­ge­hen­den Paketen)
-p (port) Gibt den lokalen Quell-Port an, den Netcat für aus­ge­hen­de Ver­bin­dun­gen nutzen soll
-r Ver­wen­dung zu­fäl­li­ger Portwerte beim Scannen (für lokale und entfernte Ports)
-s (adress) Legt die lokale Quell­adres­se fest (IP-Adresse oder Namen)
-t Telnet-Modus (er­mög­licht z. B. Server-Ansprache über Telnet); erfordert eine spezielle Kom­pi­lie­rung von Netcat, ansonsten steht die Option nicht zur Verfügung
-u Ver­wen­dung des UDP-Modus (statt TCP)
-U (gateway) Netcat verwendet Unix-Domain Sockets (GNU-Netcat)
-v Aus­führ­li­che Ausgabe (ist z. B. für die Anzeige und den Umfang an­ge­zeig­ter Feh­ler­mel­dun­gen ver­ant­wort­lich)
-w (secs) Legt Time-outs fest: für den Ver­bin­dungs­auf­bau und für das Schließen einer Ver­bin­dung (Einheit: Sekunden)
-z Port­scan­ner-Modus (zero-I/O mode); es wird nur nach lau­schen­den 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 Da­ten­über­tra­gung im Netzwerk einen Server oder einen Client de­fi­nie­ren, 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 grund­le­gen­de Schema für die Aus­füh­rung 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 Da­ten­men­gen über­tra­gen, einzelne Par­ti­tio­nen oder ganze Fest­plat­ten 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-Ver­zeich­nis von Rechner A; in diesem Beispiel befindet sich die Testdatei im Netcat-Ver­zeich­nis des Clients, auf dem Ziel­rech­ner B landet die kopierte Datei dann ebenfalls im Netcat-Ordner (andere Da­tei­pfa­de müssen ent­spre­chend angepasst werden).

3. Eingabe der Netcat-Syntax in der Kom­man­do­zei­le

Rechner B (agiert als emp­fan­gen­der 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 Ein­ga­be­auf­for­de­rung nicht bestätigt. Mit einem Blick in das Ziel­ver­zeich­nis können Sie über­prü­fen, ob der Transfer geklappt hat.

Portscans durch­füh­ren

Um etwa Fehler und Si­cher­heits­pro­ble­me auf­zu­spü­ren, kann man einen Scan durch­füh­ren 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 Ver­bin­dung zu den Ports auf­zu­bau­en“). Die Option „-z“ weist Netcat an, aus­schließ­lich nach lau­schen­den Diensten zu suchen und keine Daten zu senden.

Wird die Option „-v“ hin­zu­ge­fügt, erhalten Sie genauere In­for­ma­tio­nen zum Scan:

nc -v -w 2 -z 192.168.11.1 1-1024

Einen ge­fun­de­nen offenen Port bestätigt Netcat dann mit der Meldung „succeeded!“:

Connection to 192.168.11.1 25 port [tcp/smtp] succeeded!

Auf den ge­scann­ten 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 Chat­pro­gramm

Netcat kann eine einfache TCP- oder eine UDP-Ver­bin­dung zwischen zwei Computern her­stel­len und danach einen Kom­mu­ni­ka­ti­ons­ka­nal öffnen. Im folgenden Beispiel wird zunächst der Empfänger auf dem ent­fern­ten Remote-System in­stal­liert und in den Listening-Modus versetzt. Er agiert dann als „lau­schen­der“ Part und nutzt für den Nach­rich­ten­emp­fang den Port 1605. Er­reich­bar 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 Ver­bin­dung zum Nach­rich­ten­emp­fän­ger her­ge­stellt:

nc 192.168.11.1 1605
ENTER

Wenn die Ver­bin­dung er­folg­reich her­ge­stellt wurde, können Nach­rich­ten in beide Rich­tun­gen aus­ge­tauscht werden.

Aufsetzen eines einfachen Web­ser­vers

Netcat kann auch dazu dienen, einen einfachen Webserver auf­zu­set­zen. Ist etwa der an­ge­stamm­te Server wegen tech­ni­scher Probleme nicht zu erreichen, kann man auf Anfragen zumindest mit einer vor­be­rei­te­ten Feh­ler­mel­dung (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 feh­ler­mel­dung.html. Die Option „-L“ sorgt dafür, dass der Netcat-Prozess über eine einmalige Anfrage hinaus auf­recht­erhal­ten wird. Der Parameter „-w“ beendet die Ver­bin­dung nach 10 Sekunden (Time-out). Der „-v“-Parameter gibt dem Ser­ver­be­trei­ber Auskunft über die Anfragen und do­ku­men­tiert durch Sta­tus­mel­dun­gen bei­spiels­wei­se das Be­triebs­sys­tem und den Browser-Typ des an­fra­gen­den Client-Rechners.

Ist Netcat ein Si­cher­heits­ri­si­ko?

Keine Frage, Netcat kann im Netzwerk uni­ver­sell an­ge­wen­det werden und erfüllt dort viele nützliche Aufgaben. Daher ist es kein Wunder, dass es vor allem bei System- und Netz­werk­ad­mi­nis­tra­to­ren äußerst beliebt ist, zumal die Er­stel­lung von Netcat-Code nach einer gewissen Ein­ar­bei­tungs­zeit relativ leicht von der Hand geht.

Es gibt aber eine Kehrseite der Medaille: Netcat ist auch ein Ha­cker­tool, das sich für die Netz­werk­spio­na­ge eignet, Si­cher­heits­lü­cken aufspürt, Firewalls umgeht und Backdoors für die Übernahme von Rechnern nutzt. Vi­ren­pro­gram­me schlagen z. B. Alarm, wenn sich eine Netcat-Version auf dem Computer befindet, die durch eine spezielle Kom­pi­lie­rung die Aus­füh­rung der Option „-e“ er­mög­licht.

Mit dem e-Schalter im Code kann eine in­ter­ak­ti­ve Schnitt­stel­le (Backdoor Shell) auf einem ent­fern­ten Computer gestartet werden. Wer etwa unter Windows un­ge­hin­dert Zugriff auf die cmd.exe bekommt, kann er­heb­li­chen Schaden anrichten. Über eine Backdoor Shell kann auch weitere Schad­soft­ware nach­ge­la­den werden. Oft nutzen Hacker im Code auch den Netcat-Parameter „-d“, durch den das Be­fehls­zei­len­tool unter Windows, un­sicht­bar für den Anwender, im Hin­ter­grund­mo­dus agieren und fern­ge­steu­ert Unheil anrichten kann.

Um gehackte Versionen zu vermeiden, sollte Netcat nur von sicheren Quellen aus dem Internet geladen werden. Zudem empfehlen Si­cher­heits­exper­ten eine genaue Abwägung, ob ein Tool wie Netcat überhaupt in den In­stal­la­ti­ons­um­fang von Systemen (ins­be­son­de­re von Frontend-Systemen) gehören sollte.

Ein weiteres Si­cher­heits­ri­si­ko: Netcat überträgt Daten grund­sätz­lich un­ver­schlüs­selt im Klartext. Daher sollte das Tool nur in Netzen genutzt werden, die sehr gut ab­ge­si­chert oder – noch besser – vom Internet getrennt sind. Für den Da­ten­trans­fer über das Internet ist der Netcat-Nach­fol­ger Cryptcat besser geeignet, da er die Daten ver­schlüs­selt. Bei der Über­tra­gung si­cher­heits­re­le­van­ter Daten können Ver­bin­dun­gen zudem über SSH getunnelt werden.

Die Vorteile und die möglichen Risiken machen deutlich: Netcat ist ein Tool, mit dem sich am­bi­tio­nier­te Anwender, Sys­tem­ad­mi­nis­tra­to­ren und IT-Ver­ant­wort­li­che unbedingt aus­ein­an­der­set­zen sollten. Wer die Vorteile kennt, pro­fi­tiert von der Viel­sei­tig­keit und Effizienz des Remote-Ad­mi­nis­tra­ti­on-Tools. Wer die Gefahren für die Si­cher­heit des eigenen Netzwerks ein­schät­zen und genauer bestimmen kann, kann Ha­cker­at­ta­cken durch prä­ven­ti­ve Maßnahmen ver­hin­dern oder zumindest den Schaden in Grenzen halten.

Al­ler­dings gilt das Tool, das vor über 20 Jahren im Ha­cker­um­feld entstand, heut­zu­ta­ge schon als recht betagt und teils auch als veraltet. Mitt­ler­wei­le gibt es bessere Werkzeuge für diverse Tä­tig­kei­ten im Netzwerk. Neben Cryptcat ist Socat zu nennen, das außer TCP und UDP auch das Netz­werk­pro­to­koll SCTP nutzen kann, über Proxy-Server arbeitet und Ver­schlüs­se­lung un­ter­stützt. Zudem läuft es wie Netcat auf allen gängigen Platt­for­men.

Als schlanker und schnell ein­setz­ba­rer All­roun­der mit recht un­kom­pli­zier­ter Be­fehls­syn­tax genießt Netcat aber nach wie vor eine Son­der­stel­lung. In Kom­bi­na­ti­on z. B. mit dem Ad­mi­nis­tra­ti­ons­tool Netsh ergeben sich viele weitere Mög­lich­kei­ten für eine ef­fi­zi­en­te Netz­werk­dia­gno­se und -ver­wal­tung.

Zum Hauptmenü