Crassus – Outil de découverte d'élévation de privilèges Windows
Démarrage rapide
- Dans Process Monitor, sélectionnez l'option
Enable Boot Logging.

- Redémarrez.
- Une fois connecté et que Windows s'est stabilisé, exécutez à nouveau Process Monitor.
- Lorsque vous y êtes invité, enregistrez le journal de démarrage, par exemple dans
raw.PML.
- Réinitialisez le filtre par défaut de Process Monitor avec
Ctrl-R.
- Enregistrez ce fichier journal, par exemple dans
boot.PML.
- Exécutez
Crassus.exe boot.PML.
- Examinez les résultats surlignés en vert et les entrées correspondantes dans
results.csv.
Table des matières
Pourquoi « Crassus » ?
Accenture a créé un outil appelé Spartacus qui détecte les opportunités de détournement de DLL sur Windows. En utilisant Spartacus comme point de départ, nous avons créé Crassus pour étendre les capacités de découverte d'élévation de privilèges Windows au‑delà de la simple recherche de fichiers manquants. Les listes de contrôle d'accès (ACL) utilisées par les fichiers et répertoires des processus privilégiés peuvent révéler plus que la simple recherche de fichiers manquants pour atteindre l'objectif.
Avez-vous vraiment créé un autre outil de découverte d'élévation de privilèges ?
… mais avec une particularité : Crassus utilise le Process Monitor de SysInternals et analyse les fichiers journaux PML bruts. L'utilisation typique consiste à générer un journal de démarrage avec Process Monitor, puis à l'analyser avec Crassus. Il génère également automatiquement le code source des DLL proxy avec toutes les exportations pertinentes pour les DLL vulnérables.
Fonctionnalités
- Analyse native des fichiers PML de ProcMon. L'analyseur de journaux (PML) a été implémenté en portant partiellement les fonctionnalités de https://github.com/eronnen/procmon-parser/ vers C#. Vous trouverez les spécifications du format ici.
- Crassus crée le code source des DLL proxy pour toutes les DLL manquantes identifiées. Par exemple, si une application est vulnérable au détournement de DLL via
version.dll, Crassus générera les fichiers version.cpp et version.def avec toutes les exportations incluses. Par défaut, les DLL proxy lancent calc.exe. Des scripts de compilation sont fournis pour compiler les DLL avec Visual Studio ou MinGW.
- Pour d'autres événements d'intérêt, comme la création d'un processus ou le chargement d'une bibliothèque, la possibilité pour un utilisateur non privilégié de modifier le fichier ou toute partie du chemin d'accès au fichier est examinée.
- Capable de traiter de gros fichiers PML et de stocker tous les événements d'intérêt dans un fichier CSV de sortie.
Organigramme
Le principe général de fonctionnement de Crassus peut être résumé dans cet organigramme :

Captures d'écran
Exécution de Crassus

Sortie CSV

Exportations de sortie

Fonctions exportées d'une DLL

Ordinaux exportés d'une DLL

Obtenir Crassus.exe
Compilation avec Visual Studio
Crassus a été développé comme un projet Visual Studio 2019. Pour compiler Crassus.exe :
- Ouvrez
Crassus.sln
- Appuyez sur
Ctrl+Shift+B sur votre clavier
Utilisation de Crassus.exe précompilé
Si vous avez confiance en l'exécution de code écrit par d'autres sans savoir ce qu'il fait, Crassus.exe est fourni dans ce dépôt.
Utilisation
Déroulement de l'exécution
- Dans Process Monitor, sélectionnez l'option
Enable Boot Logging.

- Redémarrez.
- Une fois connecté et que Windows s'est stabilisé, exécutez éventuellement aussi les tâches planifiées pouvant être configurées pour s'exécuter avec des privilèges.
- Exécutez à nouveau Process Monitor.
- Lorsque vous y êtes invité, enregistrez le journal de démarrage.
- Réinitialisez le filtre par défaut de Process Monitor avec
Ctrl-R.
- Enregistrez ce fichier journal, par exemple dans
boot.PML. La raison de ce ré‑enregistrement est double :
- Les anciennes versions de Process Monitor ne sauvegardent pas les journaux de démarrage en un seul fichier.
- Les journaux de démarrage sont par défaut non filtrés, ce qui peut contenir du bruit supplémentaire, comme un détournement de DLL par un utilisateur local lors du lancement de Process Monitor lui‑même.
Arguments en ligne de commande