Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
bitcracker — BitCracker es la primera herramienta de código abierto para descifrar contraseñas de unidades de memoria cifradas con BitLocker | Kitploit
Herramientas/GitHubGitHub/e-ago/bitcracker
Descifrado de ContraseñasHerramientas de Cifrado/DescifradoCriptografía
GitHube-ago/bitcracker

bitcracker

BitCracker es la primera herramienta de código abierto para descifrar contraseñas de unidades de memoria cifradas con BitLocker

Ver Repositorio
9652078hace 4 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

BitCracker

BitCracker es la primera herramienta de código abierto para descifrar contraseñas de dispositivos de almacenamiento (Disco Duro, Pendrive USB, tarjeta SD, etc...) cifrados con BitLocker, una función de cifrado disponible en Windows Vista, 7, 8.1 y 10 (ediciones Ultimate, Pro y Enterprise). BitLocker ofrece varios métodos de autenticación diferentes para cifrar un dispositivo de almacenamiento, como el Módulo de Plataforma Confiable (TPM), Tarjeta Inteligente, Contraseña de Recuperación, Contraseña proporcionada por el usuario.

Mediante un ataque de diccionario, BitCracker intenta encontrar la Contraseña de Usuario o la Contraseña de Recuperación correcta para descifrar el dispositivo de almacenamiento cifrado. Se ha implementado en CUDA y OpenCL.

Artículo

Varias revistas retrasaron la publicación de nuestro artículo sobre BitCracker (casi 3 años, con rechazo final después de varias revisiones) que explica los detalles de nuestro ataque, el formato de volumen de Cifrado de Unidad BitLocker (BDE) y posibles debilidades en el procedimiento de cifrado/descifrado. Finalmente, publicamos el artículo aquí: https://arxiv.org/abs/1901.01337 . No dudes en comentar y compartir.

Requisitos

Para ejecutar BitCracker-CUDA, los requisitos mínimos son:

  • una GPU NVIDIA con CC 3.5 o posterior
  • CUDA 7.5 o más reciente

Para ejecutar BitCracker-OpenCL, los requisitos mínimos son cualquier GPU o CPU compatible con OpenCL (puedes encontrar ayuda aquí.

BitCracker requiere al menos 260 MB de memoria de dispositivo.

Recomendamos encarecidamente ejecutar el ataque en una GPU en lugar de una CPU por razones de rendimiento (consulta la sección Rendimiento).

Compilación

Ejecutar el script build.sh genera 4 ejecutables dentro del directorio build: bitcracker_hash, bitcracker_rpgen, bitcracker_cuda, bitcracker_opencl.

Para compilar bitcracker_cuda de manera coherente con tu GPU NVIDIA y versión de CUDA, debes modificar el src_CUDA/Makefile eligiendo la versión SM correcta. Como referencia, puedes usar la siguiente tabla:

Preparar el ataque

Debes crear la imagen de tu dispositivo de almacenamiento cifrado con BitLocker usando, por ejemplo, el comando dd:

root@kitploit:~
sudo dd if=/dev/disk2 of=/path/to/imageEncrypted.img conv=noerror,sync
4030464+0 registros leídos
4030464+0 registros escritos
2063597568 bytes transferidos en 292.749849 segundos (7049013 bytes/seg)

Luego debes ejecutar el ejecutable bitcracker_hash en tu imageEncrypted.img para:

  • comprobar si la imagen tiene un formato válido y puede ser atacada por BitCracker
  • comprobar si el dispositivo de almacenamiento original se cifró con una Contraseña de Usuario o una Contraseña de Recuperación
  • extraer el hash que describe la imagen

Si la ejecución se completa correctamente, bitcracker_hash produce 1 o 2 archivos de salida:

  • hash_user_pass.txt : si el dispositivo fue cifrado con una Contraseña de Usuario, este archivo contiene el hash necesario para iniciar el modo de ataque de Contraseña de Usuario.
  • hash_recv_pass.txt : el hash necesario para iniciar el modo de ataque de Contraseña de Recuperación

Los volúmenes cifrados con BDE pueden tener diferentes formatos para diferentes métodos de autenticación. Si bitcracker_hash no puede encontrar la Contraseña de Recuperación en tu imagen cifrada, por favor abre un issue o contáctame

Un ejemplo:

root@kitploit:~
/build/bitcracker_hash -o test_hash -i ./Images/imgWin7

---------> BitCracker Hash Extractor <---------
Abriendo archivo ./Images/imgWin7

....

Firma encontrada en 0x02208000
Versión: 2 (Windows 7 o posterior)

Entrada VMK encontrada en 0x022080bc
¡VMK cifrada con contraseña de usuario encontrada!
VMK cifrada con AES-CCM

Entrada VMK encontrada en 0x0220819c
¡VMK cifrada con clave de recuperación encontrada!
VMK cifrada con AES-CCM

Hash de Contraseña de Usuario:
$bitlocker$0$16$89a5bad722db4a729d3c7b9ee8e76a29$1048576$12$304a4ac192a2cf0103000000$60$24de9a6128e8f8ffb97ac72d21de40f63dbc44acf101e68ac0f7e52ecb1be4a8ee30ca1e69fbe98400707ba3977d5f09b14e388c885f312edc5c85c2

Hash de Clave de Recuperación:
$bitlocker$2$16$8b7be4f7802275ffbdad3766c7f7fa4a$1048576$12$304a4ac192a2cf0106000000$60$6e72f6ef6ba688e72211b8cf8cc722affd308882965dc195f85614846f5eb7d9037d4d63bcc1d6e904f0030cf2e3a95b3e1067447b089b7467f86688

Archivo de salida para ataque de contraseña de usuario: "hash_user_pass.txt"
Archivo de salida para ataque de contraseña de recuperación: "hash_recv_pass.txt"

Ataque de Contraseña de Usuario

Puedes usar este tipo de ataque si el dispositivo de almacenamiento ha sido cifrado con una contraseña proporcionada por el usuario, como se muestra en la siguiente imagen. alt text BitCracker realiza un ataque de diccionario, por lo tanto debes proporcionar una lista de palabras con posibles contraseñas de usuario.

Para iniciar el ataque necesitas:

  • el archivo hash_user_pass.txt
  • una lista de palabras con posibles contraseñas de usuario (debes proporcionarla tú mismo)

Un ejemplo de línea de comandos:

./build/bitcracker_cuda -f hash_user_pass.txt -d wordlist.txt -t 1 -b 1 -g 0 -u

Donde:

  • -f : ruta al archivo hash_user_pass.txt
  • -d : ruta a tu lista de palabras
  • -t : número de contraseñas procesadas por cada hilo CUDA
  • -b : número de bloques CUDA
  • -g : ID del dispositivo GPU NVIDIA
  • -u : especifica que deseas un ataque de contraseña de usuario

Para todas las opciones disponibles, escribe ./build/bitcracker_cuda -h. Para obtener el mejor rendimiento, consulta la tabla en la sección Rendimiento para configurar correctamente las opciones t y b según tu GPU NVIDIA.

Se pueden aplicar las mismas consideraciones para el ejecutable bitcracker_opencl.

Un ejemplo de salida:

root@kitploit:~
====================================
Dispositivo seleccionado: GPU Tesla K80 (ID: 0)
====================================
....
Leyendo archivo hash "hash_user_pass.txt"
$bitlocker$0$16$0a8b9d0655d3900e9f67280adc27b5d7$1048576$12$b0599ad6c6a1cf0103000000$60$c16658f54140b3d90be6de9e03b1fe90033a2c7df7127bcd16cb013cf778c12072142c484c9c291a496fc0ebd8c21c33b595a9c1587acfc6d8bb9663

====================================
Ataque
====================================

Tipo de ataque: Contraseña de Usuario
Hilos CUDA: 1024
Bloques CUDA: 1
Contraseñas por hilo: 1
Máx. Contraseñas por kernel: 1024
Diccionario: wordlist.txt
Verificación estricta (-s): No
Comparación MAC (-m): No

Ejecución del kernel CUDA:
	Stream 0
	Número efectivo de contraseñas: 12
	Rango de contraseñas:
		abcdefshhf
		.....
		blablalbalbalbla12
	Tiempo: 28.651947 seg
	Contraseñas por segundo:     0.42 pw/sec

================================================
....
Contraseña encontrada: paperino
================================================

Actualmente BitCracker es capaz de procesar contraseñas de entrada con una longitud entre 8 y 55 caracteres.

Ataque de Contraseña de Recuperación

Durante el cifrado de un dispositivo de almacenamiento (independientemente del método de autenticación), BitLocker pide al usuario que guarde en algún lugar una Contraseña de Recuperación que puede usarse para restaurar el acceso al dispositivo de almacenamiento cifrado en caso de que no pueda desbloquear la unidad normalmente. Por lo tanto, la Contraseña de Recuperación es una especie de passe-partout para todos los métodos de autenticación y consiste en una clave de 48 dígitos como esta:

236808-089419-192665-495704-618299-073414-538373-542366

Consulta documentos de Microsoft para más detalles.

Al igual que con la contraseña de usuario, BitCracker puede realizar un ataque de diccionario para encontrar la Contraseña de Recuperación correcta generada por BitLocker para cifrar el dispositivo de almacenamiento. Ten en cuenta que actualmente solo podemos atacar la Contraseña de Recuperación si el dispositivo de almacenamiento no ha sido cifrado con TPM.

Para iniciar el ataque necesitas:

  • el archivo hash_recv_pass.txt
  • una lista de palabras con posibles contraseñas de recuperación

Generar y almacenar todas las contraseñas posibles es un problema difícil. Por esta razón, creamos un generador de Contraseñas de Recuperación llamado bitcracker_rpgen. Con esta herramienta puedes crear un conjunto de listas de palabras de Contraseñas de Recuperación para usar en tus ataques. Como ejemplo:

./build/bitcracker_rpgen -n 300 -p 10000000 -s 000000-000011-000022-000033-000044-000055-008459-015180

Esto genera:

  • -n : número de listas de palabras
  • -p : número de Contraseñas de Recuperación por lista de palabras
  • -s : generar Contraseñas de Recuperación comenzando desde esta

Puedes usar la configuración predeterminada ejecutándolo sin opciones:

root@kitploit:~
./build/bitcracker_rpgen

************* BitCracker Recovery Password wordlists generator *************

Ejecutando con esta configuración:
### Crear 100 listas de palabras
### Contraseñas de Recuperación por lista de palabras=5000000
### Permitir duplicados=No
### Generar comenzando desde=000000-000011-000022-000033-000044-000055-000066-000077

Creando lista de palabras "bitcracker_wlrp_0.txt" con 5000000 contraseñas
Primera contraseña=000000-000011-000022-000033-000044-000055-000066-000077
Última contraseña= 000000-000011-000022-000033-000044-000055-000902-217822
...

Ten en cuenta que la opción -s puede usarse para reiniciar la generación desde tu última Contraseña de Recuperación generada (en lugar de reiniciar cada vez desde la inicial). La opción -d habilita la posibilidad de tener duplicados en la misma Contraseña de Recuperación. Por ejemplo: 000000-000011-000055-000055-000044-000055-000902-217822

Para todas las opciones disponibles, escribe ./build/bitcracker_rpgen -h.

NOTA: Ten en cuenta que la cantidad de Contraseñas de Recuperación posibles es enorme:
contraseña de recuperación = 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536
Según nuestra investigación, la distribución de contraseñas es uniforme y no hay forma de encontrar números "más probables". Hasta ahora, no encontramos una regla para reducir la cantidad de posibles candidatos. Esto significa que el ataque de Contraseña de Recuperación podría durar para siempre (el ataque de Contraseña de Usuario es siempre el preferido). Pronto modificaremos la herramienta bitcracker_rpgen para generar Contraseñas de Recuperación de manera aleatoria en lugar de en secuencia ordenada.

Un ejemplo de línea de comandos:

./build/bitcracker_cuda -f hash_recv_pass.txt -d bitcracker_wlrp_0.txt -t 1 -b 1 -g 0 -r

Donde las opciones son las mismas que en el caso de Contraseña de Usuario, pero en lugar de -u debes especificar -r. Un ejemplo de salida:

root@kitploit:~
====================================
Dispositivo seleccionado: GPU Tesla K80 (ID: 0)
====================================

...
Leyendo archivo hash "hash_recv_pass.txt"
$bitlocker$2$16$432dd19f37dd413a88552225628c8ae5$1048576$12$a0da3fc75f6cd30106000000$60$3e57c68216ef3d2b8139fdb0ec74254bdf453e688401e89b41cae7c250739a8b36edd4fe86a597b5823cf3e0f41c98f623b528960a4bee00c42131ef


====================================
Ataque
====================================

Tipo de ataque: Contraseña de Recuperación
Hilos CUDA: 1024
Bloques CUDA: 1
Contraseñas por hilo: 8
Máx. Contraseñas por kernel: 8192
Diccionario: wordlist.txt
Verificación estricta (-s): No
Comparación MAC (-m): No

Ejecución del kernel CUDA:
	Contraseñas efectivas: 6014
	Rango de contraseñas:
		390775-218680-136708-700645-433191-416240-153241-612216
		.....
		090134-625383-540826-613283-563497-710369-160182-661364
	Tiempo: 193.358937 seg
	Contraseñas por segundo:    31.10 pw/sec


================================================
Ataque CUDA completado
Contraseñas evaluadas: 6014
Contraseña encontrada: 111683-110022-683298-209352-468105-648483-571252-334455
================================================

Falsos Positivos

Por defecto, BitCracker realiza un ataque rápido (tanto para el modo de Contraseña de Usuario como de Recuperación) que puede devolver algunos falsos positivos. En ese caso, puedes volver a ejecutar tu ataque con la opción -m que habilita la verificación MAC (solución más lenta).

Ejemplos

Para probar BitCracker en tu sistema antes de iniciar el ataque real, proporcionamos varias imágenes de dispositivos de almacenamiento cifrados.

  • imgWin7: BitLocker en Windows 7 Enterprise Edition OS
  • imgWin8: BitLocker en Windows 8 Enterprise Edition OS
  • imgWin10Compat.vhd: BitLocker (modo compatible) en Windows 10 Pro Edition OS
  • imgWin10NotCompat.vhd: BitLocker (modo no compatible) en Windows 10 Pro Edition OS
  • imgWin10NotCompatLongPsw.vhd : BitLocker (modo no compatible) en Windows 10 Pro Edition OS con una contraseña de usuario más larga

Puedes atacar esas imágenes con ambos modos de Contraseña de Usuario y Recuperación, usando las listas de palabras almacenadas en la carpeta Dictionary.

Rendimiento

Aquí informamos los mejores rendimientos de BitCracker en caso de ataque rápido (predeterminado) a la Contraseña de Usuario (opción -u).

Rendimiento:

N.B. Cada contraseña requiere alrededor de 2.097.152 SHA-256

John The Ripper

Lanzamos BitCracker como el formato OpenCL-BitLocker en John The Ripper (--format=bitlocker-opencl). Los archivos hash generados por bitcracker_hash (consulta la sección Cómo hacerlo) son completamente compatibles con el formato de John.
En la GTV100, la tasa de contraseñas es de aproximadamente 3150p/s. El equipo de JtR desarrolló la versión para CPU de este ataque (--format=bitlocker); en una CPU Intel(R) Xeon(R) v4 2.20GHz, la tasa de contraseñas es de aproximadamente 78p/s.

Hashcat

Esto es un trabajo en progreso...

Historial de cambios

Nov 2021: Código actualizado para ejecutarse en GPU NVIDIA Ampere usando CUDA 11.x

Próximos pasos

  • Proporcionar una implementación multi-GPU
  • Proporcionar una interfaz Qt

Referencias, créditos y contactos

¡Por favor comparte y prueba nuestro proyecto: necesitamos tu feedback!

Agradecimientos especiales al equipo de John The Ripper, y a los proyectos Dislocker y LibBDE.

Este es un proyecto de investigación en colaboración con el Consejo Nacional de Investigación de Italia publicado bajo licencia GPLv2.
Copyright (C) 2013-2021 Elena Ago (elena dot ago at gmail dot com) y Massimo Bernaschi (massimo dot bernaschi at gmail dot com)
Proporcionaremos información adicional sobre el ataque de BitCracker en un artículo futuro.

Aunque usamos la licencia GPLv2, estamos abiertos a colaboraciones. Para cualquier información adicional, colaboraciones o reporte de errores, por favor contáctenos o abra un issue.

Descargar herramienta
Arquitectura GPUCUDA sugeridoMakefile
KeplerCUDA 7.5arch=compute_35,code=sm_35
MaxwellCUDA 8.0arch=compute_52,code=sm_52
PascalCUDA 9.0arch=compute_60,code=sm_60
VoltaCUDA 9.0arch=compute_70,code=sm_70
Acrónimo GPUGPUArchCC# SMRelojCUDA
GFTGeForce TitanKepler3.5148357.0
GTK80Tesla K80Kepler3.5138757.5
GFTXGeForce Titan XMaxwell5.22410017.5
GTP100Tesla P100Pascal6.15613288.0
GTV100Tesla V100Volta7.08012909.0
AMDMRadeon Malta-----
VersiónGPU-t-bContraseñas por kernelContraseñas/segHash/seg
CUDAGFT813106.496303635 MH/s
CUDAGTK80814114.688370775 MH/s
CUDAGFTX824106.6089331.957 MH/s
CUDAGTP10015657.3441.4182.973 MH/s
CUDAGTV10018081.9203.2526.820 MH/s
OpenCLAMDM3264524.288241505 MH/s
OpenCLGFTX824196.6088841.853 MH/s