Der Befehl Netcat (nc) ist ein leistungsstarkes Tool zum Analysieren von Netzwerkverbindungen, zum Scannen nach offenen Ports, zum Übertragen von Daten usw. Es ist ein Netzwerkdienstprogramm zum Lesen und Schreiben in Netzwerkverbindungen unter Verwendung von TCP- oder UDP-Protokollen.
Wie installiere ich netcat
Es ist ein plattformübergreifendes Tool und für Linux, macOS, Windows und BSD verfügbar. Wir werden netcat auf einem Ubuntu 18.04-Rechner mit apt install
installieren oder aus dem Quellcode kompilieren.
Die Installation mit apt ist ziemlich einfach, Sie müssen nur den folgenden Befehl im Terminal eingeben:
sudo apt install netcat
Auf CentOS 8
ncat kann mit dem nmap-Paket auf RHEL 8/CentOS 8 installiert werden. Verwenden Sie den dnf-Befehl wie unten beschrieben
sudo dnf install nmap
Wie installiere ich netcat aus dem Quellcode
Das Kompilieren von netcat aus dem Quellcode ist nicht so einfach wie die Installation über apt install
, aber wenn Sie die folgenden Schritte befolgen, können Sie es ganz einfach installieren.
Laden Sie den Quellcode von der netcat-Website mit dem folgenden Befehl herunter
wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz
Extrahieren Sie das neu heruntergeladene Archiv. Dazu können Sie Folgendes ausführen:
tar -xzvf netcat-0.7.1.tar.gz
cd
in das Verzeichnis, das den Quellcode des Pakets enthält, und geben Sie ./configure
ein um das Paket für Ihr System zu konfigurieren.
cd netcat-0.7.1
./configure
Wenn Sie beim Ausführen des Befehls ./configure eine Fehlermeldung wie diese erhalten – „kein akzeptabler C-Compiler in $PATH gefunden“, vergewissern Sie sich, dass Sie den gcc-Compiler installiert haben. Um es zu installieren, geben Sie den folgenden Befehl ein:
apt-get install build-essential
Ausführen von configure
dauert etwas.
Sobald die Konfiguration erfolgreich abgeschlossen wurde, führen Sie Folgendes aus:
sudo make
und
sudo make install
Sie können die Programmbinärdateien und Objektdateien aus dem Quellcodeverzeichnis entfernen, indem Sie make clean
eingeben . Um auch die Dateien zu entfernen, die configure
erstellt, führen Sie make distclean
aus Befehl.
Netcat-Beispiele
Bevor Sie beginnen, einige Netcat-Befehle zu untersuchen, ist es wichtig zu wissen, dass Sie Root-Rechte benötigen, wenn Sie mit nc an bekannte Ports (0-1023) binden. Andernfalls können Sie nc als normaler Benutzer ausführen.
1) Testen Sie, ob ein bestimmter TCP-Port eines entfernten Hosts offen ist
nc -vn 192.168.40.146 2424
Ausgabe, wenn der Port 2424 auf dem Remote-Server geschlossen ist
nc: connect to 192.168.40.146 port 2424 (tcp) failed: Connection refused
Ausgabe, wenn der Port auf dem Remote-Server geöffnet ist (z. B. Port 22)
Connection to 192.168.40.146 22 port [tcp/*] succeeded!
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
2) TCP-Port-Scannen auf einem Remote-Host durchführen
Der folgende Befehl überprüft die Ports von 20 bis 25 auf dem Remote-Host und gibt das Ergebnis aus.
nc -vnz -w 1 192.168.40.146 20-25
Die Ausgabe sieht so aus
nc: connect to 192.168.40.146 port 20 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 21 (tcp) failed: Connection refused
Connection to 192.168.40.146 22 port [tcp/*] succeeded!
nc: connect to 192.168.40.146 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 24 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 25 (tcp) failed: Connection refused
3) Führen Sie einen UDP-Port-Scan auf einem Remote-Host durch
nc -vnzu 192.168.40.146 1-65535
Die Ausgabe zeigt nur die Ports, die UDP-Verbindungen zulassen.
Connection to 192.168.40.146 2424 port [udp/*] succeeded!
Connection to 192.168.40.146 12354 port [udp/*] succeeded!
4) Senden Sie ein Test-UDP-Paket an einen entfernten Host
echo -n "udp test" | nc -u -w1 192.168.40.146 2424
Der obige Befehl sendet ein Test-UDP-Paket mit einer Zeitüberschreitung von 1 Sekunde an einen Remote-Host an Port 2424
5) Kopieren Sie eine Datei (z. B. test.txt) von einem Host auf einen anderen
Führen Sie auf dem Empfängerhost (in meinem Fall 192.168.40.146) Folgendes aus:
nc -lp 2424 > test.txt
Führen Sie auf dem Absenderhost (192.168.40.144) den folgenden Befehl aus:
nc 192.168.40.146 2424 < test.txt
Dadurch wird die Datei test.txt über den Port 2424 vom Sender-Host zum Empfänger-Host kopiert. Stellen Sie sicher, dass Sie eingehende Verbindungen auf Port 2424 auf dem Empfängerhost zulassen.
6) Übertrage ein ganzes Verzeichnis (einschließlich seines Inhalts) von einem Host auf einen anderen
Führen Sie auf dem Empfängerhost Folgendes aus:
nc -l 2424 | tar xvf -
Führen Sie auf dem Absenderhost den folgenden Befehl aus:
tar cvf - /path/to/dir | nc 192.168.40.146 2424
7) Erstellen Sie ein komprimiertes Backup der Festplatte (z. B. /dev/sdc) auf einem Remote-Host
Führen Sie auf dem Remote-Host Folgendes aus:
nc -lp 2424 | sudo dd of=/path/to/image.img.gz
Führen Sie auf dem lokalen Host den folgenden Befehl aus:
dd if=/dev/sdc | gzip -c | nc 192.168.40.146 2424
8) Wiederherstellen einer Festplatte (z. B. /dev/sdc) von einem komprimierten Disk-Image, das auf einem Remote-Host gespeichert ist
Führen Sie auf dem lokalen Host Folgendes aus:
nc -lp 2424 | gunzip -c | sudo dd of=/dev/sdc
Führen Sie auf dem Remote-Host den folgenden Befehl aus:
cat /path/to/image.img.gz | nc 192.168.40.144 2424
9) Ausführen eines unsicheren Online-Chats zwischen zwei Hosts
Führen Sie auf einem Host (z. B. 192.168.40.144) den folgenden Befehl aus:
nc -lp 2424
Führen Sie auf einem anderen Host (z. B. 192.168.40.146) den folgenden Befehl aus:
nc 192.168.40.144 2424
Nachdem Sie diese Befehle ausgeführt haben, wird alles, was Sie in beide Terminals eingeben, auf beiden Host-Rechnern angezeigt.
10) Führen Sie einen Webserver mit einer statischen Webseite aus
Führen Sie den folgenden Befehl auf dem lokalen Host (z. B. 192.168.40.144) aus, um einen Webserver zu starten, der test.html auf Port 80 bereitstellt. Beachten Sie, dass Sie mit sudo-Berechtigungen ausführen müssen, da sich 80 im Bereich bekannter Ports (1-1023)
Öffnen Sie nun
Sie können den folgenden Befehl verwenden, um zuzulassen, dass nc IPv6-Adressen verwendet, wenn ein TCP-Port überwacht wird.
Überprüfen Sie, ob es mit dem folgenden Befehl funktioniert
Die Ausgabe sieht so aus
Auf einem Videoserver (192.168.40.144):
Auf einem Client-Host (192.168.40.146):
NC 192.168.40.144 2424 | mplayer -vo x11 -cache 3000 -
Wie Sie sehen können, ist netcat ein großartiges Tool für TCP/IP-Netzwerke und eines der beliebtesten Tools von Systemadministratoren, wenn es um netzwerkbezogene Fehlersuche und Experimente geht. Aus diesem Grund werden viele Linux-Distributionen mit vorinstalliertem Netcat ausgeliefert.while true; do sudo nc -lp 80 < test.html; done
http://192.168.40.144/test.html
von einem anderen Host, um darauf zuzugreifen.11) Überwachen Sie einen TCP-Port mit einer IPv6-Adresse
nc -6 -l 2424
sudo netstat -nap | grep 2424
tcp6 0 0 :::2424 :::* LISTEN 15665/nc
12) Streamen Sie eine Videodatei von einem Server, damit der Client das gestreamte Video mit einem Videoplayer (z. B. mplayer) ansehen kann
cat sample_video.avi | nc -l 2424
Lesen Sie auch: