Penetrationstests, Teil 3: RATs und Reverse-Shells

pentest3

Im zweiten Teil unserer Serie haben wir uns damit beschäftigt wie man einen Windows 2008-Server hackt und einen Remote-Access-Trojaner (RAT) injiziert. Mit einem Blick auf einige grundlegende Tricks und Techniken, die Hacker einsetzen, wenn es ihnen gelungen ist, in ein System einzudringen, setzen wir die Pentest-Experimente fort.

Die Umgebung

Die erste Aufgabe eines Hackers besteht darin, die Systemumgebung eines Opfers genauer zu erforschen. Denn der RAT läuft auf einem Remote-Rechner, und die einzige Information, die der Hacker hat, ist eine öffentliche IP-Adresse.

Aus praktischen Gründen ist es hilfreich, zu wissen, welche Computer mit dem Zielsystem verbunden sind. Je mehr Ziele entdeckt und ausgewertet werden, desto größer in der Regel die Ausbeute an sensiblen Daten.

Zunächst wird ein Angreifer sich einfach die ARP-Tabellen ansehen. Das Address Resolution Protocol (ARP) wird eingesetzt, um die zu IP-Adressen zugehörigen MAC-Adressen zu ermitteln. Im internen Netzwerk bewahren Rechner diese Tabellen auf damit Pakete im LAN an die richtige Low-Level-Adresse gesendet werden.

arp-list

Diese Tabellen lassen sich abrufen, indem man in Windows (oder Linux) arp-a in die Befehlszeile eingibt. Das können Sie leicht selbst nachvollziehen.

In unserem Beispiel haben wir den arp-Befehl über die Netbus-RAT gesendet und uns die Ergebnisse anschließend mithilfe eines Remote-Screenshots angesehen. Etwas umständlich, aber es funktioniert. Penetrationstester verwenden Metasploit Meterpreter, das für diesen Zweck über eine Befehlsschnittstelle verfügt.

Dank der ARP-Tabellen wissen wir, dass sich noch andere Rechner im Netzwerk befinden. Beim Einrichten der Zielumgebung in Amazon Web Services hatten wir zwei Server aufgesetzt und mit dem eigenen System verbunden. Genau das ist aus der ARP-Liste ersichtlich – es befinden sich mindestens zwei Rechner im Subnetz 172.30.0.

Will man mehr wissen, lohnt es sich Nmap hochzuladen. Nmap dient zum Scannen von Netzwerken und ist ein wichtiges IT-Tool. Für Penetrationstester, aber auch für Hacker.

In unserem Fall würde über den Befehl nmap –T5 172.30.0/24 das gesamte Ziel-Subnetz gescannt. Dabei bezieht sich „24“ auf die Bitlänge der Subnetzmaske. Dieses Tutorial erklärt den Umgang mit Nmap kurz und knackig.

Das Reverse-Shell-Spiel

Mit meinem etwas altmodischen RAT ist das Ausführen von Befehlen relativ umständlich, und um die Ergebnisse sehen zu können mussten wir Screenshots benutzen. RATs der nächsten Generation verfügen bereits über direkte Eingabeaufforderungen, bei Netbus steht uns diese Option noch nicht zur Verfügung. Aber auch dafür gibt es eine Lösung.

Man kann manuell eine Remote-Shell mithilfe eines anderen Tools einrichten – einem Allzweck-Verbindungswerkzeug namens Ncat.

ncat-shell-graph

Mit Ncat kann man eine Befehls-Shell auf einem Server ausführen und ihr einen TCP-Port zuweisen. Dadurch lässt sich mit einem anderen Ncat als Client eine Verbindung dazu herstellen! Die Tastatureingaben für die Remote-Shell erfolgen lokal. Ncat gibt es übrigens gleich im Set mit Nmap.

Wir haben also Ncat zum Zielsystem hochgeladen und nicht im Server- sondern im Client-Modus eingerichtet (siehe Abbildung). Auf unserem Hacker-Rechner haben wir Ncat im Server-Modus eingerichtet. Fertig ist die Remote-Shell.

Warum wird für den Server des potentiellen Opfers der Client-Modus verwendet? Das hängt mit der Funktionsweise moderner RATs zusammen. Da der Hacker die Adresse seines eigenen Rechners kennt, ist es einfacher, wenn er sie direkt im RAT einrichten kann. Der Rechner fungiert dann als Client und kommuniziert mit dem Command-and-Control-Server des Angreifers. Dadurch wird vermieden, dass man die Adresse des RAT-Servers bestimmen muss, wenn es sich nicht um einen gezielten Angriff handelt.

Ein weiterer Vorteil ist, dass Firewalls eingehenden Verkehr in der Regel deutlich strenger prüfen als ausgehenden Verkehr. Zumindest Port 80, der zur Kommunikation mit Remote-Webservern verwendet wird bleibt in der Regel offen. Raffiniertere RATs nutzen deshalb Port 80 als Ausgang und verstecken die Befehle beispielsweise in einem HTTP-Protokoll.

Aber zurück zum Penetrationstest-Szenario. Wir haben jetzt also eine echte Reverse-Shell auf dem angegriffenen Rechner eingerichtet, die über Port 80 mit der Penetrationstest-Kommandozentrale kommuniziert.

Zum Thema Penetrationstests mithilfe von Reverse-Shells gibt es übrigens eine sehr brauchbare Übersicht des SANS Institute.

PowerShell-Power

Wenn Ncat eine Reverse-Shell ausführt, ist das im Grunde schon ein einfacher RAT. Ncat kann tatsächlich eingesetzt werden, wenn ein Hacker sich Zugang zu einem Server verschafft hat, zum Beispiel mithilfe eines SQL-Injection-Angriffs.

Weiter geht es im System dann mit dem guten alten Befehl „find“ in Windows. Früher konnte man sogar mit einem Befehl wie find “secret” sales einen Ordner namens „sales“ rekursiv durchsuchen. Diese Funktion existiert allerdings nicht mehr.

Die PowerShell kann so einiges, zum Beispiel mehrere Cmdlets in eine Pipeline stellen. PowerShell unterstützt auch ein grep-ähnliches Cmdlet namens Select-String. Damit kann man Zeichenketten mithilfe regulärer Ausdrücke suchen und filtern. Das erinnert an ein anderes Betriebssystem und dessen Befehls-Shell, nämlich Linux und Bash!

Wir haben also den folgenden Befehl gebastelt:

Get-ChildItem –recurse shared_data|Select-String “secret|proprietary”|group path|select name > secret.data

Damit haben wir die Pfadnamen jeder Datei im Ordner „shared_data“ erhalten, die Wörter wie „secret“ oder „proprietary“ enthielten. Die Ergebnisse wurden dann in einer Datei unter dem Namen „secret.data“ ausgegeben.

Über die Reverse-Shell kann man nicht direkt mit PowerShell interagieren. Stattdessen muss man eine PowerShell-Anwendung ausführen und die Cmdlet-Pipeline als Argument eingeben. Das ist aber ohne großen Aufwand möglich.

Der springende Punkt: Die PowerShell ist ein mächtiges Tool. Und das kann mit guten oder bösen Absichten verwendet werden. Sicherheitsexperten sind sich einig darüber, dass über die PowerShell Angriffe ganz ohne Malware oder zusätzliche Tools möglich sind.

Fazit: Schon mit mittelmäßigen Scripting-Kenntnissen ist es ein Leichtes vertrauliche Inhalte zu finden, wenn man die Zugriffsrechte für alle Ordner nicht penibel kontrolliert.

The post Penetrationstests, Teil 3: RATs und Reverse-Shells appeared first on Varonis Deutsch.