AppLocker Bypass mit Alternate Data Streams

Was sind Alternate Data Streams?

Ein „Alternate Data Stream“, auch ADS genannt, ist eine Funktion des NTFS-Dateisystems, welche die Speicherung zusätzlicher Daten in einer Datei ermöglicht. Diese Daten sind vom Hauptdatenstrom getrennt, d. h. von den Daten, die sichtbar sind, wenn Sie eine Datei in einer Anwendung öffnen. Der zusätzliche Datenstrom wird als „Alternate Data Stream“ („alternativer“ Datenstrom) bezeichnet.

Wie funktionieren Alternate Data Streams?

„Alternate Data Streams“ werden durch das Anhängen eines Doppelpunkts, gefolgt von einem Streamnamen, an das Ende eines Dateinamens erstellt. Wenn Sie zum Beispiel eine Datei mit dem Namen „beispiel.txt“ haben und einen „Alternate Data Stream“ erstellen möchten, hängen Sie „:stream1“ an das Ende des Dateinamens an. Dadurch wird ein neuer Datenstrom mit dem Namen „stream1“ innerhalb der Datei „beispiel.txt“ erstellt.

Wenn Sie die Datei „beispiel.txt“ in einer Anwendung, wie beispielsweise Notepad, öffnen, sehen Sie nur die Daten im Hauptdatenstrom. Der Grund dafür ist, dass der „Alternate Data Stream“ für die meisten Anwendungen nicht sichtbar ist und nur von spezialisierten Werkzeugen aufgerufen und manipuliert werden kann.

In unserem Fall können wir den „Alternate Data Stream“ in Notepad wie folgt anschauen:

Die vorhandenen  „Alternate Data Stream“ können auch mit dir /s angezeigt werden.

Für was werden die „Alternate Data Streams“ normalerweise verwendet?

Hier sind ein paar Beispiele:

  • Der Windows-Ressourcenmanager nutzt „Alternate Data Stream“, um Dateien mit hohem Risiko zu identifizieren, auf die nicht zugegriffen werden sollte.

  • Der Windows Attachment Manager nutzt „Alternate Data Stream“ um Dateien zu prüfen. Wenn der Windows Attachment Manager beispielsweise eine Datei aus dem Internet erkennt, wird der Benutzer vor dem Öffnen gewarnt.

  • Der Microsoft SQL-Server nutzt „Alternate Data Stream“, um die Integrität der Datenbank zu gewährleisten.

  • Einige Antivirus-Anwendungen, wie beispielsweise Kaspersky, nutzen „Alternate Data Stream“, um die Überprüfung von Dateien zu verbessern.

AppLocker Bypass

Vorbereitung

Wir haben ein Verzeichnis goTraining unter Program Files (x86). Im Unterverzeichnis Logs werden Protokolldateien vom Programm abgelegt im Kontext des Benutzers. Daher haben alle lokalen Benutzer schreibrechte auf dieses Verzeichnis.

C:\Program Files (x86)\goTraining
C:\Program Files (x86)\goTraining\Logs

Um das Verzeichnis vor ausführbaren Dateien zu schützen, wird eine AppLocker-Ausnahme in der Default Rule „All files located in the Program Files folder“ mit einer Path-Rule hinzugefügt. Damit wird das Verzeichnis C:\Program Files (x86)\goTraining\Logs aus der Default Rule ausgeschlossen und es können keine Programme mehr aus diesem Verzeichnis ausgeführt werden.

Path-Rule testen

Unsere Path Rule-Ausnahme funktioniert. Ein unprivilegierter Benutzer kann Dateien in das Verzeichnis C:\Program Files (x86)\goTraining\Logs speichern. Ein Ausführen der Datei wird jedoch blockiert.

AppLocker Bypass

Was passiert jetzt aber, wenn ich auf das Verzeichnis C:\Program Files (x86)\goTraining\Logs ein „Alternate Data Stream“ erstelle? Als Benutzer haben wir die Berechtigung, in das Verzeichnis zu schreiben. Mit type kopieren wir den Inhalt aus putty.exe in den „Alternate Data Stream“ C:\Program Files (x86)\goTraining\Logs:putty.exe. Im nächsten Schritt starten wir den „Alternate Data Stream“ mit wmic (Windows Management Instrumentation command-line).

Wmic bestätigt die Ausführung mit ReturnValue = 0 und es öffnet sich PuTTY.

Regel weiter einschränken

Um das Ausführen von „Alternate Data Streams“ zu unterbinden, müssen die Verzeichnisse mit den Path-Rule-Ausnahmen weiter eingeschränkt werden. Dazu muss das Verzeichnis selbst auch ausgeschlossen werden. Um das Verzeichnis selbst auszuschliessen, wird eine zweite Path-Rule-Ausnahme „logs:*“ erstellt.

Testen der neuen Regel

Ein erneuter Aufruf mit wmic wird mit dem ReturnValue = 8 beantwortet und PutTTy wird nicht geöffnet.

Das AppLocker Windows Protokoll bestätigt die Blockierung unserer Datei.

Wird AppLocker mit Aaronlocker implementiert, so werden automatisch auch die „Alternate Data Streams“ berücksichtigt. Weitere Informationen zu AppLocker und Aaronlocker finden Sie in den goSecurity BLOGs AppLocker – Weniger ist mehr – Teil 1 und AppLocker – Weniger ist mehr – Teil 2 (AaronLocker).

Informationen zum Autor: Marius Hamborgstrøm

Im Jahre 2014 ist es mir gelungen goSecurity von meinem Talent zu überzeugen. Als Experte für Penetration Tests konnte ich schon viele Schwachstellen aufdecken, bevor dies einem Hacker gelungen ist. Zudem bin ich für die Gestaltung und die Durchführung unserer goTraining-Kurse Hack to PROTECT (H2P), Hack to PROTECT [ADVANCED] (H2PA) und Windows Server Hardening (WSH) verantwortlich. Durch meine jahrelange Erfahrung als IT-Leiter einer mittelständischen Bank, kenne ich auch die Seite des Administrators und des IT-Managers in einer Umgebung mit hohen Sicherheitsanforderungen. Aus dieser Erfahrungskiste kann ich die Anforderungen unserer Kunden auch bei Audits und umfassenden Beratungen schnell verstehen und Sie zielgerichtet und praxisnah beraten. Jede Sicherheitslücke bei Ihnen zu finden, bevor dies jemand anderem gelingt, ist leider nicht immer realistisch. Und dennoch ist es mein Antrieb und mein Anspruch.