Nous le savons, le chiffrement des données est une chose de plus en plus répandue. C’est désormais un standard sur les téléphones portables, et cela le deviens sur les ordinateurs. Des outils tels que bitlocker ou les puces TPM rendent cela très facile, parfois même sans aucune intervention utilisateur.
Une fois n’est pas coutume, j’ai un ordinateur portable a analyser. J’extraie le disque M2 NVME et en fait une copie. Jusque la, normal. Mais au moment de monter le E01, voilà qu’on me demande d’entrer une clé de récupération pour déverrouiller le lecteur:
Allons voir de quoi il s’agit. Ouvrons une fenêtre Powershell en admin et entrons:
manage-bde.exe -status g:
(Ou « g: » est la lettre de votre lecteur chiffré)
Les « protecteurs de clé » sont la puce TPM et un mot de passe numérique (qui s’avère en fait être une clé de récupération).
Le principe de la puce TPM couplée a bitlocker est que cela protège démarrage de l’ordinateur:
- Si on désactive le sécure boot: la clé de récupération est demandée.
- Si on change l’ordre de boot: la clé de récupération est demandée.
- Si on effectue une restauration système: la clé de récupération est demandée.
- Si on effectue une récupération en ligne de commande: la clé de récupération est demandée.
- Seul un démarrage standard ne demande rien.
L’idée est de démarrer sur un clone du disque, booter, se connecter, extraire la clé de récupération bitlocker, et enfin analyser la copie originale grâce à cette clé. Chaud…
Mais à cause du chiffrement, tous les outils magiques tels que kon-boot, lazersoft, PCUnlocker, etc… sont inutiles. De même que la technique visant a remplacer « utilman.exe » par « cmd.exe » en recovery.
Bref, on est b…loqués…
<cheat-on> On obtient les identifiants utilisateurs <cheat-off>
Super, sauf qu’il s’agit d’un compte windows « online » qui n’a que des droits très très basiques donc impossible d’extraire la clé de récupération bitlocker.
Grâce à la CVE-2021-36934 dit HiveNightmare AKA SeriousSAM, j’ai pu dumper les bases de registre SAM, SECURITY et SYSTEM, j’ai donc les hash des identifiants locaux.
Chouette, je vais pouvoir faire un « pass the hash » et utiliser le hash NTLM du compte admin local et exécuter un cmd avec ses droits. Un truc du genre:
psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 [email protected]
Sauf que…… Ben ça marche pas… Et pourquoi? Je vous le donne en 1000…. Un indice les hash:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:e2b3724e9d4669d8072e150c18a98657:::
Le hash aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 est le même pour tous les utilisateurs… Ce hash indique que le compte est désactivé… Damned. Il n’y a aucun compte local actif sur cette machine…
Bon, il faut trouver un autre chemin. Après des dizaines et des dizaines de failles et d’outils d’escalade de privilège testés, ce sera finalement, la CVE-2021-36958 visant une RCE sur le pilote d’impression qui va nous permettre de parvenir à nos fins… (merci Benjamin Delpy alias GentilKiwi)
J’ai utilisé cet exploit, merci Loïc ^^.
Ceci m’a permis d’obtenir un shell Administrateur. Nice…. J’ai immédiatement demandé la clé de récupération bitclocker, mais…..
manage-bde -protectors c: -get
Comme vous pouvez le voir, je n’ai pas les droits suffisants pour extraire la clé de récupération parce que « il privilegio richiesto non appartiene al client » ou plutôt « le privilège demandé n’appartient pas au client« .
Pu***n, mais il va me faire c**er jusqu’au bout ce disque….
Première étape, me créer un compte local admin au cas ou :
net user /add hardstuff H@ardstuff
net localgroup administrator hardstuff /add
Mais je vais aussi activer le compte super admin, qui lui, devrait avoir les droits…
net user Administrateur /active:yes
net user Administrateur P@ssword
Et voilà, plus qu’à ouvrir un shell avec le compte super admin:
runas /user:administrator powershell.exe
Et on redemande gentiment la clé de récupération bitlocker:
Nous avons cette fichue clé dans le champ « Password ».