¿Bruteforce FileVault Encryption?

4

Últimamente he estado haciendo pruebas forenses y de penetración y espero que alguien pueda explicar qué son los datos a continuación y cómo podrían usarse para realizar ataques de fuerza bruta (hashcat) contra macbooks.

Más específicamente, ¿qué es "VEK Wrpd", "KEK Wrpd", "HMAC" y "PW Key"? ¿Y pueden usarse para reproducir la contraseña de FileVault si se adivina correctamente?

Utilicé apfs-fuse para volcar los datos:

$ ./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
    
pregunta kepihu 07.06.2018 - 20:36
fuente

1 respuesta

5
  

¿Qué es "VEK Wrpd", "KEK Wrpd", "HMAC" y "PW Key"?

Todo esto se explica en este documento técnico , comenzando en la página 26, sección Gestión de claves .

  • VEK : esta es la clave de cifrado del volumen. Cada volumen lógico contiene su propio VEK, que se utiliza para cifrar sectores individuales de 512 bytes en la unidad. FileVault utiliza un VEK de 256 bits que es utilizado por AES de 128 bits en XTS modo, un modo estándar para el cifrado de dispositivos de bloque.

  • KEK : esta es la clave de cifrado de clave. Se genera una clave simétrica aleatoria que encripta el VEK, que luego se almacena en los metadatos de CoreStorage. La función de esta clave es proporcionar una capa de direccionamiento indirecto para que el KEK pueda cambiarse independientemente del VEK (que de lo contrario requeriría volver a cifrar todo el disco en un proceso muy costoso).

  • DEK * : esta es la clave de cifrado derivada, que es probablemente a lo que se refiere la "clave PW". Se deriva directamente de una combinación de la contraseña y el salt almacenado o un certificado x.509 utilizando el algoritmo PBKDF2 . Cualquier contraseña dada y tu tupla de sal dará como resultado el mismo DEK.

  • HMAC : un código de autenticación de mensaje basado en hash es un algoritmo que utiliza un hash criptográfico para probar la integridad de los datos arbitrarios. Se utiliza para detectar manipulaciones. Un HMAC es esencialmente el hash de una clave y un mensaje en conjunto de una manera particular. Un atacante no puede forjar un HMAC válido para ningún mensaje dado sin la clave. HMAC también se utiliza como la función central de PBKDF2, donde se utiliza para fines distintos a la integridad de los datos.

Cuando descifra un volumen, la contraseña se convierte a DEK, que no se almacena de ninguna forma en ningún lugar del dispositivo. El DEK se utiliza para descifrar el KEK, que luego se utiliza para descifrar el VEK que se utiliza para permitirle acceder a todos sus volúmenes. Las formas cifradas de KEK y VEK se guardan en el disco. El conocimiento de los valores descifrados de cualquiera de estas claves le permitirá leer el volumen, pero no recuperar su contraseña.

Lo más probable es que "Wrpd" signifique "envuelto", es decir, la versión cifrada de la clave, de acuerdo con código de fuente . El VEK Wrpd es, por lo tanto, el VEK después de que se haya cifrado con el KEK. Del mismo modo, el KEK Wrpd es el KEK después de que haya sido cifrado por el DEK. Estos valores no son particularmente sensibles y se almacenan directamente en el disco. No hay DEK Wrpd porque se deriva directamente de la frase de contraseña, es de esperar que solo se almacene en su cerebro.

* Confusamente, DEK en otros contextos generalmente significa Clave de cifrado de datos y tiene la misma función que el VEK.

  

¿Se pueden usar para reproducir la contraseña de FileVault si se adivina correctamente?

No, aunque el conocimiento del VEK le permitirá descifrar el volumen cifrado que protege. Mientras que el DEK se deriva directamente de la contraseña de entrada, el algoritmo que se utiliza, PBKDF2, es una función de un solo sentido. Es decir, puede convertir su contraseña ASCII a un DEK, pero no puede convertir su DEK a una contraseña ASCII. Además, PBKDF2 está diseñado intencionalmente para ser lento para evitar que alguien pase una gran cantidad de contraseñas candidatas a través de la función hasta que una de ellas funcione (un ataque de fuerza bruta).

    
respondido por el forest 08.06.2018 - 09:01
fuente

Lea otras preguntas en las etiquetas