Bruteforce FileVault Encryption?

4

Recentemente ho iniziato a fare analisi forensi e test di penetrazione e spero che qualcuno possa spiegare quali sono i seguenti dati e come potrebbe essere utilizzato per eseguire attacchi bruteforce (hashcat) contro i macbook.

Più in particolare, che cos'è "VEK Wrpd", "KEK Wrpd", "HMAC" e "PW Key"? E possono essere usati per riprodurre la password di FileVault se è stata indovinata correttamente?

Ho usato apfs-fuse per scaricare i dati:

$ ./apfs-fuse -d 16 /dev/sda2/ /path/to/mount

Device /dev/sda2 opened. Size is 250790436864
starting LoadKeybag
 all blocks verified
 header has type 6b657973
Volume macOS1 is encrypted.
Password hint: looking for key type 3 for volume 1342XXXX-XXXX-XXXX-XXXX-XXXXXXXX4251 in m_container_bag
Trying to load key bag from recs_block
starting LoadKeybag
 all blocks verified
 header has type 72656373
Password hint: looking for key type 4 for volume 1342XXXX-XXXX-XXXX-XXXX-XXXXXXXX4251 in recs_bag
Enter Password: 
GetVolumeKey: Dumping container keybag.
Dumping Keybag (keys)

Version :    2
Keys    :    2
Bytes   :       e0

Key 0:
UUID    : 1342XXXX-XXXX-XXXX-XXXX-XXXXXXXX4251
Type    :    3 [Keybag Ref]
Length  :   10
Unknown :        0

Block   :           7c1f57
Count   :                1

Key 1:
UUID    : 1342XXXX-XXXX-XXXX-XXXX-XXXXXXXX4251
Type    :    2 [VEK]
Length  :   7c
Unknown :        0

[Blob Header]
Unk 80  : 0
HMAC    : 106BXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX9921
Salt    : 5493XXXXXXXX1F47

[VEK]
Unk 80  : 0
UUID    : 1342XXXX-XXXX-XXXX-XXXX-XXXXXXXX4251
Unk 82  :        0    1 9e b1
VEK Wrpd: 06391FA9XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX552582F2



GetVolumeKey: looking for key type 3 for volume 1342XXXX-XXXX-XXXX-XXXX-XXXXXXXX4251 in m_container_bag
 key found
 data size matches that of key_extent_t
Trying to load key bag from recs_block
starting LoadKeybag
 all blocks verified
 header has type 72656373
Volume key bag loaded successfully. Dumping contents.
Dumping Keybag (recs)

Version :    2
Keys    :    3
Bytes   :      220

Key 0:
UUID    : 257AXXXX-XXXX-XXXX-XXXX-XXXXXXXX7975
Type    :    3 [KEK]
Length  :   94
Unknown :        0

[Blob Header]
Unk 80  : 0
HMAC    : F047XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXF6A8
Salt    : 630CXXXXXXXX268

[KEK]
Unk 80  : 0
UUID    : 257AXXXX-XXXX-XXXX-XXXX-XXXXXXXX7975
Unk 82  :        0    2 9e b1
KEK Wrpd: BB7FXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX07F8
Iterat's: 100000
Salt    : 863CXXXXXXXXXXXXXXXXXXXXXXXX2F51


Key 1:
UUID    : CDF5XXXX-XXXX-XXXX-XXXX-XXXXXXXXE4CA
Type    :    3 [KEK]
Length  :   94
Unknown :        0

[Blob Header]
Unk 80  : 0
HMAC    : 5A2AXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXAEB8
Salt    : BFBFXXXXXXXX5FD6

[KEK]
Unk 80  : 0
UUID    : CDF5XXXX-XXXX-XXXX-XXXX-XXXXXXXXE4CA
Unk 82  :        0    2 9e b1
KEK Wrpd: 43A8XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX5E07
Iterat's: 117590
Salt    : 8751XXXXXXXXXXXXXXXXXXXXXXXXB0DA


Key 2:
UUID    : EBC6XXXX-XXXX-XXXX-XXXX-XXXXXXXXECAC
Type    :    3 [KEK]
Length  :   94
Unknown :        0

[Blob Header]
Unk 80  : 0
HMAC    : 9F92XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX5706
Salt    : E363XXXXXXXXCC09

[KEK]
Unk 80  : 0
UUID    : EBC6XXXX-XXXX-XXXX-XXXX-XXXXXXXXECAC
Unk 82  :        0    2 9e b1
KEK Wrpd: CF35XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXEC04
Iterat's: 127270
Salt    : 3780XXXXXXXXXXXXXXXXXXXXXXXXA2E7



PW Key  : EE62XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX6AB5
KEK Wrpd: BB7FXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX07F8
KEK     : A60EXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX4D78
KEK IV  : F7ECXXXXXXXX202A

PW Key  : 6363XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX6191
KEK Wrpd: 43A8XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX5E07
KEK     : EB9FXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXD6F9
KEK IV  : 5932XXXXXXXX4ACB

PW Key  : 6B62XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXEEFF
KEK Wrpd: CF35XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXEC04
KEK     : B579XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXAD90
KEK IV  : A3E7XXXXXXXXCA4F
    
posta kepihu 07.06.2018 - 20:36
fonte

1 risposta

5

what is "VEK Wrpd", "KEK Wrpd", "HMAC", and "PW Key"?

Questo è tutto spiegato in questo white paper , a partire da pagina 26, sezione Gestione delle chiavi .

  • VEK : questa è la chiave di crittografia del volume. Ogni volume logico contiene il proprio VEK, che viene utilizzato per crittografare i singoli settori di 512 byte sull'unità. FileVault utilizza un VEK a 256 bit che viene utilizzato da AES a 128 bit in XTS modalità, una modalità standard per la crittografia dei dispositivi a blocchi.

  • KEK : questa è la chiave di crittografia chiave. Viene generata una chiave simmetrica casuale che crittografa il VEK, che viene quindi memorizzato nei metadati CoreStorage. La funzione di questa chiave è quella di fornire uno strato di riferimento indiretto in modo che la KEK possa essere modificata indipendentemente dal VEK (che altrimenti richiederebbe una nuova crittografia dell'intero disco in un processo molto costoso).

  • DEK * - Questa è la chiave di crittografia derivata, che è probabilmente a cui si riferisce "chiave PW". È derivato direttamente da una combinazione della password e del sale memorizzato o di un certificato x.509 utilizzando l'algoritmo PBKDF2 . Qualsiasi password data e tuple salt risulterà nello stesso DEK.

  • HMAC - Un codice di autenticazione dei messaggi basato su hash è un algoritmo che utilizza un hash crittografico per dimostrare l'integrità dei dati arbitrari. Viene utilizzato per rilevare manomissioni. Un HMAC è essenzialmente l'hash di una chiave e un messaggio messi insieme in un modo particolare. Un utente malintenzionato non è in grado di creare un HMAC valido per qualsiasi messaggio senza la chiave. HMAC viene anche utilizzato come funzione principale di PBKDF2, dove viene utilizzato per scopi diversi dall'integrità dei dati.

Quando decifri un volume, la password viene convertita nel DEK, che non è memorizzato in alcuna forma in nessun punto del dispositivo. Il DEK viene quindi utilizzato per decodificare il KEK, che viene quindi utilizzato per decrittografare il VEK utilizzato per consentire l'accesso a tutti i volumi. I moduli crittografati di KEK e VEK sono conservati sul disco. La conoscenza dei valori decodificati di una di queste chiavi ti consentirà di leggere il volume, ma non di recuperare la tua password.

La "Wrpd" indica probabilmente "wrapped", ovvero la versione crittografata della chiave, secondo codice sorgente . Il VEK Wrpd è quindi il VEK dopo che è stato crittografato con KEK. Allo stesso modo, KEK Wrpd è il KEK dopo che è stato crittografato dal DEK. Questi valori non sono particolarmente sensibili e vengono memorizzati direttamente sul disco. Non c'è DEK Wrpd perché è derivato direttamente dalla passphrase, si spera memorizzato solo nel tuo cervello.

* In modo confuso, DEK in altri contesti di solito sta per Data Encryption Key e mantiene la stessa funzione del VEK.

And can they be used to reproduce the FileVault password if it's guessed correctly?

No, sebbene la conoscenza di VEK consenta di decrittografare il volume crittografato che protegge. Mentre il DEK è derivato direttamente dalla password di input, l'algoritmo utilizzato, PBKDF2, è una funzione unidirezionale. Cioè, puoi convertire la tua password ASCII in un DEK, ma non puoi convertire il tuo DEK in una password ASCII. Inoltre, PBKDF2 è intenzionalmente progettato per essere lento per impedire a qualcuno di passare un gran numero di password candidate attraverso la funzione finché uno di loro non funziona (un attacco a forza bruta).

    
risposta data 08.06.2018 - 09:01
fonte

Leggi altre domande sui tag