Chiffrement bitlocker sans protecteur

Chiffrement bitlocker sans protecteur

Dans l'une de mes récentes investigations numériques, j'ai été confronté à un cas bizarre. Une partition était chiffrée avec bitlocker :

X-FVE-FS

Normalement, dans ce genre de cas, je lance bitlocker2john.exe (issu de John the Ripper) ou bitcracker_hash (issu de bitcracker) pour récupérer les hash et les passer ensuite à hashcat. Je l'exécute sur une machine que je loue dans le cloud. Si tout va bien, au bout d'un mois et une bonne dizaine de milliers d'euros pour la location du serveur, j'ai pu essayer un beau dictionnaire (créé notamment à partir d'informations personnelles et éventuellement de l'indexation d'un autre support) et toutes les possibilités de 6 caractères alphanumériques.

Sauf que cette fois-ci, bitlocker2john.exe m'indiquait qu'il trouvait bien la signature bitlocker (-FVE-FS-), des entrées VMK (0x02000800) mais qu'elles ne sont pas protégées :

[...]
Signature found at 0x30b00003
Version: 8
Invalid version, looking for a signature with valid version...

Signature found at 0xfb24a000
Version: 2 (Windows 7 or later)

VMK entry found at 0xfb24a0c3
VMK not encrypted.. stored clear! (0xfb24a0e4)

Signature found at 0xfb25a000
Version: 2 (Windows 7 or later)

VMK entry found at 0xfb25a0c3
VMK not encrypted.. stored clear! (0xfb25a0e4)

Signature found at 0xfb26a000
Version: 2 (Windows 7 or later)

VMK entry found at 0xfb26a0c3
VMK not encrypted.. stored clear! (0xfb26a0e4)

[...]

Je suis allé vérifier le code source de bitcracker_hash (ici) et on trouve ceci :

if (i == VMK_ENTRY_SIZE) {
    fprintf(stderr, "\n=====> VMK entry found at 0x%lx\n", (ftell(encryptedImage) - i));
[...]
    if ((c == key_protection_clear[0]) && (d == key_protection_clear[1])) 
        fprintf(stdout, "VMK not encrypted.. stored clear! (0x%lx)\n", fp_before_salt);
    else if ((c == key_protection_tpm[0]) && (d == key_protection_tpm[1])) 
        fprintf(stdout, "VMK encrypted with TPM...not supported! (0x%lx)\n", fp_before_salt);
    else if ((c == key_protection_start_key[0]) && (d == key_protection_start_key[1])) 
        fprintf(stdout, "VMK encrypted with Startup Key...not supported! (0x%lx)\n", fp_before_salt);
[...]

J'ai aussi vérifié le "Technical Details Report" de X-Ways Forensics et j'ai obtenu quelque chose comme ça :

[D:\nvme.dd], Partition 3
File system: unknown
Creation time: 24/11/2019  07:13:54  -8
Encryption method: AES-XTS 128
Protection type: Clear key! (24/11/2019  07:13:55  -8)

Total capacity: 494 167 654 400 bytes = 460 GB

Après quelques recherches, je découvre, entre autres, cette documentation Microsoft. Elle indique que bitlocker peut s'activer automatiquement à la première configuration de l'ordinateur. Les données sont donc bien chiffrées mais avec une clé qui n'est protégée par rien (pas de protector).

Comme lorsque j'ai trouvé le mot de passe avec hashcat, j'ai donc tenté de monter l'image avec Mount Image Pro. Il a monté l'image et la partition chiffrée sans rien me demander :

Mount Image Pro

Je n'avais plus qu'a faire une nouvelle image de la partition déchiffrée.