A todos nos ha pasado alguna vez, que guardamos algo
tan seguro, tan seguro, tan seguro,…. que no nos acordamos dónde lo
dejamos. Hace unos días me tocó tirar de un disco duro que guardo
cifrado, mediante el sistema de ficheros HFS+ de Mac, con las opciones Journaled, Encrypted.
Cuando insertas el USB, Mac te muestra un Pop-Up, en el
que se te pide la contraseña de desbloqueo del volumen. Todo esto está
bien cuando usas esa contraseña a menudo, pero cuando no es el caso
dices… por qué habré puesto una contraseña de cifrado tan rara.
A todo esto, el pop-up, no te permite ver la contraseña
en claro, por lo que si te has equivocado en una letra, te toca
volverla a escribir completa. Tampoco permite hacer copy-paste, por lo
que no podemos escribirla en un bloc de notas y pegarla en la caja de
texto, así que volvemos al paso 1.
Como la contraseña era bastante complicada, me puse a investigar la opción de hacer el montaje desde un terminal.
El comando diskutil tiene múltiples combinaciones que nos permiten gestionar, entre otras cosas, los volúmenes cifrados.
Con el flag “cs list”, el CoreStorage nos
muestra la estructura formada por los diferentes Grupos de Volúmenes,
Volúmenes Físicos, Familias de Volúmenes Lógicos y finalmente los
Volúmenes Lógicos que ve el sistema operativo. Si tenemos habilitado
Filevault2 para el cifrado del disco completo (opción muy recomendable),
nos aparecerá el primero de ellos, con el volumen desbloqueado
(Unlocked dentro del campo Encryption Status)
+-- Logical Volume Group D9183FF1-7F0A-4AF8-9E3D-68BD25BCF7BF
=========================================================
Name: test
Status: Online
Size: 7412113408 B (7.4 GB)
Free Space: 13357056 B (13.4 MB)
|
+-< Physical Volume 7A2E4D19-DCA8-4037-BDC6-60F4449864DF
| ----------------------------------------------------
| Index: 0
| Disk: disk3s2
| Status: Online
| Size: 7412113408 B (7.4 GB)
|
+-> Logical Volume Family 5F1E3906-6B56-4D8E-8DBC-F1682D625BC5
----------------------------------------------------------
Encryption Status: Locked
Encryption Type: AES-XTS
Conversion Status: Complete
Conversion Direction: -none-
Has Encrypted Extents: Yes
Fully Secure: Yes
Passphrase Required: Yes
|
+-> Logical Volume AA0E91C1-131A-4B86-9F6D-772D281C3ED6
---------------------------------------------------
Disk: -none-
Status: Locked
Size (Total): 7046430720 B (7.0 GB)
Conversion Progress: -none-
Revertible: No
LV Name: test
En el caso que se ve arriba, dentro de la sección Logical Volume, AA0E91…. etc… se puede ver que el Status es Locked.
Con Diskutil y los flags unlockvolume , te pediría por línea de comandos la contraseña de desbloqueo. Si además le añadimos -passphrase ,
ya nos permite hacerla en claro y ver si nos estamos equivocando o no,
hacer copy/paste o incluso… montarnos un bruteforcer. Ya que estaba, he
hecho algo muy sencillito pero que si a alguien le puede ser de ayuda,
pues aquí lo tiene:
LawMac:Desktop Lawrence$ more bruteforcea.pl
#!/usr/bin/perl
use Getopt::Std;
getopts('u:d:');
die "Usage $0 -u -d
" if (!$opt_u && !$opt_d);
#Guardamos parametros
my $uid=$opt_u;
my $dict=$opt_d;
open (FILE,"<$dict");
#Por cada posible contraseña generada, probamos
while ()
{
chomp ($_);
my $resp=`diskutil cs unlockvolume $uid -passphrase $_ `;
#Si acertamos, indicamos la contraseña correcta
if ($resp =~ m/successfully/i)
{
print "Password found!!! It was "$_"
";
print "$resp
";
exit(0);
}
}
close (FILE);
print "Password not found in diccionary $dict. Insert coin and play again
";
Tan fácil como pasarle con el parámetro -u el UID del
volumen a desbloquear y con un -d un fichero “diccionario”, que
previamente habremos generado. En este punto, la inteligencia a aplicar
es diferente y no voy a entrar. Que haya palabras concatenadas con
números, caracteres especiales o lo que queráis, es otra historia
diferente.
Una vez el script acierta con la contraseña, lo deja desbloqueado, pero sin montar.
LawMac:Desktop Lawrence$ perl bruteforcea.pl -u AA0E91C1-131A-4B86-9F6D-772D281C3ED6 -d dict.txt
Error: -69749: Unable to unlock the Core Storage volume
Error: -69749: Unable to unlock the Core Storage volume
Error: -69749: Unable to unlock the Core Storage volume
Error: -69749: Unable to unlock the Core Storage volume
Password found!!! It was "securitybydefault.com"
Started CoreStorage operation
Logical Volume successfully unlocked
Logical Volume successfully attached as disk4
Logical Volume successfully mounted as /Volumes/test
Core Storage disk: disk4
Finished CoreStorage operation
Nos dice cuál era la contraseña, por si sólo
necesitamos eso. Si queremos montarlo, tan sencillo como “diskutil mount
disk4” (en este caso) y ya está!
Lo que es un axioma innegable es que la prisa que te
corre recuperar lo que hay dentro de un contenedor cifrado, es
directamente proporcional a las posibilidades que te pegues con una
contraseña que no funciona (o que no recuerdas ;D)
Autor:
Lorenzo Martínez