Vyhledávání na webu

8 Příkaz Netcat (nc) s příklady


Netcat (nebo zkráceně nc) je jednoduchý, ale výkonný síťový nástroj příkazového řádku používaný k provádění všech operací v Linuxu souvisejících s TCP, UDP nebo UNIX-doménové sokety.

Netcat lze použít pro skenování portů, přesměrování portů jako posluchač portů (pro příchozí připojení); lze jej také použít k otevírání vzdálených připojení a mnoha dalších věcí. Kromě toho jej můžete použít jako zadní vrátka pro získání přístupu k cílovému serveru.

V tomto článku vysvětlíme použití příkazů Netcat na příkladech.

Jak nainstalovat a používat Netcat v Linuxu

Chcete-li do systému nainstalovat balíček netcat, použijte výchozího správce balíčků pro vaši distribuci Linuxu.

yum install nc                  [On CentOS/RHEL]
dnf install nc                  [On Fedora 22+ and RHEL 8]
sudo apt-get install Netcat     [On Debian/Ubuntu]

Po instalaci balíčku netcat můžete pokračovat dále a naučit se používat příkaz netcat v následujících příkladech.

Skenování portů

Netcat lze použít pro skenování portů: chcete-li zjistit, které porty jsou otevřené a na kterých běží služby na cílovém počítači. Může skenovat jeden nebo více nebo řadu otevřených portů.

Zde je příklad, volba -z nastavuje nc tak, aby jednoduše vyhledával naslouchající démony, aniž by jim ve skutečnosti posílal nějaká data. Volba -v umožňuje podrobný režim a -w určuje časový limit pro připojení, které nelze navázat.

nc -v -w 2 z 192.168.56.1 22     #scan a single port
OR
nc -v -w 2 z 192.168.56.1 22 80  #scan multiple ports
OR
nc -v -w 2 z 192.168.56.1 20-25  #scan range of ports

Přenos souborů mezi servery Linux

Netcat umožňuje přenášet soubory mezi dvěma počítači nebo servery se systémem Linux a oba tyto systémy musí mít nainstalovaný systém nc.

Chcete-li například zkopírovat soubor obrazu ISO z jednoho počítače do druhého a sledovat průběh přenosu (pomocí nástroje pv), spusťte následující příkaz na počítači odesílatele/serveru (kde soubor ISO existuje).

Toto spustí nc v režimu poslechu (příznak -l) na portu 3000.

tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso  | pv | nc -l -p 3000 -q 5

A na počítači příjemce/klienta spusťte následující příkaz pro získání souboru.

nc 192.168.1.4 3000 | pv | tar -zxf -

Vytvořte chatovací server příkazového řádku

Můžete také použít Netcat k okamžitému vytvoření jednoduchého serveru pro zasílání zpráv z příkazového řádku. Stejně jako v předchozím příkladu použití musí být nc nainstalován na obou systémech používaných pro chatovací místnost.

Na jednom systému spusťte následující příkaz a vytvořte chatovací server naslouchající na portu 5000.

nc -l -vv -p 5000

Na druhém systému spusťte následující příkaz ke spuštění konverzační relace na počítači, na kterém běží server pro zasílání zpráv.

nc 192.168.56.1 5000

Vytvořte základní webový server

Pomocí volby -l příkazu nc lze vytvořit základní, nezabezpečený webový server, který bude sloužit ke statickým webovým souborům pro účely učení. Chcete-li to demonstrovat, vytvořte soubor .html podle obrázku.

vim index.html

Přidejte do souboru následující řádky HTML.

<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                      <p>Serving this file using Netcat Basic HTTP server!</p>
        </body>
</html>

Uložte změny v souboru a ukončete.

Poté poskytněte výše uvedený soubor přes HTTP spuštěním následujícího příkazu, který umožní HTTP serveru běžet nepřetržitě.


while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done

Poté otevřete webový prohlížeč a můžete přistupovat k obsahu pomocí následující adresy.

http://localhost:8080
OR
http://SERVER_IP:8080

Upozorňujeme, že Netcat HTTP server můžete zastavit stisknutím [Ctrl+ C].

Odstraňování problémů s připojením k serveru Linux

Dalším užitečným využitím Netcat je řešení problémů s připojením k serveru. Zde můžete použít Netcat k ověření, jaká data server odesílá v reakci na příkazy vydané klientem.

Následující příkaz načte domovskou stránku example.com.

printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80

Výstup výše uvedeného příkazu obsahuje hlavičky odeslané webovým serverem, které lze použít pro účely odstraňování problémů.

Najděte službu běžící na portu

Pro získání bannerů portů můžete také použít Netcat. V tomto případě vám řekne, jaká služba běží za určitým portem. Chcete-li například zjistit, jaký typ služby běží za portem 22 na konkrétním serveru, spusťte následující příkaz (192.168.56.110 nahraďte IP adresou cílového serveru). Příznak -n znamená zakázání vyhledávání DNS nebo služeb.

nc -v -n 192.168.56.110 80

Vytvořte Stream Sockets

Netcat také podporuje vytváření soketů pro streamování domény UNIX. Následující příkaz vytvoří a naslouchá na soketu streamu domény UNIX.

nc -lU /var/tmp/mysocket &
ss -lpn | grep "/var/tmp/"

Vytvořte zadní vrátka

Netcat můžete také spustit jako zadní vrátka. To však vyžaduje více práce. Pokud je na cílovém serveru nainstalován Netcat, můžete jej použít k vytvoření zadních vrátek a získat vzdálený příkazový řádek.

Abyste mohli fungovat jako zadní vrátka, potřebujete Netcat, aby naslouchal na zvoleném portu (např. portu 3001) na cílovém serveru a poté se k tomuto portu můžete připojit ze svého počítače následovně.

Toto je příkaz určený ke spuštění na vzdáleném serveru, kde volba -d zakáže čtení ze stdin a -e specifikuje příkaz, který se má spustit na cílovém systému.

nc -L -p 3001 -d -e cmd.exe 

V neposlední řadě lze Netcat použít jako proxy pro různé služby/protokoly včetně HTTP, SSH a mnoha dalších. Více informací naleznete na jeho manuálové stránce.

man nc

V tomto článku jsme vysvětlili 8 praktických příkladů použití příkazů Netcat. Pokud znáte nějaké další praktické případy použití, podělte se s námi prostřednictvím formuláře pro zpětnou vazbu níže. Můžete také položit otázku.