Obtener datos de una unidad cifrada

Obtener datos de una unidad cifrada
El cifrado es la mejor manera de asegurarse de que nadie pueda leer los archivos privados dentro de su disco duro, incluso en caso de que haya accedido a su disco físicamente. El atacante tiene que ingresar la contraseña de cifrado, una frase de claves o la clave privada para acceder al contenido de los archivos dentro de esa unidad. El cifrado convierte el archivo en observar aleatoriamente los datos sin sentido a los que no se puede acceder sin ingresar la frase de pases. El cifrado no significa que pueda proteger la unidad de malware, virus y gusanos mientras el sistema se está ejecutando, es solo que alguien no puede tener en sus manos el contenido de la unidad sin ingresar la contraseña.

Comencemos con una descripción de algunos softwares de cifrado:

Veracrypt:

Veracrypt es una versión modificada de TrueCrypt, un famoso software de cifrado de código abierto que se puede usar tanto en Windows como en UNIX como sistemas operativos. Es una herramienta gratuita y de código abierto que proporciona cifrado de disco completo. Si se compara con TrueCrypt, VerACRYPT agrega algunos algos y formatos de cifrado nuevos y seguros para particiones encriptadas. Veracrypt proporciona cifrado con diferentes algoritmos de cifrado como AES, serpiente, Twofish, Camellia, etc. Además, usa 30 veces más iteraciones al cifrar una partición en comparación con TrueCrypt.

BitLocker:

BitLocker es un software de cifrado de disco completo popular disponible solo para Windows. Utiliza el algoritmo AES con claves de 128 o 256 bits para cifrado. Una cosa importante de BitLocker es que si deja su computadora encendida, todos sus archivos serán visibles. Windows BitLocker está disponible para cualquier persona que use Windows Vista o una versión superior de Windows. A través de BitLocker, un usuario solo puede cifrar toda la unidad a la vez.

Inicie bitlocker escribiendo en el área de búsqueda. Aparecerá una pantalla como esta

Haga clic en activar bitLocker frente a la partición deseada.

Ahora pedirá una contraseña. Ingrese una fuerte combinación de letras, números y caracteres especiales como contraseña y está listo para comenzar.

Para acceder a BitLocker Protected Drive en Linux, debe instalar Deslocker utilizando el siguiente comando:

ubuntu@ubuntu: ~ $ sudo apt install dislocker

Luks:

Luks (representa la configuración de teclas de Linux Unified) es una herramienta de cifrado de disco basada en Linux diseñada por Clemens Fruhwirth en 2004. No ofrece tantas características en comparación con VerACrypt, pero es flexible al usar algoritmos de cifrado. Luks simplemente no ofrece compatibilidad entre diferentes programas, pero también garantiza la administración de contraseñas de manera sistemática. Se utiliza como estándar para el cifrado del disco duro en UNIX como los sistemas operativos.

Para acceder a las unidades cifradas de LUKS en Windows, puede usar librecrypt.

FileVault 2:

FileVault2 es la respuesta de Apple a Windows BitLocker. Este software solo está disponible para Mac OS. Para el cifrado, utiliza el algoritmo de cifrado AES-OXT de 128 bits y solo admite el cifrado de clave simétrica utilizando una contraseña. Una cosa similar importante sobre BitLocker y FilEvault2 es que todos los datos de su unidad encriptada son visibles hasta que el sistema informático se apaga.

Cifrar un disco duro con Veracrypt:

Tomemos un USB o un disco duro y lo cifiquemos con Veracrypt y luego intentaremos romper su cifrado usando hashcat para acceder a nuestros datos.

Abra Veracrypt, verá una pantalla como esta:

Haga clic en Crear volumen y seleccione Crear un volumen con partición.

Haga clic en Siguiente y elija la partición deseada de particiones dadas.

Ahora tenemos dos cosas para elegir. Algoritmo de cifrado y algoritmo de hash.

Elija cualquier otro si tiene un requisito especial o dejarlo en el valor predeterminado debe ser suficiente.

Haga clic en Siguiente nos traerá para elegir contraseña.

Elija una contraseña segura con una combinación de letras, números y caracteres especiales según las instrucciones.

Haga clic en Siguiente solicitará un formato. Haga clic en Aceptar y después de un período corto, su unidad estará encriptada.

Cracking Veracrypt Cifrado:

Ahora para descifrar los volúmenes de Veracrypt con hashcat, debe proporcionar a hashcat los datos binarios que contienen hashes y información de cifrado. Lo que necesitará son los primeros 512 bytes del volumen de Veracrypt.

Las unidades de arranque requieren tirar de los 512 bytes ubicados en el último sector de la primera pista de la unidad. 1 pista tiene 63 sectores de largo, así que lo que debemos hacer es omitir 31744 (62*512) bytes y extraer los siguientes 512 bytes donde se almacena el encabezado. Para las unidades que no son Boot, necesitamos extraer los primeros 512 bytes.

Lo haremos usando DD en nuestra unidad USB cifrada llamada /dev /sdb1 usando el siguiente comando:

ubuntu@ubuntu: ~ $ sudo dd if =/dev/sdb1 of = binary_data bs = 512 count = 1
conv = noError, sync status = progreso
  • si = nombre de conducción
  • de =Archivo en el que se almacenarán los datos extraídos
  • BS =Tamaño del bloque (número de bytes que se extraen)
  • conv = noError, sync status = progress = Sigue haciendo el trabajo en caso de un error

Para las conductoras de arranque usaremos el siguiente comando, tenemos que omitir los primeros 31744 bytes:

ubuntu@ubuntu: ~ $ sudo dd if =/dev/sdb1 of = binary_data skip = 31744 bs = 512 count = 1
conv = noError, sync status = progreso

En caso de que cifre la unidad si seleccionamos una partición oculta, entonces tenemos que omitir los primeros bytes 64K (65536) y usar el siguiente comando:

ubuntu@ubuntu: ~ $ sudo dd if =/dev/sdb1 of = binary_data skip = 65536 bs = 512
count = 1 conv = noError, sync status = progreso

Hashcat:

Hashcat es la utilidad de recuperación de contraseña más potente y rápida que admite 5 modos de ataques para más de 300 algoritmos de hashing altamente optimizados. También es compatible con diferentes tipos de unidades de procesamiento gráfico (GPU) que pueden multiplicarse a su velocidad de agrietamiento. Hashcat está disponible para Windows y UNIX como los sistemas operativos.

Hashcat necesita 3 cosas para comenzar a agrietarse:

  1. metro: Tipo de hash
  2. a: tipo de ataque
  3. Archivo de datos binarios

Miremos a hashcat -help:

ubuntu@ubuntu: ~ $ hashcat --help
- [Opciones] -
Opciones cortas / largas | Tipo | Descripción | Ejemplo
================================+=======+=========== =============================+====================== ===
-M,--Hash-Type | Num | Tipo hash, ver referencias a continuación | -M 1000
-A,-Attack-Mode | Num | Modo de ataque, ver referencias a continuación | -A 3
-V, --versión | | Versión impresa |
-h, --help | | Ayuda de impresión |
--tranquilo | | Suprimir la salida |
--Hex-Charset | | Suponga que Charset se da en Hex |
--hex-sal | | Suponga que la sal se da en Hex |
--hex-wordlist | | Suponga que las palabras en la lista de palabras se dan en Hex |
--fuerza | | Ignorar advertencias |
--Estado | | Habilite la actualización automática de la pantalla de estado |
--Tímero de estado | Num | Establece segundos entre las actualizaciones de la pantalla de estado en X | --status-timer = 1
--stdin timeout-abort | Num | Abortar si no hay información de stdin por x segundos | --stdin timeout-abort = 300
--legible por máquina | | Mostrar la vista de estado en un formato legible por máquina |
--Guesar de Keep | | Sigue adivinando el hash después de que se haya roto |
--Autodificador desaconsejable | | Desactivar la funcionalidad de autoevaluación en el inicio |
--bucleback | | Agregue nuevas llanuras al directorio de inducción |
--Markov-hcstat2 | Archivo | Especifique el archivo hcStat2 para usar | --markov-hcstat2 = my.hcstat2
--Disable de Markov | | Deshabilita las cadenas de Markov, emula clásica fuerza bruta |
--Markov-clásico | | Habilita las cadenas clásicas de Markov, sin posposición |
-t,-umbral de markov | Num | Umbral x Cuando dejar de aceptar nuevas cadenas de Markov | -T 50
--tiempo de ejecución | Num | Sesión de abortes después de x segundos de tiempo de ejecución | --numeña = 10
--sesión | Str | Definir el nombre específico de la sesión | --session = mysession
--Restaurar | | Restaurar sesión de --session |
--restauración-desacoso | | No escriba el archivo de restauración |
--Restaure-File-Path | Archivo | Ruta específica para restaurar archivo | --Restore-File-Path = X.restaurar
-O, --outfile | Archivo | Definir Outfile para el hash recuperado | -O Outfile.TXT
--Outfile-formato | Num | Definir el formato Outfile X para el hash recuperado | --outfile-format =
--OUTFILE-AUTOHEX-DE-DISABLE | | Deshabilite el uso de $ hex [] en las llanuras de salida |
--Outfile-Check-Timer | Num | Establece segundos entre las verificaciones de Outfile a X | --outfile-check = 30
--Lista de palabras-AutoHex-Dispable | | Deshabilite la conversión de $ hex [] de la lista de palabras |
-P, -Separador | Char | Separador Char para hashlists y Outfile | -pag :
--stdout | | No rompa un hash, sino que solo imprima candidatos |
--programa | | Compare Hashlist con POTFILE; mostrar hashes agrietados |
--Izquierda | | Compare Hashlist con POTFILE; Mostrar hashes no agrios |
--nombre de usuario | | Habilitar ignorar los nombres de usuario en hashfile |
--eliminar | | Habilitar la eliminación de hashes una vez que se agrietan |
--eliminar-Timer | Num | Actualizar el archivo de hash de entrada cada x segundos | --Remove-Timer = 30
--Potfile-Disable | | No escribas POTFILE |
--Patfile-Path | Archivo | Camino específico a POTFILE | --Potfile-Path = mi.maceta
--codificación-de | Código | Forzar la codificación de palabras interna de x | --Encoding-From = ISO-8859-15
--codificación a | Código | Forzar la codificación interna de la lista de palabras a X | --Encoding-to = UTF-32LE
--Modo de depuración | Num | Define el modo de depuración (híbrido solo usando reglas) | --DEBUG-MODE = 4
--File de depuración | Archivo | Archivo de salida para reglas de depuración | --debug-file = bueno.registro
--inducción-dir | Dir | Especifique el directorio de inducción para usar para bucleback | -inducción = induce
--OUTFILE-CHECK-DIR | Dir | Especifique el directorio OutFile para monitorear las llanuras | --outfile-check-dir = x
--Logfile-Disable | | Desactivar el archivo de registro |
--HCCAPX-Message-Pair | Num | Cargue solo pares de mensajes desde HCCAPX Matching x | --hccapx-message-par = 2
--Correcciones de Nonce-error | Num | El rango de tamaño de BF para reemplazar los últimos bytes de AP | --since-error-correcciones = 16
--Teclado-Layout-Mapping | Archivo | Mesa de mapeo de diseño de teclado para modos de hash especiales | --keyb = alemán.hckmap
--TrueCrypt-KeyFiles | Archivo | KeyFiles para usar, separados con comas | --truecrypt-keyf = x.png
--Veracrypt-keyfiles | Archivo | KeyFiles para usar, separados con comas | --veracrypt-keyf = x.TXT
--Veracrypt-Pim | Num | Veracrypt iteraciones personales multiplicador | --veracrypt-pim = 1000
-B, - -Benchmark | | Ejecutar el punto de referencia de modos hash seleccionados |
--Benchmark-All | | Ejecutar el punto de referencia de todos los modos hash (requiere -b) |
--Solo velocidad | | Devolver la velocidad esperada del ataque, luego renunciar |
--solo progreso | | Devolver el paso del paso de progreso ideal y el tiempo para procesar |
-C,-Segment-Size | Num | Establece el tamaño en MB para almacenar en caché del archivo de Word a X | -C 32
--mapa de bits | Num | Establece bits mínimos permitidos para mapas de bits a x | --bitmap-min = 24
--bitmap-max | Num | Establece bits máximos permitidos para mapas de bits a x | --bitmap-max = 24
--Afinidad de CPU | Str | Bloqueos a dispositivos CPU, separados con comas | --CPU-Affinity = 1,2,3
--Hashes de ejemplo | | Muestre un ejemplo de hash para cada modo hash |
-I, --Opencl-Info | | Mostrar información sobre las plataformas/dispositivos OpenCL detectadas | -I
--OpenCl-Platforms | Str | Plataformas OpenCl para usar, separadas con comas | --Opencl-Platforms = 2
-D, --Epencl-Devices | Str | Dispositivos OpenCl para usar, separados con comas | -d 1
-D,-Opencl-Device-Types | Str | Tipos de dispositivo OpenCL para usar, separados con comas | -D 1
--OpenCl-Vector-Width | Num | Anular manualmente el ancho del vector opencl a x | --opencl-vector = 4
-O,-Optimizado-kernel-enable | | Habilitar núcleos optimizados (limita la longitud de la contraseña) |
-W, --Workload-Profile | Num | Habilite un perfil de carga de trabajo específico, vea el grupo a continuación | -W 3
-n, --kernel-accel | Num | Ajuste manual de carga de trabajo, establecer el tamaño del paso externo en x | -n 64
-U,-Kernel-Loops | Num | Ajuste manual de carga de trabajo, establecer el tamaño del paso del interior de Innloop a X | -U 256
-T,-Kernel-Presiones | Num | Ajuste manual de carga de trabajo, establecer el recuento de subprocesos en x | -T 64
-S, - -skip | Num | Omita X palabras desde el inicio | -S 1000000
-l, --limit | Num | Límite X palabras desde el inicio + palabras omitidas | -L 1000000
--Keyspace | | Show Keyspace Base: Mod Valores y renunciar |
-J,--regla-izquierda | Regla | Regla única aplicada a cada palabra desde la lista de palabras izquierda | -J 'C'
-K,-REGLA-RISTA | Regla | Regla única aplicada a cada palabra desde la lista de palabras correcta | -K '^-'
-R,-Rules-File | Archivo | Múltiples reglas aplicadas a cada palabra de listas de palabras | -r reglas/best64.regla
-G,-Generado-Rules | Num | Generar x reglas aleatorias | -g 10000
--generar reglas-Func-min | Num | FUERZA MIN X FUNCIONES POR REGLA |
--Generar reglas-Func-Max | Num | Force Max X Funciones por regla |
--generar reglas-semillas | Num | Fuerza de semilla RNG establecida en x |
-1,--Custom-Charset1 | CS | Charet de definido por el usuario ?1 | -1 ?l?d?u
-2,--Custom-Charset2 | CS | Charet de definido por el usuario ?2 | -2 ?l?d?s
-3,--Custom-Charset3 | CS | Charet de definido por el usuario ?3 |
-4,--Custom-Charset4 | CS | Charet de definido por el usuario ?4 |
-I, - -Increment | | Habilitar el modo de incremento de máscara |
--Incremento min | Num | Comience a incrementar en máscaras en x | --increment-min = 4
--incremento-max | Num | Deja de incremento de máscara en x | --increment-max = 8
-S,--Candidates-Show | | Habilitar generadores candidatos más lentos (pero avanzados) |
--servidor cerebral | | Habilitar el servidor de cerebro |
-z, --brain-client | | Habilitar el cliente de cerebro, activarse -s |
--Feates Brain-Client | Num | Definir las características del cliente del cerebro, ver más abajo | --Brain-Client-Features = 3
--Host cerebral | Str | Host del servidor de cerebro (IP o dominio) | --Brain-Host = 127.0.0.1
--puerto cerebral | Puerto | Puerto de servidor de cerebro | --Brain-Port = 13743
--Pasada de cerebro | Str | Contraseña de autenticación del servidor cerebral | --brain-password = bzfhcvgusjrq
--Sesión cerebral | Hex | Anula la sesión cerebral calculada automáticamente | --brain-session = 0x2ae611db
--Sesión cerebral-blanca Hex | Permitir solo sesiones dadas, separadas con comas | --Brain-session-whitelist = 0x2ae611db

Modos hash:

Veremos más de mil modos hash aquí. Estos son de interés ahora.

137xy | Veracrypt | Cifrado de disco completo (FDE)
X | 1 = PBKDF2-HMAC-RIPEMD160 | Cifrado de disco completo (FDE)
X | 2 = PBKDF2-HMAC-SHA512 | Cifrado de disco completo (FDE)
X | 3 = PBKDF2-HMAC-WHIRLPOOL | Cifrado de disco completo (FDE)
X | 4 = PBKDF2-HMAC-RIPEMD160 + MODE DE BOOT | Cifrado de disco completo (FDE)
X | 5 = PBKDF2-HMAC-SHA256 | Cifrado de disco completo (FDE)
X | 6 = PBKDF2-HMAC-SHA256 + BOOT-MODE | Cifrado de disco completo (FDE)
X | 7 = PBKDF2-HMAC-STREBOG-512 | Cifrado de disco completo (FDE)
Y | 1 = XTS 512 Bit Pure AES | Cifrado de disco completo (FDE)
Y | 1 = XTS 512 Bits Pure Serpent | Cifrado de disco completo (FDE)
Y | 1 = XTS 512 Bit Pure Twofish | Cifrado de disco completo (FDE)
Y | 1 = XTS 512 Bit Camellia pura | Cifrado de disco completo (FDE)
Y | 1 = XTS 512 Bit Kuznyechik puro | Cifrado de disco completo (FDE)
Y | 2 = XTS 1024 Bit Pure AES | Cifrado de disco completo (FDE)
Y | 2 = xts 1024 bits puro serpiente | Cifrado de disco completo (FDE)
Y | 2 = XTS 1024 Bit Pure Twofish | Cifrado de disco completo (FDE)
Y | 2 = XTS 1024 Bit Camellia pura | Cifrado de disco completo (FDE)
Y | 2 = XTS 1024 Bit Kuznyechik puro | Cifrado de disco completo (FDE)
Y | 2 = XTS 1024 Bit en cascada AES-TWOFISH | Cifrado de disco completo (FDE)
Y | 2 = XTS 1024 Bit Camellia-Kuznyechik en cascada | Cifrado de disco completo (FDE)
Y | 2 = XTS 1024 bits en cascada Camellia-serpent | Cifrado de disco completo (FDE)
Y | 2 = XTS 1024 Bit en cascada Kuznyechik-aes | Cifrado de disco completo (FDE)
Y | 2 = XTS 1024 Bit en cascada Kuznyechik-Twofish | Cifrado de disco completo (FDE)
Y | 2 = XTS 1024 Bit en cascada Serpent-AES | Cifrado de disco completo (FDE)
Y | 2 = XTS 1024 Bit en cascada Twofish-serpent | Cifrado de disco completo (FDE)
Y | 3 = xts 1536 bit todos | Cifrado de disco completo (FDE)
14600 | Luks | Cifrado de disco completo (FDE)
16700 | FileVault 2 | Cifrado de disco completo (FDE)
18300 | Sistema de archivos de Apple (APFS) | Cifrado de disco completo (FDE)

Modos de ataque:

# | Modo
===+======
0 | Derecho
1 | Combinación
3 | Fuerza bruta
6 | Lista de palabras híbridas + máscara
7 | Máscara híbrida + lista de palabras

Tenemos las 3 cosas que necesitas hashcat, hagámoslo usando el siguiente comando:

ubuntu@ubuntu: ~ $ sudo hashcat -a 0 -m 13722 binary_data Wordlist.txt --force
hashcat (v5.1.0) Empezando ..
Hashes: 1 digeridos; 1 resumen únicos, 1 sales únicas
Mapas de bits: 16 bits, entradas 65536, máscara 0x0000ffff, 262144 bytes, 5/13 gira
Reglas: 1
Optimizadores aplicables:
* Cero byte
* Hash de una sola
*
* Bucleado
* Usa-64 bits
Longitud mínima de contraseña compatible con el kernel: 0
Longitud máxima de contraseña compatible con el kernel: 64
* Dispositivo #1: build_opts '-cl-std = cl1.2 -I opencl -i/usr/share/hashcat/opencl -d
Local_mem_type = 2 -d Vendor_id = 64 -d cuda_arch = 0 -d amd_rocm = 0 -d vect_size = 4 -d
Dispositivo_type = 2
-D DGST_R0 = 0 -D DGST_R1 = 1 -D DGST_R2 = 2 -D DGST_R3 = 3 -D DGST_ELEM = 16 -D
Kern_type = 6222 -d _Unroll '
[Opciones de Clang de registro] "/usr/bin/ld" "--eh-frame-hdr" "-m" "elf_x86_64" -shared "
"-o" "/root/.Cache/POCL/Uncaced/TempFile-70-00-EB-2C-AA.Entonces "" -l/usr/lib/gcc/x86_64
-Linux-gnu/9 "" -l/usr/lib/gcc/x86_64-linux-gnu/9/.../.../.../x86_64-linux-gnu "
"-L/usr/lib/gcc/x86_64-linux-gnu/9/.../.../.../.../lib64" "-l/lib/x86_64-linux-gnu"
"-L/lib/.../lib64" "-l/usr/lib/x86_64-linux-gnu" "-l/usr/lib/.../lib64"
"-L/usr/lib/x86_64-linux-gnu/.../.../lib64" "-l/usr/lib/gcc/x86_64-linux-gnu/9/
.../.../... "" -l/usr/lib/llvm-6.0/bin/.../lib "" -l/lib "" -l/usr/lib "
"/raíz/.Cache/POCL/Uncaced/TempFile-B1-44-3F-F1-67.entonces.o "" -lm "
Cache Dictionary Hit:
* Nombre de archivo ...: lista de palabras.TXT
* Contraseñas.: 600000
* Bytes ...: 6000000
* Keyspace ...: 600000
[Opciones de Clang de registro] "/usr/bin/ld" "--eh-frame-hdr" "-m" "-l/usr/lib/llvm-6.0/bin/.../lib "
"-L/lib" "-l/usr/lib" "/root/.Cache/POCL/Uncached/TempFile-E2-BA-DB-1F-BA.entonces.o "" -lm "" -lm "
"-lgcc" "--as necesaria" "-lgcc_s" "--no-como es necesario" -lc "" -lgcc "" --Sefered "-lgcc_s"
"-No-como es necesario"

binary_data: Tokio2002

Sesión ...: hashcat
Estado ...: agrietado
Picadillo.Tipo ...: Veracrypt PBKDF2-HMAC-SHA512 + XTS 1024 BIT
Picadillo.Objetivo ...: binary_data
Tiempo.Comenzó…: jueves 11 de junio 20:38:17 2020 (11 segundos)
Tiempo.Estimado ...: Jun 11 de junio 20:38:28 2020 (0 segundos)
Adivinar.Base ...: archivo (lista de palabras.TXT)
Adivinar.Cola ...: 1/1 (100.00%)
Velocidad.#1 ...: 0 H/S (0.57ms) @ acel: 32 bucles: 32 thr: 1 vec: 4
Recuperado ...: 1/1 (100.00%) Digests, 1/1 (100.00%) sales
Progreso ...: 600000/60000 (100.00%)
Rechazado ...: 0/60000 (0.00%)
Restaurar.Punto ...: 0/60000 (0.00%)
Restaurar.Sub.#1 ...: Salt: 0 Amplificador: 0-1 iteración: 499968-499999
Candidatos.#1 ...: Mango 23232 -> WrongPassword23

Tenemos la contraseña Tokio2002.

Cifrar un viaje con luks:

Veamos cómo cifrar un USB usando el cifrado LUKS:

En primer lugar, el paquete de CryptSetup-Luks de instalación utilizando el siguiente comando:

ubuntu@ubuntu: ~ $ sudo apt install cryptSetup-Luks

Ahora use el siguiente comando para configurar la partición deseada para el cifrado:

ubuntu@ubuntu: ~ $ cryptSetup -y -v luksformat /dev /xdc

XDC es el nombre de la partición. Si no sabe el nombre de la partición, use "fdisk -l".

Ahora cree un dispositivo lógico de dispositivos mapeadores montados para la partición de Luks cifrado usando:

ubuntu@ubuntu: ~ $ cryptsetup luksopen /dev /xdc

Pedirá una frase de pases. Ingrese una fuerte combinación de letras, números y caracteres especiales como contraseña y está listo para comenzar.

Cracking Luks Cifrytion:

Ahora, para descifrar los volúmenes de Luks con hashcat, debe alimentar el hashcat con un archivo de datos binario correcto. Podemos extraer esos datos utilizando el siguiente comando:

ubuntu@ubuntu: ~ $ sudo dd if =/dev/sdb1 of = encabezado.luks bs = 512 recuento = 4097
conv = noError, sync status = progreso

Esto creará un archivo de 2 MB que contiene todos los datos que hashcat necesitas para agrietarse.

Hashcat:

Veamos la sintaxis hashcat:

ubuntu@ubuntu: ~ $ sudo hashcat -a -metro

Ahora tenemos el archivo binario y la lista de palabras, pero no conocemos el tipo de ataque y la typeofencryption. Para esta información, echaremos un vistazo a hashcat -help.

Descubrimos ambos:

typeofencryption:

14600 | Luks | Cifrado de disco completo (FDE)
16700 | FileVault 2 | Cifrado de disco completo (FDE)
18300 | Sistema de archivos de Apple (APFS) | Cifrado de disco completo (FDE)

Tipo de ataque:

# | Modo
===+======
0 | Derecho
1 | Combinación
3 | Fuerza bruta

Ahí vamos, comenzaremos a agrietarse escribiendo el siguiente comando:

ubuntu@ubuntu: ~ $ sudo hashcat -a 0 -m 14600 encabezado.Luks Lista de palabras.TXT
hashcat (v5.1.0) Empezando ..
Dispositivo #1: build_opts '-cl-std = cl1.2 -I opencl -i/usr/share/hashcat/opencl -d
Local_mem_type = 2 -d Vendor_id = 64 -d cuda_arch = 0 -d amd_rocm = 0 -d vect_size = 4 -d
Dispositivo_type = 2 -d dgst_r0 = 0 -d dgst_r1 = 1 -d dgst_r2 = 2 -d dgst_r3 = 3 -d dgst_elem = 16
-D kern_type = 6222 -d _Unroll '
[Opciones de Clang de registro] "/usr/bin/ld" "--eh-frame-hdr" "-m" "elf_x86_64" -shared "
"-o" "/root/.Cache/POCL/Uncaced/TempFile-70-00-EB-2C-AA.entonces"
"-L/usr/lib/gcc/x86_64-linux-gnu/9" "-l/usr/lib/gcc/x86_64-linux-gnu/9/.../.../.../////////
x86_64-linux-gnu "" -l/usr/lib/gcc/x86_64-linux-gnu/9/.../.../.../.../lib64 "" -l/lib/
x86_64-linux-gnu "" -l/lib/.../lib64 "" -l/usr/lib/x86_64-linux-gnu "" -l/usr/lib/...////
lib64 "" -l/usr/lib/x86_64-linux-gnu/.../.../lib64 "" -l/usr/lib/gcc/x86_64-linux-gnu/9/9/
.../.../... "" -l/usr/lib/llvm-6.0/bin/.../lib "" -l/lib "" -l/usr/lib ""/root/.caché/POCL/
Uncacado/Tempfile-B1-44-3F-F1-67.entonces.o "" -lm "
Cache Dictionary Hit:
* Nombre de archivo ...: lista de palabras.TXT
* Contraseñas.: 50
* Bytes ...: 500
* Keyspace ...: 50
[Opciones de Clang de registro] "/usr/bin/ld" "--eh-frame-hdr" "-m"
"-L/usr/lib/llvm-6.0/bin/.../lib "" -l/lib "" -l/usr/lib ""/root/.caché/POCL/
Uncacionado/TempFile-E2-BA-DB-1F-BA.entonces.o "" -lm "" -lm "" -lgcc "" --s necesario "
"-lgcc_s" "--no-como es necesario" "-lc" "-lgcc" "--Seeded" -lgcc_s ""--no-como es necesario "

encabezamiento.Luks: Tokio2002

Sesión ...: hashcat
Estado ...: agrietado
Picadillo.Tipo ...: luks
Picadillo.Objetivo ...: encabezado.Luks
Tiempo.Comenzó…: jueves 11 de junio 20:38:17 2020 (11 segundos)
Tiempo.Estimado ...: Jun 11 de junio 20:38:28 2020 (0 segundos)
Adivinar.Base ...: archivo (lista de palabras.TXT)
Adivinar.Cola ...: 1/1 (100.00%)
Velocidad.#1 ...: 0 H/S (0.57ms) @ acel: 32 bucles: 32 thr: 1 vec: 4
Recuperado ...: 1/1 (100.00%) Digests, 1/1 (100.00%) sales
Progreso ...: 50/50 (100.00%)
Rechazado ...: 0/50 (0.00%)
Restaurar.Punto ...: 0/50 (0.00%)
Restaurar.Sub.#1 ...: Salt: 0 Amplificador: 0-1 iteración: 499968-499999
Candidatos.#1 ...: Mango 23232 -> WrongPassword23

Tenemos la contraseña Tokio2002.

Listas de palabras personalizadas usando Crunch:

Crear una lista de palabras de una manera que desee es una buena habilidad para tener en su cinturón. Ayuda mucho en la fuerza bruta y los ataques del diccionario. Una de las herramientas que se pueden usar para hacer una lista de palabras personalizada es Crunch.

ubuntu@ubuntu: ~ $ crunch
Uso: Crunch [Opciones]
  • Min: longitud mínima
  • Max: longitud máxima
  • Opciones: Varias opciones que encontraremos en su página Man

Opciones:

b: tamaño máximo
C: número de líneas
d: Límite número de caracteres duplicados
mi: detener en caso de que se alcance una determinada cadena
F: Use Charset.archivo LST para generar desde
i: invertir
O: Salida al archivo especificado
R: reanudar una sesión anterior
s: Especifique la cadena con la que comenzará la lista de palabras
t: Establecer patrón usando @,%^ (letras minúsculas, letras mayúsculas, números, caracteres especiales simultáneamente)
Z: comprimir el archivo de salida

Supongamos que tenemos que generar una lista de palabras con los caracteres mínimos 6 y los caracteres máximos 8, utilizaremos el siguiente comando y guardaremos la salida en salida.TXT:

ubuntu@ubuntu: ~ $ crunch 6 8 -O Salida.TXT

El Crunch ahora generará la siguiente cantidad de datos: 1945860473024 bytes

1855717 MB
1812 GB
1 TB
0 PB

El Crunch ahora generará el siguiente número de líneas: 217167790528

Supongamos que otro escenario en el que sabemos que el cumpleaños del objetivo es 2002 y generalmente usa una contraseña de 9 caracteres que terminan con su cumpleaños. Usaremos el siguiente comando para generar una lista de palabras que coincida con todas estas características y guardarlo en un archivo llamado Lista de palabras.TXT.

ubuntu@ubuntu: ~ $ crunch 9 9 -t @@@@@ 2002 -o Lista de palabras.TXT

El Crunch ahora generará la siguiente cantidad de datos: 118813760 bytes

113 MB
0 GB
0 TB0 PB

El Crunch ahora generará el siguiente número de líneas: 11881376

Crunch: 100% completado de salida de generación

ubuntu@ubuntu: ~ $ ls -la lista de palabras.TXT
-RW-RW-RW- 1 Azad Azad 118813760 Jun 13 14:43 Lista de palabras.TXT

Saber cómo crear las listas de palabras correctas para su tarea es una habilidad que puede ahorrar mucho tiempo en los ataques de diccionario.

Conclusión:

Si está tratando de elegir entre el software de cifrado, algún software de cifrado como Veracrypt no permitirá que alguien abra sus unidades sin ingresar una contraseña, incluso si la persona maliciosa se registra, mientras usa algún software como BitLocker para Windows y FileVault2 para Apple hace que todo lo haga todo. sus archivos visibles si el usuario ha iniciado sesión. Cifrar sus unidades es algo bueno, pero el uso de contraseñas débiles, repetidas o adivinables para ellas los facilitará. Casi todos los tipos de cifrado se pueden romper, dependiendo de la longitud de la contraseña y la complejidad. Las unidades de encriptación de agrietamiento utilizando una lista de palabras personalizada ahorrarán una mucho tiempo y ayudará a realizar la tarea de manera eficiente. Hacer buenas listas de palabras es un arte, muchas herramientas están disponibles como Crunch, Cewl, etc. que lo ayudarán a hacerlo. Luego hay algunas herramientas muy buenas como hashcat, Johntheripper que puede romper cualquier tipo de cifrado si se proporciona el archivo binario correcto y la lista de palabras correcta. En comparación con John, hashcat puede hacer uso de GPU y es mucho más rápido con una velocidad de 882 c/s sobre John con una velocidad de 54.8 C/S.