Este blog ya no está activo, sigue informándote aquí:

sábado, 7 de noviembre de 2015

Descifrando BitLocker a Lo Forense

Hoy parece ser el día de Volatility, una herramienta desarrollada en Python destinada a trabajar de una manera cómoda con volcados de memoria .raw, no solo ha aparecido [una interfaz gráfica muy atractiva] para trabajar con el si no que ahora podemos extraer las claves de cifrado FVEK para poder descifrar volúmenes cifrados con BitLocker (El programa de cifrado de Windows). 


Para meternos de lleno a esto necesitaremos lo siguiente:
Lo primero que le tendremos que indicar a Volatility es el offset de la tabla de particiones donde empiece la partición NTFS de mas valor. Para eso utilizaremos por ejemplo el comando [mmls]:
$ 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

Si hiciéramos el dump en hexadecimal de esta partición encontraríamos la firma -FVE-FS-
$ 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
Ahora que sabemos donde se encuentra el volumen de Bitlocker vamos podemos jugar un poco con el plugin. Lo que buscamos no es ni mas ni menos que la FVEK (Full Volume Encryption Key) y el plugin nos ayuda a encontrarla, extraerla y a saber que algoritmo AES se ha utilizado para cifrar el volumen  128 bits, 256 bits o si se ha utilizado o no el algoritmo Elephant. 
$ 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

Ahora que ya hemos podido extraer la clave y la tenemos "almacenada" en un .fvek podemos utilizar una herramienta como dislocker para descifrar el contenido. 
$ 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
Espero que os haya gustado, esta claro que nunca tendremos la certeza de si un equipo estará cifrado con Bitlocker pero un dump a tiempo no hace daño.

Sed Bueno ;)

4 comentarios:

  1. Ah que bonito comento y me borran el comentario y la libertad de expresion?

    ResponderEliminar
    Respuestas
    1. Hola Dino,

      Si, lo borré. Pero por que me sentó mal no por la corrección (que comentarios tuyos sobre eso hay muchos y los sigo dejando) si no por la forma en la que te expresaste. Por eso lo borré U-U

      Un saludo.



      Eliminar
  2. Buenas, ¿como se averigua el Offset? podrías indicar los pasos, y otra cuestión más, ¿todo esto es a través de comandos en Linux?, ¿es posible hacer en Windows 10?

    ResponderEliminar
    Respuestas
    1. Buenas tardes,

      En Windows supongo que podrías verlo utilizando Autopsy y mirando el hexadecimal así obtendrás el offset y luego solo tendrás que buscar la firma -FVE-FS- y con la ayuda de Python y Volatility ir haciendo.

      Aunque no me he puesto a probarlo con Windows.

      Dime algo si lo pruebas, un saludo.

      Eliminar