Introducción
VeraCrypt es una popular herramienta de código abierto para el cifrado sobre la marcha (on-the-fly encryption). Si bien proporciona una seguridad sólida, las contraseñas a veces pueden ser el eslabón más débil. Comprender cómo probar la fortaleza de estas contraseñas es una habilidad crítica en la auditoría de seguridad y las pruebas de penetración.
En este laboratorio, asumirá el rol de un analista de seguridad. Primero creará un volumen cifrado de VeraCrypt con una contraseña que sigue un patrón conocido. Luego, aprenderá a extraer los datos hash necesarios de este volumen. Finalmente, utilizará Hashcat, una potente herramienta de recuperación de contraseñas, para realizar un "ataque de máscara" (mask attack) y descifrar la contraseña. Este proceso le brindará experiencia práctica con técnicas fundamentales utilizadas en forense digital y hacking ético.
Crear un Pequeño Volumen Cifrado de VeraCrypt
En este paso, utilizará la interfaz de línea de comandos de VeraCrypt para crear un nuevo contenedor de archivos cifrado. Este contenedor actuará como nuestro objetivo para el ejercicio de recuperación de contraseñas. Utilizaremos intencionadamente una estructura de contraseña simple para demostrar la efectividad de un ataque de máscara en pasos posteriores.
Se le guiará a través de un proceso de creación interactivo. Siga las instrucciones cuidadosamente.
Primero, ejecute el comando para crear un nuevo volumen. La opción -t habilita el modo de texto, y -c significa crear (create).
veracrypt -t -c
El programa ahora le hará una serie de preguntas. Responda a ellas de la siguiente manera:
- Tipo de Volumen (Volume Type): Presione
Enterpara seleccionar la opción predeterminadaNormal. - Ubicación del Volumen (Volume Location): Escriba
myvolume.hcy presioneEnter. Esto creará el archivo del volumen en su directorio actual (~/project). - Tamaño del Volumen (Volume Size): Escriba
1M(para 1 Megabyte) y presioneEnter. Un tamaño pequeño es suficiente para este laboratorio. - Algoritmo de Cifrado (Encryption Algorithm): Presione
Enterpara seleccionar el predeterminadoAES. - Algoritmo Hash (Hash Algorithm): Presione
Enterpara seleccionar el predeterminadoSHA-512. - Sistema de Archivos (Filesystem): Presione
Enterpara seleccionar el predeterminadoFAT. - Contraseña (Password): Este es un paso crítico. Para este laboratorio, ingrese la contraseña
LabEx2024y presioneEnter. - Reingrese la Contraseña (Re-enter Password): Ingrese
LabEx2024nuevamente y presioneEnter. - PIM: Presione
Enterpara usar el valor predeterminado (sin PIM). - Archivos Clave (Keyfiles): Presione
Enterpara omitir el uso de archivos clave. - Recolección de Entropía (Entropy Collection): La herramienta le pedirá que escriba al menos 320 caracteres aleatorios para generar entropía criptográfica. Simplemente escriba caracteres aleatorios en su teclado hasta que la barra de progreso esté completa, y luego presione
Enter.
Después del último paso, VeraCrypt creará el archivo. Puede verificar su creación con el comando ls.
ls -l myvolume.hc
Debería ver una salida similar a esta, confirmando que el archivo existe y su tamaño es aproximadamente 1MB.
-rw-r--r-- 1 labex labex 1048576 Dec 01 12:34 myvolume.hc
Ahora ha creado con éxito un volumen cifrado de VeraCrypt.
Extraer los Primeros 512 Bytes como el Hash
En este paso, extraerá el hash de la contraseña del volumen de VeraCrypt que acaba de crear. Para los contenedores estándar de VeraCrypt que utilizan algoritmos hash como SHA-512 o RIPEMD-160, los datos necesarios para la verificación de la contraseña se almacenan dentro de los primeros 512 bytes del archivo del volumen. Hashcat puede utilizar estos datos directamente para realizar un ataque de descifrado.
Utilizaremos el comando dd, una potente utilidad para copiar y convertir datos.
Use el siguiente comando para leer los primeros 512 bytes de myvolume.hc y escribirlos en un nuevo archivo llamado veracrypt.hash.
if=myvolume.hc: Especifica el archivo de entrada (input file).of=veracrypt.hash: Especifica el archivo de salida (output file).bs=512: Establece el tamaño del bloque (block size) a 512 bytes.count=1: Especifica copiar solo 1 bloque.
dd if=myvolume.hc of=veracrypt.hash bs=512 count=1
El comando se ejecutará y mostrará un resumen de la operación.
1+0 records in
1+0 records out
512 bytes copied, 0.00012345 s, 4.1 MB/s
Ahora, verifique que el nuevo archivo hash se ha creado y tiene exactamente 512 bytes de tamaño.
ls -l veracrypt.hash
La salida debería verse así:
-rw-r--r-- 1 labex labex 512 Dec 01 12:35 veracrypt.hash
Ha extraído con éxito los datos hash que Hashcat utilizará para el ataque.
Identificar el Modo Correcto de Hashcat para VeraCrypt
En este paso, aprenderá cómo encontrar el "modo hash" correcto para Hashcat. Hashcat soporta cientos de tipos de hash diferentes, y debe indicarle exactamente qué tipo está intentando descifrar. Cada tipo se identifica por un número único.
Dado que creamos nuestro volumen con cifrado AES y el algoritmo hash SHA-512, necesitamos encontrar el modo correspondiente en Hashcat. Puede hacerlo buscando en la salida de ayuda de Hashcat.
Utilice el siguiente comando para mostrar la información de ayuda de Hashcat y filtrarla para obtener las líneas que contienen "VeraCrypt". El comando grep -i realiza una búsqueda insensible a mayúsculas y minúsculas.
hashcat --help | grep -i veracrypt
La salida listará todos los modos hash relacionados con VeraCrypt.
...
13711 | VeraCrypt RIPEMD160 + XTS 512 bit | Operating System
13712 | VeraCrypt RIPEMD160 + XTS 1024 bit | Operating System
13713 | VeraCrypt RIPEMD160 + XTS 1536 bit | Operating System
13721 | VeraCrypt SHA512 + XTS 512 bit | Operating System
13722 | VeraCrypt SHA512 + XTS 1024 bit | Operating System
13723 | VeraCrypt SHA512 + XTS 1536 bit | Operating System
13731 | VeraCrypt SHA256 + XTS 512 bit | Operating System
13732 | VeraCrypt SHA256 + XTS 1024 bit | Operating System
13733 | VeraCrypt SHA256 + XTS 1536 bit | Operating System
13751 | VeraCrypt Whirlpool + XTS 512 bit | Operating System
13752 | VeraCrypt Whirlpool + XTS 1024 bit | Operating System
13753 | VeraCrypt Whirlpool + XTS 1536 bit | Operating System
...
Revise la lista. Basándonos en nuestras elecciones en el Paso 1 (SHA512), el modo correcto para nuestro volumen es 13721. Utilizará este número de modo en el paso final para indicarle a Hashcat cómo interpretar el archivo veracrypt.hash.
Construir un Ataque de Máscara para una Estructura de Contraseña Conocida
En este paso, construirá una "máscara" para un ataque de Hashcat. Un ataque de máscara es increíblemente eficiente cuando se tiene algún conocimiento sobre la estructura de la contraseña. Para nuestro laboratorio, sabemos que la contraseña es LabEx2024. Fingiremos que solo conocemos la estructura: la palabra "LabEx" seguida de cuatro dígitos (como un año).
Hashcat utiliza marcadores de posición especiales, o "conjuntos de caracteres" (charsets), para definir una máscara:
?l= una letra minúscula (a...z)?u= una letra mayúscula (A...Z)?d= un dígito (0...9)?s= un carácter especial (!,@,#, etc.)
Basándonos en nuestra estructura supuesta ("LabEx" + cuatro dígitos), la máscara sería LabEx?d?d?d?d. Esto le indica a Hashcat que pruebe todas las combinaciones que comienzan con la cadena literal "LabEx" y terminan con cualquier secuencia de cuatro dígitos desde 0000 hasta 9999.
Hagamos una simulación (dry run) para ver qué contraseñas generará esta máscara. La opción -a 3 especifica un ataque de máscara, y --stdout le indica a Hashcat que imprima los candidatos generados en la pantalla en lugar de realizar un ataque real.
hashcat --stdout -a 3 LabEx?d?d?d?d
Este comando imprimirá rápidamente miles de contraseñas potenciales en su terminal, comenzando con LabEx0000, LabEx0001, y así sucesivamente, hasta llegar a LabEx9999. Puede presionar Ctrl+C para detener la salida en cualquier momento.
Esto confirma que nuestra máscara está correctamente construida para incluir la contraseña objetivo, LabEx2024.
Ejecutar el Ataque para Recuperar la Contraseña del Volumen
En este paso final, combinará todas las piezas para lanzar el ataque y recuperar la contraseña del volumen VeraCrypt. Tiene el archivo hash (veracrypt.hash), el modo hash (13721) y la máscara de ataque (LabEx?d?d?d?d).
Ensamblemos el comando final de Hashcat:
-m 13721: Establece el modo hash para VeraCrypt (SHA512).-a 3: Establece el modo de ataque a ataque de máscara.veracrypt.hash: El archivo hash objetivo.LabEx?d?d?d?d: La máscara de contraseña a utilizar.
Ahora, ejecute el comando en su terminal:
hashcat -m 13721 -a 3 veracrypt.hash LabEx?d?d?d?d
Hashcat comenzará. Dado que el espacio de contraseñas es pequeño, el ataque debería finalizar muy rápidamente. Verá actualizaciones de estado y luego el resultado final.
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: VeraCrypt SHA512 + XTS 512 bit
Hash.Target......: veracrypt.hash
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Mask.......: LabEx?d?d?d?d [9]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: XXXXXX H/s (0.01ms) @ Accel:X Loops:X
Recovered........: 1/1 (100.00%) Digests
Progress.........: 10000/10000 (100.00%)
Rejected.........: 0/10000 (0.00%)
Restore.Point....: 10000/10000 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1
Candidates.#1....: LabEx0000 -> LabEx9999
Hardware.Mon.#1..: Util: 99%
veracrypt.hash:LabEx2024
All hashes have been recovered.
...
¡Éxito! La línea veracrypt.hash:LabEx2024 muestra que Hashcat ha recuperado con éxito la contraseña.
Hashcat guarda automáticamente las contraseñas descifradas en un archivo llamado hashcat.potfile. Puede ver la contraseña recuperada en cualquier momento utilizando la opción --show:
hashcat -m 13721 --show veracrypt.hash
Esto simplemente mostrará nuevamente el hash y la contraseña descifrados.
veracrypt.hash:LabEx2024
¡Felicitaciones, ha descifrado con éxito una contraseña de volumen VeraCrypt utilizando Hashcat!
Resumen
En este laboratorio, adquirió experiencia práctica en el análisis de seguridad de contraseñas al dirigirse a un volumen cifrado con VeraCrypt.
Realizó con éxito los pasos clave de un proceso de recuperación de contraseñas:
- Creó un contenedor cifrado utilizando las herramientas de línea de comandos de VeraCrypt.
- Extrajo los datos hash de 512 bytes necesarios para un ataque offline.
- Utilizó el sistema de ayuda de Hashcat para identificar el modo hash correcto para su objetivo.
- Construyó y probó un ataque de máscara dirigido basado en una estructura de contraseña conocida.
- Ejecutó el ataque para recuperar con éxito la contraseña del volumen.
Estas habilidades son fundamentales en los campos de la ciberseguridad ética (ethical hacking) y la forense digital, demostrando cómo las políticas y estructuras de contraseñas pueden ser probadas en busca de debilidades. Comprender estos vectores de ataque es el primer paso para construir defensas más sólidas.


