Cómo crackear el cifrado de disco LUKS y BitLocker con hashcat
Extrae un hash crackeable de una cabecera LUKS o de un volumen BitLocker, elige el modo hashcat correcto y lanza el ataque.
El cifrado completo de disco o de volumen convierte una contraseña perdida en un problema distinto al de una cuenta online crackeada: no hay un servidor que te limite la velocidad, pero tampoco hay atajo alrededor de la función de derivación de clave que protege el volumen. LUKS (Linux) y BitLocker (Windows) se reducen a la misma forma de ataque que cualquier otro hash de contraseña — extraer el material de derivación de clave, pasarlo a hashcat o John, lanzar un diccionario o una máscara — pero cada uno tiene su propio paso de extracción y su propia trampa a la hora de elegir el modo.
LUKS: extrae la cabecera, no toques la partición
Un volumen LUKS no necesita descifrarse para ser atacado — solo hace falta leer su cabecera, que contiene los key slots PBKDF2 (LUKS1) o Argon2/PBKDF2 (LUKS2). Extráela con dd:
sudo dd if=/dev/sdXN of=header.luks bs=512 count=4097
Confirma primero con qué estás trabajando — cryptsetup luksDump /dev/sdXN muestra la versión de LUKS y el KDF en uso. Esa distinción importa porque los modos de hashcat se dividen según ella:
-
LUKS1 →
-m 14600, leyendo directamente la cabecera extraída:hashcat -m 14600 header.luks /usr/share/wordlists/rockyou.txt -
LUKS2 usa Argon2id por defecto en las versiones actuales de
cryptsetupy tiene una disposición en disco distinta a LUKS1, así que el modo 14600 no lo lee. Hashcat sí soporta LUKS2, pero el número de modo exacto depende del KDF y el cifrado con los que se creó el volumen; en lugar de adivinar un número aquí, comprueba qué soporta tu instalación de hashcat:hashcat --example-hashes | grep -i luksy compara la entrada con lo que haya reportado
luksDump.
Una vez que hashcat recupere la contraseña, monta el volumen con normalidad — crackear solo demuestra que tienes la contraseña, no desbloquea nada por sí mismo:
sudo cryptsetup luksOpen /dev/sdXN recovered
Como los contadores de iteraciones PBKDF2/Argon2 de LUKS se calibran al configurarse para tardar aproximadamente un segundo en el hardware original, el rendimiento queda muy lejos del de un hash rápido y sin sal — una passphrase corta de diccionario sigue siendo realista, una larga y aleatoria no. La página del hash LUKS tiene el detalle completo de identificación.
BitLocker: bitlocker2john y luego el prefijo correcto
BitLocker almacena sus metadatos de derivación de clave (los datos FVE/VMK) en una ubicación fija del volumen, y bitlocker2john.py de John the Ripper los extrae en el mismo formato $bitlocker$ que espera hashcat — apúntalo al dispositivo en bruto o a una imagen:
python3 bitlocker2john.py -i /dev/sdXN > hash.txt
Antes de lanzar nada, mira el prefijo — te dice qué tipo de secreto estás atacando en realidad:
| Prefijo | Qué es | ¿Realista de crackear? |
|---|---|---|
$bitlocker$0$ | Contraseña de usuario | Sí — ataque de diccionario/reglas |
$bitlocker$1$ | PIN numérico (TPM+PIN) | Sí — espacio corto, ataque de máscara |
$bitlocker$3$ / $bitlocker$4$ | Clave de recuperación de 48 dígitos | No — efectivamente infranqueable por fuerza bruta |
Una contraseña de usuario o un PIN es un trabajo normal de hashcat:
hashcat -m 22100 hash.txt /usr/share/wordlists/rockyou.txt
Para un PIN, un ataque de máscara gana a un diccionario — los PIN de BitLocker suelen tener entre 4 y 20 dígitos, así que una máscara del tipo -a 3 -1 ?d hash.txt ?1?1?1?1?1?1 cubre rápido el espacio realista. Los hashes de clave de recuperación ($3$/$4$) codifican la clave de 48 dígitos que el propio BitLocker generó; su espacio de claves es lo bastante grande como para que ni hashcat ni John lo agoten en un tiempo útil, así que si es eso lo que tienes, la propia clave de recuperación es la única vía de entrada — no hay hash que sortear. Consulta la página del hash BitLocker para el desglose completo de prefijos, y cómo ajustar hashcat para un rendimiento real de GPU para sacar el máximo al ataque que sí puedes ejecutar.
Conclusiones
Ambos formatos siguen el mismo patrón de identificar-extraer-modo que el resto de este sitio: confirma la variante exacta antes de elegir un modo de hashcat, porque LUKS1 frente a LUKS2 y los cuatro prefijos de BitLocker no son intercambiables, y meter el equivocado en el modo 14600 o 22100 solo consigue que se rechace el hash. Donde el secreto subyacente es una contraseña elegida por una persona o un PIN corto, un ataque de diccionario o de máscara es realista; donde es una clave de recuperación generada por máquina, ninguna cantidad de GPU cambia las matemáticas del espacio de claves.