ITCooky Recetas

Vamos a cocinar it cositas

¡Como encontrar una contraseña olvidada para el archivo ZIP RAR usando John-the-ripper!

дата septiembre 17, 2022

La situación cotidiana habitual – un antiguo archivo, la contraseñas olvidada ya desde hace mucho tiempo, ¿qué se puede hacer? Se puede encontrarlo probando todas contraseñas posible en un tiempo apropiado usando GPU, claro, si es una contraseña humana y no 8 caracteres con una letra mayúscula, una letra mayúscula, una cirilica, una inglesa, un número, ¡un carácter especial! También puede hacerlo en la CPU y no en la GPU, pero en lugar de meses, tomará años, se trata de los núcleos en los procesadores, solo hay una docena de núcleos en CPU y hay miles en la tarjeta de video.

A John-the-ripper lo elegi porque él (John) al menos daba signos de vida – funcionaba, pero por supuesto tiene muchas rarezas, ¡pero primero sobre las rarezas de Ubuntu 22!

En Ubuntu podemos instalarlo desde los repositorios
sudo apt-get install john-the-ripper
pero es la versión anterior 1.8 donde no hay tiene configuraciones modernas en absoluto

Se puede instalarlo a través de snap
sudo snap install john-the-ripper
No me gusta snap y ahora es obio porque. Si instalas a través de snap, no puedes cambiar los archivos del paquete instalado en tu sistema, bueno, de ninguna manera, incluso si los desarrolladores escriben hay que editar la configuración, snap no lte permitirá hacer esto. Puedes copiar la configuración a otra ubicación, editarla y ejecutarjhon asi

john --config=./myjohn.conf ...

Pero pero hay otro problema John-the-ripper el de snap en Ubuntu no quiere, no puede trabajar con OpenCL
john --list=opencl-devices

Error: No OpenCL-capable platforms were detected by the installed OpenCL driver.
Error: No OpenCL-capable devices were detected by the installed OpenCL driver.

Y, por lo tanto, es necesario instalarlo de la tercera manera de acuerdo con las instrucciones de aquí https://github.com/openwall/john/tree/bleeding-jumbo/doc esas INSTALL-UBUNTU

Ya tengo los drivers de Nvidia instalados, por supuesto, y para ser honesto, no sé qué me ayudó… aquí todos los comandos de las instrucciones

mkdir -p ~/src
sudo apt-get -y install git build-essential libssl-dev zlib1g-dev

esa cosa
sudo apt-get -y install nvidia-opencl-dev
ya estaba instalada
cd ~/src
git clone https://github.com/openwall/john -b bleeding-jumbo john
cd ~/src/john/src
./configure && make -s clean && make -sj4

Y aqui vemos
./src/john/run/john --list=opencl-devices
despues del CPU

Platform #1 name: NVIDIA CUDA, version: OpenCL 3.0 CUDA 11.7.101
    Device #0 (2) name:     NVIDIA RTX A4500
    Device vendor:          NVIDIA Corporation
    Device type:            GPU (LE)
    Device version:         OpenCL 3.0 CUDA
    Driver version:         515.65.01 [recommended]
    Native vector widths:   char 1, short 1, int 1, long 1
    Preferred vector width: char 1, short 1, int 1, long 1
    Global Memory:          20183 MiB
    Global Memory Cache:    1568 KiB
    Local Memory:           48 KiB (Local)
    Constant Buffer size:   64 KiB
    Max memory alloc. size: 5045 MiB
    Max clock (MHz):        1650
    Profiling timer res.:   1000 ns
    Max Work Group Size:    1024
    Parallel compute cores: 56
    CUDA INT32 cores:       3584  (56 x 64)
    Speed index:            5913600
    Warp size:              32
    Max. GPRs/work-group:   65536
    Compute capability:     8.6 (sm_86)
    Kernel exec. timeout:   yes
    NVML id:                0
    PCI device topology:    0a:00.0
    PCI lanes:              16/16
    Fan speed:              54%
    Temperature:            79°C
    Utilization:            100%

no entendi la linea

CUDA INT32 cores:       3584  (56 x 64)

debería haber 7168 de CUDA, exactamente el doble!

Estrategia de adivinación de contraseñas
Primero debe crear un archivo con una contraseña HASH
./src/john/run/rar2john test_en.rar > ./output.txt

Ese fue para RAR y ese para ZIP
./src/john/run/zip2john test_en.rar > ./output.txt

Tenemos

test_en.rar:$rar5$16$26c27c1cc4aebf2737c7fc0c28afec80$15$260bb794536e9b71c7a28ee68587776e$8$3c88574d72c1341a

De forma predeterminada, John está afilado para seleccionar contraseñas en inglés, incluso hay una lista de contraseñas de uso frecuente, para la prueba, por supuesto, simplificaré el trabajo para él, seleccionaremos una contraseña solo de letras minúsculas en inglés

Para esto en el archivo ./src/john/run/john.conf

aca

[Subsets]
...

# Subsets mode charsets 0-9. These are literal strings. TAB and space
# characters can be used as long as they do not come first or last. The only
# "magic" used here is \U+HHHH or \U+HHHHH for any Unicode character (except
# the very highest private area that has six hex digits). For example, you

en lugar de 6-ta línea (están ahí del 0 al 9) añadimos

6 = abcdefghijklmnopqrstuvwxyz

Aquí, por cierto, el alfabeto ruso ya está escrito en la cuarta línea. ¡Tendrás que jugar con esto para escribir los caracteres más probables de diferentes idiomas para obtener resultado mas rapido!

y lo ejecuto primero en la tarjeta de video
./src/john/run/john --subsets=6 --format=rar5-opencl ./output.txt
–format=rar5-opencl – aca 5 porque el archivo de la última versión de WinRAR y opencl para que se pueda procesar en la tarjeta de video
–subsets=6 – 6ta linea de symbolos

empieza el calculo

[Device 2: NVIDIA RTX A4500
Using default input encoding: UTF-8
Loaded 1 password hash (RAR5-opencl [PBKDF2-SHA256 OpenCL])
Cost 1 (iteration count) is 32768 for all loaded hashes
LWS=32 GWS=131072 (4096 blocks) 
Press 'q' or Ctrl-C to abort, 'h' for help, almost any other key for status
0g 0:00:00:00 1.00% (4) (ETA: 11:58:14) 0g/s 0p/s 0c/s 0C/s Dev#2:53°C
0g 0:00:00:03 19.73% (4) (ETA: 11:58:29) 0g/s 42974p/s 42974c/s 42974C/s Dev#2:56°C grgrgggg..yyxn

el número 4 entre paréntesis indica cuántos caracteres de la contraseña se están ordenando actualmente, también muestra la temperatura de la tarjeta, por si acaso

Se puede obtener información más detallada haciendo clic s

Remaining hashes    1 (0 removed)
Remaining salts     1 (0 removed)
Time in seconds     817 (476.01 new)
Successful guesses  0 (0 new, 0 g/s)
Passwords tested    52953088 (30670848 new, 64433 p/s)
 dupe suppressor    is disabled
 and it accepted    0 (0.00%, 0 p/s)
        rejected    0 (0.00%, 0 p/s)
    out of total    0 (0 p/s)
Hash computations   52953088 (30670848 new, 64433 c/s)
Hash combinations   52953088 (30670848 new, 64433 C/s)

La mayoría de los botones solo actualizan la vista previa donde se está moviendo actualmente

0g 0:03:45:45 1.62% (7) (ETA: 2022-09-14 03:51) 0g/s 65714p/s 65714c/s 65714C/s Dev#2:82°C jehhhjheehj..ekkkkhhhehh

¡Tengo 7 letras en mi contraseña, y cuando elgo a adivinar 7 letras, me di cuenta de que me he sobrepasado! En el ETA (tiempo estimado de llegada en inglés) me mostró en cinco días: es una búsqueda muy larga, pero luego me di cuenta de, no de forma como acelerarlo mas rapido, si no de por qué le piden que cambien la contraseña cada 3 meses, a pesar de que es ya muy complicado, ¡porque no hay equipo en la Tierra que pueda detectar una contraseña compleja por fuerza bruta en tres meses!

aquí recuerdo Problema del trigo y del tablero de ajedrez, como ejemplo de lo que a primera vista parecía insignificante, pero luego resultó enorme e imposible -y aquí, por cierto, empezó con sólo 2 a la potencia – y aquí empieza con 26 letras y está elevado a una potencia con la suma de cada carácter…. uh, por mi test haré una contraseña de 4 letras minúsculas!!!

Y ya

0g 0:00:00:13 39.84% (4) (ETA: 16:00:17) 0g/s 62966p/s 62966c/s 62966C/s Dev#2:58°C oywa..bhxu
itco             (test_en4.rar)     
1g 0:00:00:14 54.18% (4) (ETA: 16:00:10) 0.07137g/s 65489p/s 65489c/s 65489C/s Dev#2:59°C lxfc..emdz
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 

¡La tarjeta de video encuentra la contraseña itco de cuatro letras minúsculas en inglés en 17 segundos!

Aquí, john tiene una cosa rara, recuerda el HASH para el que encontró la contraseña y ya no los busca solo dice.

No password hashes left to crack (see FAQ)

Y no te muestra la contraseñas ya encontradas
./src/john/run/john --show

Password files required, but none specified

Pero las contraseñas están en su carpeta en el archivo john.pot
cat ./src/john/run/john.pot

$rar5$16$7f018d3b28b056d9d12001fb022c5a2e$15$59f623db6fa6534d7fe26f2681c6b8ba$8$2bde8da77cc53370:itco

Aquí está al final de la línea.

Y para que podamos empezar la busqueda de contraseñas nuevamente, debemos eliminar este archivo
rm ./src/john/run/john.pot

Pero hay algunas rarezas útiles en john, puede reiniciar la búsqueda de contraseña desde el último lugar cuando se interrumpió o se bloqueó con un error
./src/john/run/john --restore
Aquí lo raro es que, no hay ninguna configuración, es decir, solo funciona con ultima busqueda, y no todos los demás intentos.

¿Que cuesta agregar una letra más? Cada letra siguiente solo aumenta 26 veces el tiempo de busqueda
5 – 7 minutos
6 – 3.2 horas
7 – 3.4 dias
8 – 89 dias
Por eso, a todos se les dice que creen una contraseña de 8 caracteres; ¡por qué, nadie tendrá ganas de buscarla! Y si agrega una letra mayúscula, ya será 52 a exponenciar, y si es una cirilica (sin especificar minúsculas o mayúsculas), ¡entonces 118 AAAAAAA!

Y como lo hace en CPU
17 segundos 62966p/s – GPU NVIDIA RTX A4500
317 segundos 2767p/s – CPU AMD Ryzen 7 3700X

En una tarjeta de video, es casi 18 veces más rápido: puede obtener una contraseña en un par de meses en lugar de años 🙂

Qué se puede hacer?
Recuérdese en los años de creación del archivo, tal vez creó contraseñas solo con letras; esto simplifica enormemente el proceso. Si luego mezcló letras de diferentes idiomas e incluso insertó caracteres especiales entonces … pero por otro lado, durante años no supo y no recordó sobre este archivo que le cuesta adivinarlo durante un año, y ni siquiera lo ba hacer usted, sino su tarjeta de video: ¡aquí y el precio del problema (tarjeta de video) no es importante en comparación con la nostalgia… y la electricidad también cuesta!

Puede humillar asi mismo por completo y decidir que hizo contraseña de una palabra sin números sin mayúscula, entonces una selección por diccionario servirá
Encuentre un diccionario de su idioma en una lista y
./src/john/run/john –wordlist=./word_rus.utf8 –format=rar-opencl ./output.txt

¡¿Quizas si?! Pero seguro a 100% que no!!!


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *