Cómo crackear las contraseñas de los documentos Cherrytree protegidos

Cherrytree de Giuseppe (giuspen) es un editor muy útil que nos permite tomar notas de forma jerárquica o en árbol, con texto enriquecido y resaltado de sintaxis, y que almacena los datos en un solo archivo xml (.ctd) o sqlite (.ctb).
Además, permite proteger con contraseña cualquiera de los dos formatos: .ctz y .ctx respectivamente:


Para proteger el documento Cherrytree utiliza 7-zip. Cuando introducimos la contraseña correcta, se extrae el archivo en una carpeta temporal y se trabaja con una copia no cifrada. Al cerrar correctamente, el documento se protege de nuevo y luego se elimina el del directorio temporal. Si el programa se cierra de forma inesperada, el documento no cifrado permanece en el disco como un archivo temporal.

Comento esto para que lo tengáis en cuenta como primer método a revisar antes de proseguir con el objetivo de este post: crackear la contraseña un documento Cherrytree protegido que, al serlo con 7-zip, permite usar cualquier herramienta estándar como John the Ripper, que es la que veremos en este ejemplo.

Primero clonamos el repositorio oficial:
$ git clone https://github.com/magnumripper/JohnTheRipper.git
Luego, si no eres un asiduo del Perl seguramente tendrás que instalar Compress::Raw::Lzma:
$ sudo perl -MCPAN -e 'install Compress::Raw::Lzma'
Ahora, nos moveremos al directorio run y generaremos el hash para John con el script 7z2john.pl:
$ cd ./JohnTheRipper/run
$ ./7z2john.pl prueba.ctz
prueba.ctz:$7z$2$19$0$$8$32a347b3498b66350000000000000000$922812695$192$182$24b823b85b34e4298005808508cc4616de6640a09f6e86c95cc0c5cd28919c4ea1f32d349da04b073ff6b6bfac2f8706fee39fe2bc8adb045dca57fd7d2e978f615821b12ca419aa3c0dd5f960c13b42f148c2726ad070cfc4ba246d4acfe3dab88371e4a6a7330dbf1a07760a27afcdd614c899db06639096a5a6240743bd0eae40a98bc445120837eb7fae6639940a6465a1a0c6156aa16839063f3b75c2bab70525957fceb58bde6695f31cc5224f01f15b94f277f6954347cc13c013836c$221$00
Como veis el hash se genera sin problemas, listo para ser crackeado. Así que lo guardamos en un fichero y le damos cera con John:
$ ./7z2john.pl prueba.ctz > 7ZHASH
$ ./john 7ZHASH
Using default input encoding: UTF-8
Loaded 1 password hash (7z, 7-Zip [SHA256 256/256 AVX2 8x AES])
Cost 1 (iteration count) is 524288 for all loaded hashes
Cost 2 (padding size) is 10 for all loaded hashes
Cost 3 (compression type) is 2 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
prueba           (prueba.ctz)
1g 0:00:00:01 DONE 1/3 (2018-05-28 23:02) 0.5952g/s 19.04p/s 19.04c/s 19.04C/s prueba.ctz..prueba.
Use the "--show" option to display all of the cracked passwords reliably
Session completed
$ ./john --show 7ZHASH
prueba.ctz:prueba

1 password hash cracked, 0 left

En este caso y para la PoC la password era totalmente predecible, pero en un cracking real podemos afinar usando diccionarios dirigidos y disponemos de toda la versatilidad de John para usar las rules adecuadas, así que no os digo nada que os digo todo... ;)

0 comentarios :

Publicar un comentario