Příkaz Netcat (nc) je výkonný nástroj pro analýzu síťových připojení, skenování otevřených portů, přenos dat atd. Jedná se o síťový nástroj pro čtení a zápis do síťových připojení pomocí protokolů TCP nebo UDP.
Jak nainstalovat netcat
Jedná se o multiplatformní nástroj a je k dispozici pro Linux, macOS, Windows a BSD. Chystáme se nainstalovat netcat na stroj Ubuntu 18.04 pomocí apt install
nebo kompilací ze zdrojového kódu.
Instalace pomocí apt je docela jednoduchá, stačí do terminálu napsat následující příkaz:
sudo apt install netcat
V systému CentOS 8
Ncat lze nainstalovat s balíčkem nmap na RHEL 8/CentOS 8. Použijte příkaz dnf, jak je uvedeno níže
sudo dnf install nmap
Jak nainstalovat netcat ze zdrojového kódu
Kompilace netcatu ze zdrojového kódu není tak snadná jako instalace pomocí apt install
, ale pokud budete postupovat podle níže uvedených kroků, můžete jej snadno nainstalovat.
Stáhněte si zdrojový kód z webu netcat pomocí následujícího příkazu
wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz
Rozbalte nově stažený archiv. Chcete-li to provést, můžete spustit:
tar -xzvf netcat-0.7.1.tar.gz
cd
do adresáře obsahujícího zdrojový kód balíčku a napište ./configure
pro konfiguraci balíčku pro váš systém.
cd netcat-0.7.1
./configure
Pokud se vám při spuštění příkazu ./configure zobrazuje chybová zpráva - "v $PATH nebyl nalezen žádný přijatelný kompilátor C", ujistěte se, že máte nainstalovaný kompilátor gcc. Chcete-li jej nainstalovat, zadejte následující příkaz:
apt-get install build-essential
Spuštění configure
chvíli to trvá.
Po úspěšném dokončení konfigurace spusťte:
sudo make
a
sudo make install
Binární soubory programu a objektové soubory můžete odstranit z adresáře zdrojového kódu zadáním make clean
. Chcete-li také odstranit soubory, které configure
vytvořeno, spusťte make distclean
příkaz.
Příklady Netcat
Než začnete prozkoumávat některé příkazy netcat, je důležité vědět, že pokud se vážete na známé porty (0-1023) pomocí nc, potřebujete oprávnění root. Jinak můžete spustit nc jako normální uživatel.
1) Otestujte, zda je otevřený konkrétní port TCP vzdáleného hostitele
nc -vn 192.168.40.146 2424
Výstup, pokud je port 2424 na vzdáleném serveru uzavřen
nc: connect to 192.168.40.146 port 2424 (tcp) failed: Connection refused
Výstup, pokud je otevřen port na vzdáleném serveru (např. 22 port)
Connection to 192.168.40.146 22 port [tcp/*] succeeded!
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
2) Proveďte skenování portu TCP proti vzdálenému hostiteli
Níže uvedený příkaz zkontroluje porty od 20 do 25 na vzdáleném hostiteli a vytiskne výsledek.
nc -vnz -w 1 192.168.40.146 20-25
Výstup bude vypadat takto
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) Proveďte skenování portů UDP proti vzdálenému hostiteli
nc -vnzu 192.168.40.146 1-65535
Výstup zobrazí pouze porty, které umožňují připojení udp.
Connection to 192.168.40.146 2424 port [udp/*] succeeded!
Connection to 192.168.40.146 12354 port [udp/*] succeeded!
4) Odešlete testovací paket UDP vzdálenému hostiteli
echo -n "udp test" | nc -u -w1 192.168.40.146 2424
Výše uvedený příkaz odešle testovací paket UDP s časovým limitem 1 sekundy vzdálenému hostiteli na portu 2424
5) Zkopírujte soubor (např. test.txt) z jednoho hostitele na druhého
Na hostiteli přijímače (v mém případě 192.168.40.146) spusťte:
nc -lp 2424 > test.txt
Na hostiteli odesílatele (192.168.40.144) spusťte následující příkaz:
nc 192.168.40.146 2424 < test.txt
Tím se zkopíruje soubor test.txt z hostitele odesílatele do hostitele přijímače přes port 2424. ujistěte se, že povolíte příchozí připojení na portu 2424 na hostiteli přijímače.
6) Přeneste celý adresář (včetně jeho obsahu) z jednoho hostitele na druhého
Na hostiteli přijímače spusťte:
nc -l 2424 | tar xvf -
Na hostiteli odesílatele spusťte následující příkaz:
tar cvf - /path/to/dir | nc 192.168.40.146 2424
7) Vytvořte komprimovanou zálohu pevného disku (např. /dev/sdc) na vzdáleném hostiteli
Na vzdáleném hostiteli spusťte:
nc -lp 2424 | sudo dd of=/path/to/image.img.gz
Na místním hostiteli spusťte následující příkaz:
dd if=/dev/sdc | gzip -c | nc 192.168.40.146 2424
8) Obnovte pevný disk (např. /dev/sdc) z komprimovaného obrazu disku uloženého ve vzdáleném hostiteli
Na místním hostiteli spusťte:
nc -lp 2424 | gunzip -c | sudo dd of=/dev/sdc
Na vzdáleném hostiteli spusťte následující příkaz:
cat /path/to/image.img.gz | nc 192.168.40.144 2424
9) Provozujte nezabezpečený online chat mezi dvěma hostiteli
Na jednom hostiteli (např. 192.168.40.144) spusťte níže uvedený příkaz:
nc -lp 2424
Na jiném hostiteli (např. 192.168.40.146) spusťte následující příkaz:
nc 192.168.40.144 2424
Po spuštění těchto příkazů bude vše napsané v obou terminálech vidět na obou hostitelských počítačích.
10) Spusťte webový server se statickou webovou stránkou
Spusťte níže uvedený příkaz na místním hostiteli (např. 192.168.40.144) a spusťte webový server, který obsluhuje test.html na portu 80. Pamatujte, že musíte spouštět s právy sudo, protože 80 je v rozsahu dobře známých portů (1-1023)
while true; do sudo nc -lp 80 < test.html; done
Nyní otevřete http://192.168.40.144/test.html
z jiného hostitele, abyste k němu měli přístup.
11) Poslouchejte na portu TCP pomocí adresy IPv6
Následující příkaz můžete použít k povolení nc používat IPv6 adresu při naslouchání na TCP portu.
nc -6 -l 2424
Zkontrolujte, zda funguje pomocí příkazu níže
sudo netstat -nap | grep 2424
Výstup bude vypadat takto
tcp6 0 0 :::2424 :::* LISTEN 15665/nc
12) Streamujte soubor videa ze serveru, aby klient mohl sledovat streamované video pomocí přehrávače videa (např. mplayer)
Na videoserveru (192.168.40.144):
cat sample_video.avi | nc -l 2424
Na hostitelském počítači klienta (192.168.40.146):
nc 192.168.40.144 2424 | mplayer -vo x11 -cache 3000 -
Přečtěte si také:
- Jak používat Linux Netcat Command jako Port Scanner
- Jak vytvořit jednoduchý chat s netcat v Linuxu
Jak můžete vidět, netcat je skvělý nástroj pro TCP/IP sítě a je to jeden z nejoblíbenějších nástrojů systémových administrátorů, pokud jde o řešení problémů se sítí a experimentování. To je důvod, proč je mnoho linuxových distribucí dodáváno s předinstalovaným netcat.