Schnellstart
- Wählen Sie im Process Monitor die Option
Enable Boot Logging aus.

- Starten Sie neu.
- Sobald Sie angemeldet sind und Windows hochgefahren ist, führen Sie Process Monitor erneut aus.
- Wenn Sie dazu aufgefordert werden, speichern Sie das Boot-Protokoll, z. B. als
raw.PML.
- Setzen Sie den Standardfilter von Process Monitor mit
Strg-R zurück.
- Speichern Sie diese Protokolldatei, z. B. als
boot.PML.
- Führen Sie
Crassus.exe boot.PML aus.
- Untersuchen Sie alle grün markierten Ergebnisse und die entsprechenden Einträge in
results.csv.
Inhaltsverzeichnis
Warum "Crassus"?
Accenture hat ein Tool namens Spartacus entwickelt, das DLL-Hijacking-Möglichkeiten unter Windows findet. Ausgehend von Spartacus haben wir Crassus entwickelt, um die Fähigkeiten zur Erkennung von Windows-Privilege-Escalation über die bloße Suche nach fehlenden Dateien hinaus zu erweitern. Die ACLs, die von Dateien und Verzeichnissen privilegierter Prozesse verwendet werden, können mehr als nur die Suche nach fehlenden Dateien umfassen, um das Ziel zu erreichen.
...aber mit einer Besonderheit, da Crassus den SysInternals Process Monitor nutzt und rohe PML-Protokolldateien parst. Die typische Verwendung besteht darin, ein Boot-Protokoll mit Process Monitor zu generieren und es dann mit Crassus zu parsen. Es wird außerdem automatisch Quellcode für Proxy-DLLs mit allen relevanten Exporten für anfällige DLLs generieren.
Funktionen
- Natives Parsen von ProcMon-PML-Dateien. Der Log(PML)-Parser wurde durch Portierung von Teilfunktionalitäten von https://github.com/eronnen/procmon-parser/ nach C# implementiert. Die Formatspezifikation finden Sie hier.
- Crassus erstellt Quellcode für Proxy-DLLs für alle identifizierten fehlenden DLLs. Wenn beispielsweise eine Anwendung anfällig für DLL-Hijacking über
version.dll ist, erstellt Crassus für Sie Dateien version.cpp und version.def mit allen darin enthaltenen Exporten. Standardmäßig starten die Proxy-DLLs calc.exe. Es sind Build-Skripte enthalten, um die DLLs in Visual Studio oder MinGW zu erstellen.
- Für andere interessante Ereignisse, wie das Erstellen eines Prozesses oder das Laden einer Bibliothek, wird untersucht, ob nicht privilegierte Benutzer die Datei oder Teile des Pfads zur Datei ändern können.
- Kann große PML-Dateien verarbeiten und alle interessanten Ereignisse in einer CSV-Ausgabedatei speichern.
Flussdiagramm
Die allgemeine Funktionsweise von Crassus lässt sich in diesem Flussdiagramm zusammenfassen:

Bildschirmfotos
Crassus Ausführung

CSV-Ausgabe

Exportausgabe

DLL-Funktionen exportieren

DLL-Ordnungszahlen exportieren

Crassus.exe beziehen
Erstellen mit Visual Studio
Crassus wurde als Visual Studio 2019-Projekt entwickelt. So erstellen Sie Crassus.exe:
- Öffnen Sie
Crassus.sln
- Drücken Sie
Strg+Umschalt+B auf Ihrer Tastatur
Verwendung der vorkompilierten Crassus.exe
Wenn Sie dem Ausführen von fremdem Code vertrauen, ohne zu wissen, was er tut, wird Crassus.exe in diesem Repository bereitgestellt.
Verwendung
Ausführungsablauf
- Wählen Sie im Process Monitor die Option
Enable Boot Logging aus.

- Starten Sie neu.
- Sobald Sie angemeldet sind und Windows hochgefahren ist, führen Sie optional auch geplante Aufgaben aus, die möglicherweise mit privilegierten Rechten ausgeführt werden.
- Führen Sie Process Monitor erneut aus.
- Wenn Sie dazu aufgefordert werden, speichern Sie das Boot-Protokoll.
- Setzen Sie den Standardfilter von Process Monitor mit
Strg-R zurück.
- Speichern Sie diese Protokolldatei, z. B. als
boot.PML. Der Grund für das erneute Speichern der Protokolldatei ist zweierlei:
- Ältere Versionen von Process Monitor speichern Boot-Protokolle nicht als einzelne Datei.
- Boot-Protokolle sind standardmäßig ungefiltert, was zusätzliches Rauschen enthalten kann, wie z. B. ein lokales Benutzer-DLL-Hijacking beim Starten von Process Monitor selbst.
Befehlszeilenargumente