Busindre » Blog Archive » Craquear password de ficheros Rar, Zip y 7zip con RarCrack

Craquear password de ficheros Rar, Zip y 7zip con RarCrack

August 18th, 2008 by Busindre

RarCrack es un programa para GNU/Linux que usa un algoritmo de fuerza bruta para romper la contraseña de ficheros comprimidos en los formatos Rar, Zip y 7zip. Soporta hasta 12 hilos para crackear y ofrece un fichero de configuración para cada fichero comprimido a vulnerar donde especificar los caracteres usados en el crackeo y alguna otra cosa, como es el orden de combinaciones de caracteres a probar y desde que cadena empezar a crackear el fichero. Si la password es buena será (Longitud / Aleatoria) es muy difícil sacar por fuerza bruta este tipo de contraseñas, sobre todo en los archivos comprimidos bajo formato rar, pero si tenemos alguna pista sobre la contraseña usada y distribuimos el trabajo de forma inteligente entre varias máquinas podemos aumentar las posibilidades de obtener la clave de ese fichero comprimido que necesitamos.

Descargar RarCrack: http://rarcrack.sourceforge.net/

Compilar / instalar:

$ tar -xvjf rarcrack-0.2.tar.bz2
$ cd rarcrack-0.2
$ make
# make install ó checkinstall

Forma de uso de RarCrack:

$ rarcrack fichero [Opciones]

Opciones:

--help: Muestra la ayuda (Ingles).
--type: Especifica el tipo de fichero a crackear (--type rar|zip|7z), pero no es necesario indicarlo.
--threads: Especifica cuantos hilos de ejecución se usarán (2 por defecto y 12 Máximo).

Configurando el crackeo de rarCrack:

Rarcrack al empezar a crackear un determinado fichero rar, zip o 7zip, genera un fichero de configuración en formato XML con el nombre del archivo comprimido terminado con la extensión ".xml", como por ejemplo "Disco.rar.xml". Este fichero de configuración se genera a los 2 segundos de haber ejecutado el comando rarcrack y en el podemos configurar como se realizará el proceso de hackeo para poder adaptarlo un poco a nuestras necesidades; Veamos como es la estructura de este fichero nada mas se genera:

<rarcrack>
<abc>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</abc>
<current>0</current>
<good_password></good_password>
</rarcrack>

En la etiqueta <abc> se especifican los caracteres que queremos que use rarcrack para hacer combinaciones e intentar sacar la contraseña del fichero comprimido, el orden es secuencial, de izquierda a derecha. Es importante no repetir letras en esta etiqueta y es perfectamente posible añadirle nuevos caracteres como "[]{}@#~&"... Si se quiere que el fichero xml generado por defecto incluya otro contenido en esta etiqueta debemos editar el fichero rarcrack.h donde pone:

char default_ABC[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

Y luego ejecutar el comando make.

Las etiquetas <current> se refieren a la cadena en la que actualmente se encuentra el proceso de crackeo, crucial para poder continuar con el crackeo de dejarlo parado o bien para atajar la obtención del password si sabemos el número de caracteres que tiene o por lo menos el mínimo número de caracteres que tiene la contraseña.

Las etiquetas good_password contienen la password una vez encontrada.

Una vez explicado lo anterior lo mejor para entenderlo es ver algún ejemplo simple de uso. Dada una password "busi" de un fichero comprimido, si usamos este fichero de configuración tal y como se muestra a continuación se hallaría inmediatamente la password:

<rarcrack>
<abc>buzs1234567890@#~{[]}iQWERUIOPASDFGHJKLZXCVBNM</abc>
<current>bus}</current>
<good_password></good_password>
</rarcrack>

Si por el contrario el fichero xml fuera el siguiente, jamas se encontraría la contraseña

<rarcrack>
<abc>buzs1234567890@#~{[]}iQWERUIOPASDFGHJKLZXCVBNM</abc>
<current>busQ</current>
<good_password>
</good_password></rarcrack>

Con este fichero de configuración de arriba vamos a indicar en las etiquetas current la cadena "bus1", el orden de caracteres para las pruebas realizadas por RarCrack para romper la contraseña sería el siguiente:

bus1
bus2
bus3
bus4
bus5
bus6
bus7
bus8
bus9
bus0
bus|
bus@
bus#
bus~
bus{
bus[
bus]
bus}
busi
...
busM
bu1b

NOTA: NO se usa orden alfabético o aleatorio, el orden es el establecido en las etiquetas abc, por ejemplo en la configuración anterior, la última combinación probada de 5 letras antes de pasar a probar con 6, sería "MMMMM" dando paso a "bbbbbb" como la primera cadena a probar de 5 letras dada esa etiqueta <abc>. (La letra b es la primera con la que empieza a probar ya que es la primera que encontramos en el tag <abc>, la siguiente sería u). Para machacar un poco más este concepto y entender la forma en la que crackea la aplicación RarCrack dejamos unos ejemplos de uso

Ejemplos de uso:

Vamos a suponer el siguiente escenario, queremos sacar una password con tres ordenadores y lo único que sabemos sobre ella después de haber visto al dueño del fichero descomprimirlo es lo siguiente:

La password tiene 7 caracteres.
Empieza por "Az".
Se cree que puede contener caracteres como "@" y "."
No parece haber más letras mayúsculas ni números del 4 al 9.
La password carece de estas letras "jktuv".

Dado este supuesto, de tener una sola máquina para intentar sacar la clave se podría proponer este fichero de configuración:

<rarcrack>
<abc>Aabcdefghilmnopqrswxyz@#.0123</abc>
<current>Azaaaaa</current>
<good_password>
</good_password>

De usar tres máquinas podríamos dividir el trabajo de crackeo indicando en los tag current:

Maquina1: Azaaaaa
Maquina2: Azaiaaaa
Maquina3: Azasaaa

De esta forma dividimos en tres (Aproximadamente) el trabajo y por lo tanto el tiempo de crackeo de la contraseña. Si la password fuera por ejemplo Azal@y. la Maquina2 la encontraría sin tardar demasiado mientras que la Maquina1 tardaría mucho más y la Maquina3 jamas la encontraría en ese rango fijado.

RECORDAR: Debido al mecanismo que usa RarCrack para intentar sacar la password del fichero comprimido, lo único que podemos usar en el fichero de configuración para optimizar la búsqueda de la password es:

* "Saber que caracteres contiene y cuales no contiene" (Etiquetas <abc>).

* "La/s primeras letras usadas que esteń concatenadas" (Etiquetas <abc>).

* "Numero de Caracteres" (Etiquetas <current>)

Si por ejemplo sabemos que la primera letras en un X y la tercera una Y la única forma de poder acelerar el proceso es indicar en las etiquetas abc que pruebe primero las combinaciones por Y. No es posible especificar una tercera posición si no tenemos la segunda y la primera, solo podemos forzar que la pruebe antes que las demás. Veamos una simple prueba de concepto con el pasword "Azal@y." y sabiendo que las dos primeras letras son Az y una cuarta es la "l" cuanto se tardaría en crackear al colocarlas en distintas posiciones.

* Password: Azal@y.

* Configuración 1:

<rarcrack>
<abc>Aaiolpqryz@.</abc>
<current>Azaaaaa</current>
<good_password>
</good_password>

Salida de rarcrack usando la configuración 1:


INFO: detected file type: zip
INFO: cracking README.zip, status file: README.zip.xml
INFO: Resuming cracking from password: 'Azaaaaa'
Probing: 'Azaaoo.' [106 pwds/sec]
Probing: 'Azaapro' [109 pwds/sec]
Probing: 'Azaarza' [103 pwds/sec]
Probing: 'Azaaz.p' [105 pwds/sec]
Probing: 'AzaiAiy' [109 pwds/sec]
Probing: 'AzaiiqA' [109 pwds/sec]
Probing: 'Azailyi' [104 pwds/sec]
Probing: 'Azaiq@i' [104 pwds/sec]
Probing: 'Azaizaq' [109 pwds/sec]
Probing: 'Azai.lr' [108 pwds/sec]
Probing: 'Azaoaqo' [102 pwds/sec]
Probing: 'Azaooyp' [104 pwds/sec]
Probing: 'Azaop..' [110 pwds/sec]
Probing: 'Azaoyiy' [107 pwds/sec]
Probing: 'Azao@lz' [104 pwds/sec]
Probing: 'AzalAry' [107 pwds/sec] <---
Probing: 'Azali@l' [106 pwds/sec]
Probing: 'AzalpA.' [106 pwds/sec]
Probing: 'Azalriz' [103 pwds/sec]
Probing: 'Azalzpl' [106 pwds/sec]
GOOD: password cracked: 'Azal@y.'

Tiempo empleado en crackear usando la configuración 1:


real 1m3.516s
user 0m38.110s
sys 0m20.365s

* Configuración 2:

<rarcrack>
<abc>Aaliopqryz@.</abc>
<current>Azaaaaa</current>
<good_password>
</good_password>

Salida de rarcrack en la configuración 2:

INFO: detected file type: zip
INFO: cracking README.zip, status file: README.zip.xml
INFO: Resuming cracking from password: 'Azaaaaa'
Probing: 'Azaaiii' [104 pwds/sec]
Probing: 'Azaappi' [104 pwds/sec]
Probing: 'Azaaryq' [109 pwds/sec]
Probing: 'Azaaz.o' [107 pwds/sec]
Probing: 'AzalAAi' [99 pwds/sec] <--
Probing: 'Azalllz' [106 pwds/sec]
Probing: 'Azaloqq' [111 pwds/sec]
Probing: 'Azalqyz' [105 pwds/sec]
Probing: 'Azaly@@' [104 pwds/sec]
GOOD: password cracked: 'Azal@y.'

Tiempo empleado en crackear usando la configuración 2:


real 0m30.223s
user 0m18.337s
sys 0m9.869s

De conocer alguna letra de la password el orden puede ser muy influyente como hemos visto para ahorrar combinaciones (Tiempo), Si nos fijamos donde la señal "<--", nos daremos cuenta que entramos más rápidamente en las combinatorias que usan la letra "l" como cuarto carácter para intentar sacar el password. Esto también sirve como método para repartir la carga de crackeo, usar una máquina con un determinado orden en las etiquetas abc y la otra con el mismo contenido pero en orden invertido, sería como ir buscando las password en dos direcciones a la vez.

Posted in Linux |

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.