Tipps und Tricks mit dem Befehl netcat unter Linux

Tipps und Tricks mit dem Befehl netcat unter Linux

NetCat ist ein vielseitiges Networking -Dienstprogramm, das zum Lesen von TCP- und UDP -Verbindungen an willkürlichen Ports verwendet werden kann (wie bei anderen Dienstprogrammen, die unter Linux verwendet werden, erfordern die Ports unter 1024 Root/Sudo -Berechtigungen). Standardmäßig verwendet NetCat TCP -Verbindungen, udp kann jedoch mit dem angegeben werden -u Flagge. NetCat kann sowohl als Server als auch als Client verwendet werden. Wenn als Server verwendet wird -l Flag wird verwendet, um auf eine Verbindung zuzuhören. Ähnlich wie beim CAT -Befehl kann NetCat Informationen von Stdin empfangen und an Stdout schreiben, wodurch es für Workflows mit Rohren und Umleitungen hervorragend ist. Der NC Der Befehl wird typischerweise verwendet, um Netcat für die Benutzerfreundlichkeit zu rufen.

In diesem Tutorial lernen Sie, wie man mit NetCat Folgendes macht:

  • Machen Sie eine HTTP -Anfrage, um eine Webseite zu erhalten
  • Chatten Sie mit Freunden über Maschinen hinweg
  • Dateien zwischen Maschinen kopieren
  • Port -Scan durchführen
  • Meldungen von NetCat in einem Webbrowser anzeigen
  • Erstellen und verbinden Sie eine Reverse Shell
Tipps und Tricks mit dem Befehl netcat unter Linux

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Verteilungsunabhängige
Software Netcat
Andere Root -Berechtigungen zur Verwendung von Ports unter 1024
Konventionen # - Linux -Befehle, die mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mithilfe von verwendet werden sollen sudo Befehl
$ - Linux -Befehle, die als regulärer nicht privilegierter Benutzer ausgeführt werden sollen

Greifen Sie auf einer Webseite

WARNUNG
NetCat -Verbindungen sind nicht verschlüsselt. Die folgenden Beispiele übertragen Daten im Clear. Verwenden Sie NETCAT nicht, um sensible Daten in nicht vertrauenswürdigen Netzwerken wie dem Internet und dem öffentlichen Wi-Fi zu übertragen. Wenn Sie Daten sicher übertragen müssen, sollten Sie OpenSSH in Betracht ziehen.

NETCAT kann verwendet werden, um willkürliche Verbindungen zu Netzwerkdiensten herzustellen. Infolgedessen kann es verwendet werden, um HTTP-Anforderungen an einen Webserver zu stellen, ähnlich wie ein Webbrowser. Lassen Sie uns die Indexseite von Google von Google schnappen.com.
Geben Sie die NC Befehl gefolgt von dem Gastgeber und das Hafen Sie möchten eine Verbindung zu einer Verbindung haben.

$ NC Google.com 80 

Lassen Sie uns nun die HTTP -Anfrage stellen. Geben Sie Folgendes ein oder kopieren/einfügen und drücken Sie die Eingabetaste zweimal.

Get /Index.HTML HTTP/1.1


Sie sollten Ausgabe ähnlich wie dieser Screenshot sehen.

Greifen Sie auf der Website mit NetCat

Plaudern

In diesem Beispiel geht davon aus, dass Sie 2 Computer im selben Netzwerk mit Hostnamen haben Host1 Und Host2. Diese Annahme wird auch in folgenden Beispielen erfolgen. So erstellen Sie eine NetCat -Hörverbindung auf Host1 Geben.

$ nc -lv 8888 

Dies hört für Verbindungen auf Port 8888 zu. Der -v Flag gibt die ausführliche Ausgabe an, die Ihnen weitere Informationen zu eingehenden Verbindungen erhalten.

Jetzt on Host2 eingeben:

$ NC HOST1 8888 

Sie werden feststellen, dass jeder in das Terminal auf Host1 eingegebene Text an das Terminal auf Host2 gesendet wird und umgekehrt. Dies kann als Adhoc -Chat zwischen zwei Benutzern im selben Netzwerk verwendet werden.

Datei Übertragung

NetCat kann verwendet werden, um eine Datei von einem Computer zu einem anderen zu kopieren. Nehmen wir an, Sie haben eine Datei namens NCNotes.txt, von dem Sie übertragen möchten Host1 Zu Host2

Geben Sie auf Host1 Folgendes ein, um die Datei zu erstellen und eine eingehende Verbindung anzuhören, um sie auf Port 2222 zu übertragen:

$ echo "Dies sind meine NetCat -Notizen"> NCNotes.txt $ nc -l 2222 < ncnotes.txt 

Geben Sie auf Host2 Folgendes ein, um die Datei zu kopieren/zu empfangen und sie dann in STDOut zu drucken, um zu überprüfen, ob die Dateiübertragung erfolgreich war.

$ nc host1 2222> ncnotes.txt $ cat ncnotes 

Was ist, wenn Sie einen gesamten Ordner übertragen möchten und nicht nur eine einzige Datei? NetCat ist nicht in der Lage, dies selbst zu tun, daher müssen wir den TAR -Befehl nutzen.

Geben Sie Folgendes auf Host1 ein, um einen mit fünf Dateien gefüllten Ordner zu erstellen, und erstellen Sie dann ein Archiv und leiten Sie ihn mit NetCAT über das Netzwerk ein.

$ mkdir Dateien; Berühren Sie Dateien/1… 5 $ tar -cvz -Dateien | NC -L 8888 

Geben Sie Folgendes ein Host2 Um den Ordner zu übertragen und zu überprüfen, ob er alle fünf Dateien enthält.

$ NC HOST1 8888 | tar -xvz $ ls Dateien 

Auf Host1 the -C Flag wird verwendet, um das Archiv zu erstellen, das in netcat geleitet wird, -v wird für die ausführliche Ausgabe verwendet, damit wir visuelles Feedback haben, mit dem wir wissen können, dass dies geschieht und -z wird verwendet, um das Archiv so zu komprimieren, dass die Netzwerkübertragung schneller ist. In unserem Beispiel macht die Komprimierung keinen großen Unterschied, da die Dateien Der Ordner ist mit leeren Dateien gefüllt, aber Sie möchten jedoch große Verzeichnisse/Dateien übertragen, daher ist es gut zu wissen. Auf Host2 the -X Flag wird verwendet, um das Archiv zu extrahieren, das von NetCat eingeflochten wird, -v ist für ausführliche Extraktion und ist -z ist das Archiv zu dekomprimieren.

Port -Scan

NetCat kann als rudimentärer Portscanner verwendet werden, indem Sie die verwenden -z Flagge.

Angenommen, Sie sind auf Host1 Und Sie möchten wissen, ob ein SSH -Server auf Host2 ausgeführt wird. Vorausgesetzt, es wird auf dem Standardport (22) ausgeführt und es gibt keine Firewall, die den Zugriff darauf blockiert, können Sie den folgenden Befehl verwenden, um festzustellen, ob der Dienst ausgeführt wird.

$ NC -ZV HOST2 22 

NetCat kann auch eine Reihe von Ports scannen, um festzustellen, welche, wenn eine von ihnen geöffnet ist. Dies kann verwendet werden, um zu schließen, welche Dienste diese Maschine ausführen. Angenommen, Sie sind auf Host2 und Sie möchten sehen, ob Ports zwischen irgendwelchen Ports 1 Und 1024 sind offen Host1; Sie können den folgenden Befehl verwenden.

$ NC -ZV HOST1 1-1024 

Je nachdem, welche Version von NetCat Sie in Ihrem System installiert haben. Wenn ersterer der Fall ist, ist die Ausgabe sehr leicht zu lesen. Wenn der letztere der Fall ist, kann sich die Ausgabe als schwierig erweisen, und der folgende Befehl sollte stattdessen verwendet werden, damit nur geöffnete Ports angezeigt werden.

$ NC -ZV HOST1 1-1024 2> & 1 | Grep gelang es 


Meldung im Browser anzeigen

An Host1 Gebe folgendes ein. Der -k Flag hält die Verbindung am Leben, damit sie von derselben Maschine oder anderen Maschinen wieder verbunden werden kann. Ohne diese Flagge Host1 Wird aufhören, nach mehr Verbindungen zu hören, sobald die erste Verbindung hergestellt wurde.

$ echo "hallo da" | NC -LKV 5555 

An Host2 einen Browser öffnen und navigieren zu Host1: 5555

Sie sollten die Wörter sehen Hallo im Browser angezeigt.

Reverse Shell

NETCAT kann auch verwendet werden, um eine Reverse Shell einzurichten, um einen Computer über das Netzwerk aus der Ferne zu verwalten. Dies geschieht mit dem -e Flagge. In diesem Beispiel möchten wir eine Verbindung zu einer Bash -Shell anstellen Host2 Um es aus zu verabreichen von Host1.

An Host1 eingeben:

$ nc -lv 6666 

An Host2 eingeben:

$ nc -v host1 6666 -e /bin /bash 

Jetzt on Host1 Geben Sie Folgendes ein und es wird sich herausstellen, dass wir einen Fernzugriff auf die Bash -Shell an haben Host2.

$ hostname $ whoami $ ls 

Sie sollten den Hostnamen für sehen Host2, der Benutzername des Benutzer, der initiiert wurde NC An Host2 und ihre Dateien. Viele Versionen von Netcat enthalten nicht die -e Option aufgrund ihres Missbrauchspotenzials. Erstellen einer Remote -Shell auf einer Maschine mit einer Version von NetCAT, in der die Option -e nicht enthalten ist Host2. Lösungen dafür gibt es für Bash, Python, Perl, PHP und mehr.

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Mastering -Bash -Skriptschleifen beherrschen
  • Dinge zu installieren auf Ubuntu 20.04
  • Ubuntu 20.04 Tricks und Dinge, die Sie vielleicht nicht wissen
  • Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 1
  • Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 3
  • Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 4
  • Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 2
  • Einführung in genannte Pipes auf Bash Shell
  • Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 5