Android

Netcat (nc) -Befehl mit Beispielen

DVWA - Command Injection

DVWA - Command Injection

Inhaltsverzeichnis:

Anonim

Netcat (oder nc) ist ein Befehlszeilendienstprogramm, das Daten über Netzwerkverbindungen mit dem TCP- oder UDP-Protokoll liest und schreibt. 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. Mit Netcat können Sie Netzwerkverbindungen debuggen und überwachen, nach offenen Ports suchen, Daten übertragen, als Proxy fungieren und vieles mehr. Das Netcat-Paket ist auf MacOS und gängigen Linux-Distributionen wie Ubuntu 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 . Sie sind beide symbolische Links 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 bis 80 zu suchen, verwenden Sie den folgenden Befehl:

nc -z -v 10.10.8.8 20-80

Die Option -z weist nc an, nur nach offenen Ports zu suchen, ohne Daten an diese zu senden, und die Option -v , um ausführlichere Informationen bereitzustellen.

Die Ausgabe sieht ungefähr so ​​aus:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded! nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused… nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused Connection to 10.10.8.8 80 port succeeded!

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 Netcat auch verwenden, um die Serversoftware und ihre Version zu ermitteln. Wenn Sie beispielsweise einen EXIT-Befehl an den Server über den 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-4 Protocol mismatch.

Um nach UDP-Ports zu suchen, fügen Sie dem Befehl einfach die Option -u (siehe unten):

nc -z -v -u 10.10.8.8 20-80

In den meisten Situationen ist Nmap ein besseres Tool als Netcat für das Scannen komplexer Ports.

Senden von Dateien über Netcat

Mit Netcat können Daten von einem Host auf einen anderen übertragen werden, indem ein grundlegendes Client / Server-Modell erstellt wird.

Dies funktioniert, indem Netcat so eingestellt wird, dass es einen bestimmten Port (mit der Option -l ) auf dem empfangenden Host überwacht und dann eine reguläre TCP-Verbindung vom anderen Host herstellt und die Datei über diesen sendet.

Führen Sie beim Empfang den folgenden Befehl aus, der den Port 5555 für eingehende Verbindungen öffnet und die Ausgabe in die Datei umleitet:

nc -l 5555 > file_name

Stellen Sie vom sendenden Host 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 auf dem Quellhost zu archivieren und das Archiv auf dem Zielhost zu extrahieren.

Stellen Sie auf dem empfangenden Host das Netcat-Tool so ein, dass es auf eine eingehende Verbindung an Port 5555 wartet. Die eingehenden Daten werden an den Befehl tar weitergeleitet, der das Archiv extrahiert:

nc -l 5555 | tar xzvf -

Packen Sie auf dem sendenden Host das Verzeichnis und senden Sie die Daten, indem Sie auf dem empfangenden Host eine Verbindung zum empfangenden nc Prozess herstellen:

tar czvf - /path/to/dir | nc receiving.host.com 5555

Sie können den Übertragungsfortschritt an beiden Enden verfolgen. Wenn Sie fertig sind, CTRL+C , um die Verbindung zu schließen.

Erstellen eines einfachen Chat-Servers

Das Verfahren zum Erstellen eines Online-Chats zwischen zwei oder mehr Hosts ist dasselbe wie beim Übertragen von Dateien.

Starten Sie auf dem ersten Host einen Netcat-Prozess, um Port 5555 abzuhören:

nc -l 5555

Führen Sie auf dem zweiten Host den folgenden Befehl aus, um eine Verbindung zum Überwachungsport herzustellen:

nc first.host.com 5555

Wenn Sie nun eine Nachricht ENTER und die ENTER drücken, wird diese auf beiden Hosts angezeigt.

CTRL+C um die Verbindung zu schließen.

Durchführen einer HTTP-Anfrage

Es gibt zwar viel bessere Tools für HTTP-Anforderungen wie Curl, Sie können jedoch auch Netcat verwenden, um verschiedene Anforderungen an Remoteserver 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 mit den HTTP-Headern und dem HTML-Code 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. Dort finden Sie Informationen zu allen anderen leistungsstarken Optionen des Netcat-Befehls.

Netcat-Terminal