ncat
command je součástí sady nmap a byl napsán speciálně pro ni. Je pravda, že ncat
má tolik použití jako slavný švýcarský armádní nůž, ale může být stejně nebezpečný při nesprávném použití nebo při použití zlomyslnými herci. Jednou z jeho silných stránek je ncat
může být klient i server. Tento článek se zaměřuje na jeden aspekt tohoto vztahu. Ukážu vám, jak otevřít naslouchací bash shell pomocí ncat
ke kterému má kdokoli přístup pomocí ncat
jako klient. V mém článku Odstraňování problémů s Linuxem:Nastavení TCP listeneru s ncat popisuji, jak nastavit ncat
jako posluchač nebo server, který naslouchá na konkrétním portu. Tento příklad je podobný, ale myslím, že na vás udělá dojem naprostá síla, kterou ncat
dává ti. Také by vás to mělo vyděsit – hodně.
Nainstalovat ncat
Zkontrolujte svůj systém pod /usr/bin
nejprve se podívejte, zda potřebujete nainstalovat ncat
. Obvykle je součástí jakékoli distribuce založené na Linuxu Red Hat Enterprise. Pokud zjistíte, že jej potřebujete nainstalovat, název balíčku je nmap-ncat
. Buď můžete nainstalovat ncat
nebo si nainstalujte nmap
a nmap-ncat
balíček se nainstaluje jako závislost.
Použijte ncat
Nezadávejte ncat
příkazy jako root, zejména pro příklady v tomto článku. Pokud tak učiníte, umožníte komukoli mít přístup root k vašemu systému bez ověřování. Každý uživatel může vydat ncat
příkazy, což je jedna z jeho vlastností i jedno z jeho nebezpečí. Navrhuji, abyste si vytvořili servisní účet a pracovali s ncat
pomocí toho účtu. Věřte mi, slyšel jsem každý argument pro a proti servisním účtům, ale jakmile uvidíte ncat
v akci budete chtít používat servisní účet pro interakce s ním.
Doručit bash shell
Toto je ta zábavná (a nebezpečná) část používání ncat
. Přepněte uživatele na svůj nový servisní účet. Své jsem pojmenoval stydlivý .
[ken@server1 ~] $ su - bashful
Password:
[bashful@server1 ~] $
Nyní, když jste přepnuli uživatelské účty, je čas otevřít tento shell. Poskytuje neověřený přístup k vašemu systému přes většinou interaktivní shell. Jakmile se připojíte, uvidíte, co myslím pod pojmem „převážně“ interaktivní. Tento další příkaz používá ncat
spustit bash shell, který naslouchá na TCP portu. V tomto příkladu používám port 9922 na server1 (192.168.1.50). -l
možnost nastaví naslouchací port. -k
volba je příznak keepalive, který udržuje soket. Pokud nevydáte -k
možnost, pak zásuvka po odpojení relace zanikne a nelze k ní vytvořit žádná další připojení.
[bashful@server1 ~] $ ncat -e "/bin/bash" -l 9922 -k &
-e
volba provede příkaz v uvozovkách, což je v našem případě bash shell (/bin/bash
). Používám ampersand (&
) za příkazem k uvolnění mého promptu a vložte ncat
posluchač do režimu na pozadí. Pokud nepoužijete &
, pak se váš terminál „zasekne“ a nedovolí vám s ním komunikovat. Pokud to pro vás není problém, nechte to tak, jak je.
Vydání netstat
příkaz ukazuje, že posluchač je na svém místě.
[bashful@server1 ~]$ netstat -an |grep 9922
tcp 0 0 0.0.0.0:9922 0.0.0.0:* LISTEN
tcp6 0 0 :::9922 :::* LISTEN
[bashful@server1 ~]$
Chcete-li se připojit k naslouchajícímu portu ze vzdáleného systému, musíte také otevřít výjimku v hostitelském firewallu pro port 9922.
[ken@server1 ~]$ sudo firewall-cmd --add-port=9922/tcp
success
Vidíte zde failsafe? Je to výjimka brány firewall, kterou jsem musel vytvořit pomocí svého účtu a sudo
. Pokud máte spuštěný hostitelský firewall nebo IPTables (a měli byste je mít), pak tato služba nebude fungovat, dokud tento port nepovolíte, což znamená, že žádný běžný uživatel nemůže tuto službu zprovoznit bez administrativního přístupu. Jinak by uživatelé vzdělaní v ncat otevírali porty všude a přiváděli vás k šílenství. Nemluvě o bezpečnostních problémech, které byste měli. Odbočuji.
Přístup k shellu ze vzdáleného systému
Nyní můžete přistupovat k bash shellu ze vzdáleného systému na portu 9922.
[ken@server2 ~]$ ncat 192.168.1.50 9922
Ze serveru2 , zadejte ncat
příkaz s cílovou IP adresou server1 a naslouchací port 9922. Jakmile se připojíte, nic se nestane, nebo tomu alespoň můžete věřit, protože se zdá, že se terminál nějak zasekává. Ale to, co se ve skutečnosti děje, je, že komunikujete s nezpracovaným socketem, a proto neuvidíte výzvu. Dokažte to vydáním who
příkaz.
[ken@server2 ~]$ ncat 192.168.1.50 9922
who
ken pts/0 2020-08-26 13:39 (server2)
Můžete vydat jakýkoli příkaz, který si přejete, aby se uživatel stydlil má přístup k. Pokud zadáte příkaz, který vyžaduje přístup root, pravděpodobně neuvidíte odpověď. Zdá se, že terminál zůstane v „zavěšeném“ stavu. Vaše odpověď se skutečně objeví na terminálu server1 . Pokud například zadáte následující příkaz:
firewall-cmd --list-all
Na server2 nevidíte nic obrazovka 's. Na server1 's se objeví následující:
[bashful@server1 ~]$ Authorization failed.
Make sure polkit agent is running or run the application as superuser.
Chcete-li se odpojit od serveru2 's tajný shell, stiskněte Ctrl+C kombinaci a vrátí se místní výzva.
V práci to nezkoušejte
Jen tak pro zábavu, nebo pokud mi nevěříte, zabijte aktuální ncat
proces pomocí vašeho servisního účtu nebo jako root. Poté znovu zadejte stejný příkaz jako uživatel root, abyste provedli bash shell jako root. Znovu se připojte ze vzdáleného systému a znovu zadejte příkaz brány firewall. Tentokrát uvidíte výsledky. Jako uživatel root můžete zadat jakýkoli příkaz, což je důvod, proč nikdy nechcete nastavit tento typ služby jako uživatel root.
A nyní vidíte skutečné nebezpečí používání ncat
jako kořen. Zlomyslní aktéři nastaví takový shell na tajném portu, který projde skenováním portu, a budou mít úplný root přístup bez ověření.
Sbalit
Velmi užitečný a potenciálně velmi nebezpečný ncat
velení je váš nejlepší přítel a váš nejhorší nepřítel. Jako každý jiný nástroj v kůlně nemá žádný jiný záměr, než jaký mu dáte. Měli byste si prostudovat ncat
příkaz, jeho použití a omezení ve vašem prostředí. Nezapomeňte zabít všechny ncat
proces, který nechcete nepřetržitě spouštět, jakmile s ním skončíte, a odstraňte výjimku brány firewall, která umožňuje jeho přístup. Také si pamatujte, že s velkou mocí přichází schopnost opravdu věci podělat.
[ Chcete si vyzkoušet své schopnosti správce systému? Proveďte hodnocení dovedností ještě dnes. ]