Netcat

Netcat
Screenshot einer Anwendungsmöglichkeit von Netcat

Netcat, auch nc genannt, ist ein einfaches Werkzeug, um Daten von der Standardein- oder -ausgabe über Netzwerkverbindungen zu transportieren. Es arbeitet als Server oder Client mit den Protokollen TCP und UDP. Die Manpage bezeichnet es als TCP/IP swiss army knife (Schweizer Armeemesser für TCP/IP).

Das ursprüngliche Programm wurde 1996 von einer unbekannten Person mit dem Pseudonym Hobbit für die UNIX-Plattform geschrieben und ist inzwischen auf praktisch alle Plattformen portiert worden.

Inhaltsverzeichnis

Anwendung

Netcat ist ein typisches Unix-Programm, das die grundlegende Unix-Philosophie implementiert. Insbesondere arbeitet Netcat mit der universellen Schnittstelle von Datenströmen, ohne dabei deren Inhalt weiter klassifizieren zu müssen. Da Netcat ganz abstrakt mit sämtlichen Datenströmen arbeiten kann, lassen sich beliebig komplexe Arbeitsabläufe mit Netcat realisieren, vom einfachen Kopieren von Dateien über Streamen von Datenbeständen bis hin zu komplexen Proxy- oder Gateway-Diensten über Netzwerkgrenzen hinweg.

Syntax

Netcat kann beliebigen Anwendungen zu "Netzwerkfähigkeit" verhelfen

Grundsätzlich unterscheidet Netcat zwischen zwei verschiedenen Modi: Dem Arbeiten als Server-Anwendung und als Client-Anwendung. Im ersten Fall lautet ein typischer Netcat-Aufruf

netcat -l -p lokalport

wobei lokalport einen lokalen TCP-Port angibt. Nach dem Aufruf wartet („lauscht“: -l) netcat auf dem angegebenen Port für unbegrenzte Zeit auf eine(!) eingehende Verbindung. Diese wiederum kann wie folgt ebenfalls mit netcat erstellt werden (zweiter Fall):

netcat zielserver zielport

Hier ist zielserver eine Domain oder eine IP-Adresse eines Hosts, mit dem netcat sich verbinden soll, während zielport im Allgemeinen ein TCP-Port, d. h. eine Zahl wie 1280 ist. Unter Angabe des Flags -u verwendet Netcat statt TCP das verbindungslose UDP. In diesem Client-Modus muss auf dem Zielrechner und -port schon eine Server-Anwendung warten, andernfalls beendet sich netcat mit einem Fehler.

In beiden Fällen gibt Netcat über Netzwerk einkommende Daten auf der Standardausgabe aus, während per Standardeingabe eingelesene Daten über das Netzwerk an den Kommunikationspartner geschickt werden. Werden diese Ein- und Ausgaben nicht umgeleitet kann der Anwender diese eingeben und lesen, d.h. hier fungieren die zwei netcat Aufrufe als ein einfaches Chat-Programm. Durch Umleitung oder Verwendung von Pipes oder FiFos kann Netcat in vielen Fällen Netzwerkkommunikationsfähigkeiten ermöglichen, wo sie nicht implementiert sind, zum Beispiel in Shells. So ist die oben rechts dargestellte Illustration allgemein gültig, da stdin und stdout beliebig angepasst werden können.

Anwendungsbeispiele

Einfaches Dateikopieren

Die Datei mit dem Namen original vom Computer start soll unter dem Namen kopie auf einem Computer ziel abgelegt werden, wobei der Transfer via TCP-Port 2000 abgewickelt wird. Auf einer Shell am Computer ziel wird dafür Netcat im Server-Modus gestartet. Die Standardausgabe wird mittels dem Umleitungsoperator in die Datei kopie umgeleitet:

netcat -l -p 2000 > kopie

Nachdem der Server auf Computer ziel läuft, kann auf Computer start in einer Shell Netcat im Client-Modus gestartet werden. Mithilfe eines Umleitungsoperators liest die Shell den Inhalt der Datei original aus und schreibt ihn in die Standardeingabe des aufgerufenen netcat-Programms.

netcat ziel 2000 < original

Im fehlerlosen Fall erzeugt weder die Netcat-Instanz auf Computer start, noch auf Computer ziel irgendwelche Ausgaben auf der Shell; die Instanz auf dem Computer start beendet sich nach Fertigstellung des Transfers (da die Shell durch den Operator bedingt automatisch ein EOF-Zeichen sendet), während die Instanz auf dem Computer ziel zum Beispiel per Tastenkombination Strg + C beendet werden muss, da sie auf weitere eingehende Daten wartet.

Mehrere Dateien kopieren

Nach demselben Schema laufen die meisten Dateiübertragungsszenarien, die sich Netcat zunutze machen. Eine alltäglichere Abwandlung dieses Szenarios ist die zusätzliche Verwendung des Packerprogramms tar, mit welchem komplette Verzeichnisstrukturen über Netzwerk kopiert werden können. Typischerweise kommt es in diesen Szenarien zu regelrechten Kaskaden von Programmen, die mittels Pipes miteinander verbunden sind, zum Beispiel in Anlehnung an das obige Beispiel ein Kommando auf dem Client-Rechner

tar vc * | gzip | netcat ziel 2000

sowie dazugehörig ein analoges Kommando auf dem Zielrechner

netcat -l -p 2000 | gunzip | tar vx

In diesem Beispiel werden alle Dateien im aktuellen Arbeitsverzeichnis von tar zu einem Stream gepackt, der über die Standardausgabe ausgegeben wird, von dem Kompressionsprogramm gzip komprimiert wird und dann über Netcat an eine Netcat-Serverinstanz auf dem Zielrechner geschickt wird, von gzip wieder dekomprimiert wird und von tar wieder zu einer Verzeichnisstruktur entpackt wird.

Einmal-Webserver zum Dateitransfer

Statt eines netcat-zu-netcat Transfers kann netcat auch die Sprache höherer Protokolle sprechen, wie zum Beispiel HTTP. Folgendes Kommando startet einen Webserver, welcher dem ersten Webbrowser die Datei hallo.txt präsentiert.

( echo "HTTP/1.0 200 Ok"; echo; cat hallo.txt; ) | nc -q 1 -l -p 8090

Zum Abrufen wird im Webbrowser die URL http://zielserver:8090/ eingegeben, dieser zeigt dann einen Speicherdialog oder die Datei direkt an.

Durch die oben erwähnte Unix-Philosophie kann dies leicht von einer Datei auf mehrere erweitert werden:

( echo "HTTP/1.0 200 Ok"; echo; (tar vc * | gzip); ) | nc -q 1 -l -p 8090

Komplexes Firewallumgehen

Netcat lässt sich ähnlich leicht dazu verwenden, Ports umzuleiten und so beispielsweise gezielt unzureichende Firewalls zu umgehen. Solche Anwendungsszenarien können schnell in eine rechtliche Grauzone gelangen, siehe dazu Missbrauch durch Netcat.

Netcat in der Verwendung mit inetd

Die obige Grafik illustriert die Verwendung von Netcat als offenen Proxyserver, in Kombination mit inetd.[1] Wenn beispielsweise der mit Client beschriftete Host keine direkte Verbindung mit einem speziellen TCP-Port des mit Server beschrifteten Hosts aufbauen kann, so kann er sich den obigen Aufbau zunutze machen, in dem er statt der direkten Verbindung zum Server eine Verbindung zu einem speziellen TCP-Ports des mit Proxy beschrifteten Host aufbaut, an dem inetd lauscht. Dieser ruft daraufhin eine Netcat-Clientinstanz auf, die ihrerseits (voreingestellt) eine Verbindung zu dem TCP-Port des eigentlichen Servers aufbaut. Nun werden alle Ausgaben des eigentlichen Servers unverändert über Netcat und Inetd an den Client durchgereicht und andersrum. Auf diese Weise kann der Client völlig transparent mit dem eigentlichen Server kommunizieren, als wäre der Proxy gar nicht vorhanden.

Sicherheit

Netcat wird oft mit sicherheitsrelevanten Fragen in Verbindung gebracht. Hierbei treten üblicherweise zwei essentielle Fragestellungen auf.

Verschlüsselung

Netcat ändert grundsätzlich nicht die Streams, die das Programm verarbeitet. Daher verschlüsselt Netcat auch die zu übertragenden Daten nicht, bevor sie den Computer verlassen. Eine Verschlüsselung lässt sich im Anwendungsszenario beispielsweise durch Pipes vorschalten (siehe oben) oder es muss die netcat-Weiterentwicklung cryptcat (siehe unten) verwendet werden. Alternativ muss von vorneherein zu Programmen gegriffen werden, bei denen Verschlüsselung ein zentraler Bestandteil ist, zum Beispiel der OpenSSL-Client/Server als SSL-Implementierung oder SSH bzw. Secure Copy (SCP) zum sicheren Streamen oder Kopieren von Daten.

Missbrauch

Durch seine Universalität kann Netcat auch verwendet werden, um beispielsweise Backdoors auf einem System einzurichten. So stufen diverse Antivirenprogramme, unter anderem McAfee VirusScan, Ikarus, Avira AntiVir, AVG-Antivirus, Norton AntiVirus, Kaspersky Anti-Virus, Sophos AntiVirus und G Data AntiVirus, das Programm nc.exe als Werkzeug zur Sicherheitsüberprüfung oder als potentiell unerwünschtes Programm ein und verhindern dessen Ausführung.[2]

Ports und Weiterentwicklungen

Chris Wysopal hat netcat auf Windows portiert. GNU Netcat ist eine komplette Reimplementierung und vollständig POSIX-kompatibel und wird von Giovanni Giacobbi betreut[3]. OpenBSD netcat ist eine weitere Reimplementierung, die aber nicht komplett kompatibel zum Ur-netcat ist, da die Syntax an OpenBSD Standards angepasst wurde (z. B. wird -p portnummer nicht unterstützt).[4] Andreas Bischoff hat die Windows-Version auf Windows CE (Pocket PC und Handheld PC) portiert.[5]

Cryptcat ist eine Weiterentwicklung von netcat die Verschlüsselung implementiert. Socat ist eine Reimplementation und kann außer TCP und UDP auch SCTP verwenden, über Proxyserver arbeiten und unterstützt ebenfalls Verschlüsselung.

Einzelnachweise

  1. Angemerkt sei, dass die Verwendung von inetd in dem Beispiel nicht notwendig wäre, eine (zweite) Netcat-Serverinstanz könnte die gleiche Aufgabe übernehmen
  2. Symantec: Signatur von netcat
  3. GNU Netcat – Projekthomepage
  4. http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/nc/ OpenBSD netcat
  5. http://www.dr-bischoff.de/wince/Andreas_WINCE_stuff.html#netcat

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Netcat — Developer(s) *Hobbit* Stable release 1.10 / March 20, 1996 Operating system UNIX …   Wikipedia

  • Netcat — En informatique, netcat est un utilitaire permettant d ouvrir des connexions réseau, que ce soit UDP ou TCP. Il est conçu pour être incorporé aisément dans un large panel d applications. En raison de sa polyvalence, netcat est aussi appelé le… …   Wikipédia en Français

  • Netcat — (NetCat) Тип сетевая утилита (TCP, UDP) Разработчик Hobbit* Написана на C Операционная система UNIX Последняя версия 0.7.1 (11 января 2004) Лицензия …   Википедия

  • Netcat — ? Información general Última versión estable 0.7.1 10 de enero de 2004 Género …   Wikipedia Español

  • netcat — En informatique, netcat est un utilitaire permettant d ouvrir des connexions réseau, que ce soit UDP ou TCP. Il est conçu pour être incorporé aisément dans un large panel d applications. En raison de sa polyvalence, netcat est aussi appelé le… …   Wikipédia en Français

  • NetCat CMS — NetCat Тип Система управления контентом Разработчик ООО «Нэткэт» Операционная система Кроссплатформенное программное обеспечение Последняя версия 5.0 (1 августа 2012) Лицензия …   Википедия

  • Netcat (logiciel) — netcat En informatique, netcat est un utilitaire permettant d ouvrir des connexions réseau, que ce soit UDP ou TCP. Il est conçu pour être incorporé aisément dans un large panel d applications. En raison de sa polyvalence, netcat est aussi appelé …   Wikipédia en Français

  • IT-Audit — Als IT Sicherheitsaudit (englisch IT Security Audit; von lateinisch audit: „er/sie hört“; sinngemäß: „er/sie überprüft“) werden in der Informationstechnik (IT) Maßnahmen zur Risiko und Schwachstellenanalyse (engl. Vulnerability Scan) eines IT… …   Deutsch Wikipedia

  • IT-Sicherheitsbeauftragter — Als IT Sicherheitsaudit (englisch IT Security Audit; von lateinisch audit: „er/sie hört“; sinngemäß: „er/sie überprüft“) werden in der Informationstechnik (IT) Maßnahmen zur Risiko und Schwachstellenanalyse (engl. Vulnerability Scan) eines IT… …   Deutsch Wikipedia

  • IT-Sicherheitsprüfung — Als IT Sicherheitsaudit (englisch IT Security Audit; von lateinisch audit: „er/sie hört“; sinngemäß: „er/sie überprüft“) werden in der Informationstechnik (IT) Maßnahmen zur Risiko und Schwachstellenanalyse (engl. Vulnerability Scan) eines IT… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”