Netcat (oder nc
) ist ein Befehlszeilenprogramm, das Daten über Netzwerkverbindungen liest und schreibt, mit den TCP-oder UDP-Protokollen. Es ist eines der mächtigsten Werkzeuge im Arsenal der Netzwerk-und Systemadministratoren und gilt als Schweizer Taschenmesser für Netzwerkwerkzeuge.
Netcat ist plattformübergreifend und für Linux, macOS, Windows und BSD verfügbar. Sie können Netcat verwenden, um Netzwerkverbindungen zu debuggen und zu überwachen, nach offenen Ports zu suchen, Daten als Proxy zu übertragen und vieles mehr.,
Das Netcat-Paket ist auf macOS und gängigen Linux-Distributionen wie Ubuntu, Debian oder CentOS vorinstalliert.
Netcat Syntax #
Die grundlegendste Syntax des Netcat-Dienstprogramms hat die folgende Form:
nc host port
Unter Ubuntu können Sie entweder netcat
oder nc
verwenden. Sie sind beide Symlinks zur OpenBSD-Version von Netcat.
Standardmäßig versucht Netcat, eine TCP-Verbindung zum angegebenen Host und Port herzustellen., Wenn Sie eine UDP-Verbindung herstellen möchten, verwenden Sie die Option -u
:
nc -u host port
Port Scanning #
Das Scannen von Ports ist eine der häufigsten Anwendungen für Netcat. Sie können einen einzelnen Port oder einen Portbereich scannen.,
Um beispielsweise nach offenen Ports im Bereich von 20-80 zu suchen, verwenden Sie den folgenden Befehl:
nc -z -v 10.10.8.8 20-80
Die -z
– Option teilt nc
mit, nur nach offenen Ports zu suchen, ohne Daten an sie zu senden, und die -v
– Option, um mehr ausführliche Informationen.
Die Ausgabe sieht ungefähr so aus:
Wenn Sie nur die Zeilen mit den geöffneten Ports drucken möchten, können Sie die Ergebnisse mit dem Befehl grep
filtern.,
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port succeeded!Connection to 10.10.8.8 80 port succeeded!
Sie können auch Netcat verwenden, um die Serversoftware und ihre Version zu finden. Wenn Sie beispielsweise einen Befehl „EXIT“ an den Server auf dem Standard-SSH-Port 22 senden :
echo "EXIT" | nc 10.10.8.8 22
Die Ausgabe sieht ungefähr so aus:
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4Protocol mismatch.
Um nach UDP-Ports zu suchen, fügen Sie dem Befehl einfach die Option -u
hinzu, wie unten gezeigt:
nc -z -v -u 10.10.8.8 20-80
Normalerweise ist Nmap ein besseres Werkzeug als Netcat für komplexe Port-Scans.,
Senden von Dateien über Netcat #
Netcat kann verwendet werden, um Daten von einem Host auf einen anderen zu übertragen, indem ein grundlegendes Client / Server-Modell erstellt wird.
Dies funktioniert, indem der Netcat so eingestellt wird, dass er einen bestimmten Port (mit der Option -l
) auf dem empfangenden Host abhört und dann eine reguläre TCP-Verbindung vom anderen Host herstellt und sendet die Datei darüber.,
Beim Empfang führen Sie den folgenden Befehl aus, der den Port 5555 für die eingehende Verbindung öffnet und die Ausgabe in die Datei umleitet:
nc -l 5555 > file_name
Vom sendenden Host Stellen Sie eine Verbindung zum empfangenden Host her und senden Sie die Datei:
nc receiving.host.com 5555 < file_name
Um ein Verzeichnis zu übertragen, können Sie tar
verwenden, um das Verzeichnis host und das Archiv auf dem Ziel-Host zu extrahieren.
Stellen Sie auf dem empfangenden Host das Netcat-Tool so ein, dass es auf Port 5555 auf eine eingehende Verbindung wartet., Die eingehenden Daten werden an den Befehl tar
weitergeleitet, der das Archiv extrahiert:
nc -l 5555 | tar xzvf -
Auf dem sendenden Host des Verzeichnisses und senden Sie die Daten, indem Sie eine Verbindung zum abhörenden herstellen nc
Prozess auf dem empfangenden Host:
tar czvf - /path/to/dir | nc receiving.host.com 5555
Sie können den Übertragungsfortschritt auf beiden enden. Geben Sie nach Abschluss ein, um die Verbindung zu schließen.
Erstellen eines einfachen Chatservers #
Das Verfahren zum Erstellen eines Online-Chats zwischen zwei oder mehr Hosts ist dasselbe wie beim Übertragen von Dateien.,
Auf dem ersten Host Starten Sie einen Netcat-Prozess zum Abhören von Port 5555:
Führen Sie vom zweiten Host aus den folgenden Befehl aus, um eine Verbindung zum Abhörport herzustellen:
Wenn Sie nun eine Nachricht eingeben und ENTER
drücken, wird diese auf beiden Hosts angezeigt.
Um die Verbindung zu schließen, geben Sie ein.
Ausführen einer HTTP-Anforderung #
Obwohl es viel bessere Tools für HTTP-Anforderungen gibt , wie z. B. curl
, können Sie auch Netcat verwenden, um verschiedene Anforderungen an Remote-Server zu senden.,
Um beispielsweise die Netcat-Manpage von der OpenBSD-Website abzurufen, geben Sie Folgendes ein:
printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80
Die vollständige Antwort, einschließlich der HTTP-Header und des HTML-Codes, wird im Terminal gedruckt.
Fazit #
In diesem Tutorial haben Sie gelernt, wie Sie mit dem Dienstprogramm Netcat TCP-und UDP-Verbindungen herstellen und testen.
Weitere Informationen finden Sie auf der Netcat-Manpage und informieren Sie sich über alle anderen leistungsstarken Optionen des Netcat-Befehls.
Leave a Reply