Recientemente se ha publicado un plugin para Volatility que facilita la identificación y extracción de FVEKs (Full Volume Encryption Keys) que pueden ser usadas para descifrar volúmenes BitLocker. Actualmente sólo se soportan imágenes de Windows Vista/7.
En el siguiente ejemplo, el que se muestra en la página del proyecto de Github, se descifrará el binario de una imagen de un disco duro (John_HDD.dd) obteniendo la clave mediante un volcado de memoria del equipo (John_Win7SP1x64.raw).
1) Primero determinamos el offset del volumen cifrado BitLocker. En este caso está en la segunda partición NTFS a partir del sector 718848. Fíjate en la firma "-FVE-FS-".
2) Luego usamos el plugin bitlocker para extraer la FVEK. Es conveniente usar el argumento opcional --dump-dir para especificar el directorio en el cual se guardarán el cipher ID (primeros 2 bytes) y la FVEK (64 bytes).
3) Finalmente usamos la FVEK extraída para descifrar el volumen usando fuse-dislocker, una utilidad para montar volúmenes BitLocker en Linux.
Fuente: https://github.com/elceef/bitlocker
En el siguiente ejemplo, el que se muestra en la página del proyecto de Github, se descifrará el binario de una imagen de un disco duro (John_HDD.dd) obteniendo la clave mediante un volcado de memoria del equipo (John_Win7SP1x64.raw).
1) Primero determinamos el offset del volumen cifrado BitLocker. En este caso está en la segunda partición NTFS a partir del sector 718848. Fíjate en la firma "-FVE-FS-".
$ mmls John_HDD.dd
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors
Slot Start End Length Description
00: Meta 0000000000 0000000000 0000000001 Primary Table (#0)
01: ----- 0000000000 0000002047 0000002048 Unallocated
02: 00:00 0000002048 0000718847 0000716800 NTFS (0x07)
03: 00:01 0000718848 0031455231 0030736384 NTFS (0x07)
04: ----- 0031455232 0031457279 0000002048 Unallocated
$
$ hexdump -C -s $((718848*512)) -n 16 John_HDD.dd
15f00000 eb 58 90 2d 46 56 45 2d 46 53 2d 00 02 08 00 00 |.X.-FVE-FS-.....|
15f00010
2) Luego usamos el plugin bitlocker para extraer la FVEK. Es conveniente usar el argumento opcional --dump-dir para especificar el directorio en el cual se guardarán el cipher ID (primeros 2 bytes) y la FVEK (64 bytes).
$ export VOLATILITY_LOCATION=file://./John_Win7SP1x64.raw
$ export VOLATILITY_PROFILE=Win7SP1x64
$
$ python vol.py bitlocker --dump-dir ./keys
Volatility Foundation Volatility Framework 2.5
Cipher: AES-128 + Elephant diffuser (0x8000)
FVEK: 2140c8afcbb835127b3b5b97fdcc8b846b7d97fba0c5a2e9dbfef97e263272fa4543af87702c4cee4252eaaa0b7fdc2a96c54aace6e90642a4bbece8afc430c2
FVEK dumped to: ./keys/0xfa80018fe8c0.fvek
3) Finalmente usamos la FVEK extraída para descifrar el volumen usando fuse-dislocker, una utilidad para montar volúmenes BitLocker en Linux.
$ sudo dislocker-fuse -V John_HDD.dd -k ./keys/0xfa80018fe8c0.fvek -o $((718848*512)) -- /mnt/ntfs
$
$ sudo mount -o loop,ro /mnt/ntfs/dislocker-file /mnt/clear
$
$ ls -lh /mnt/clear
total 730M
lrwxrwxrwx 2 root root 60 Jul 14 2009 Documents and Settings -> /mnt/clear/Users
-rwxrwxrwx 1 root root 730M Nov 4 09:39 pagefile.sys
drwxrwxrwx 1 root root 0 Jul 13 2009 PerfLogs
drwxrwxrwx 1 root root 4.0K Nov 4 09:58 ProgramData
drwxrwxrwx 1 root root 4.0K Apr 12 2011 Program Files
drwxrwxrwx 1 root root 4.0K Nov 4 07:01 Program Files (x86)
drwxrwxrwx 1 root root 0 Nov 4 07:04 Recovery
drwxrwxrwx 1 root root 0 Nov 4 09:57 $Recycle.Bin
drwxrwxrwx 1 root root 4.0K Nov 4 07:05 System Volume Information
drwxrwxrwx 1 root root 4.0K Nov 4 09:56 Users
drwxrwxrwx 1 root root 24K Nov 4 09:58 Windows
Fuente: https://github.com/elceef/bitlocker
Comentarios
Publicar un comentario