Globedia.com

×

Error de autenticación

Ha habido un problema a la hora de conectarse a la red social. Por favor intentalo de nuevo

Si el problema persiste, nos lo puedes decir AQUÍ

×
×
Recibir alertas

¿Quieres recibir una notificación por email cada vez que Haroldcho escriba una noticia?

Jugando con el encriptado de los Archivos Zip

06/05/2009 22:14 1 Comentarios Lectura: ( palabras)

Hago referencia a este gran trabajo de g30rg3 que por siento gracias por el tuto que me ha servido para varios retos xD. saludos y no se les olvide visitar la fuente , hay mucho mas para ver :D

Antes de continuar con esta sencilla, pero efectiva guía tengo que decirles que esta “técnica” esta presente desde ya bastante tiempo y me acorde de esto ayer mientras resolvía uno de los “Desafíos” de la pagina

Pero bueno dejemos a lado las palabrerías y presentación, empecemos no?

Introducción

Como saben muchísima gente cuando hace un respaldo “de algo importante” le pone una contraseña para evitar que este respaldo sean accedidos por otras personas fuera de las que tengan la contraseña y normalmente cuando son muchos ficheros prefieren tenerlos en uno solo comprimido usando uno de los formatos mas populares de compresión, el cual conocemos como zip.

Muchas veces por azares del destino cae en nuestras manos uno de estos archivos o simplemente teníamos uno y se nos olvido la contraseña, los métodos mas conocido son: probar datos personales (nuestros o del que hizo el respaldo), probar atravez de un diccionario de palabras comunes y por ultima la vieja fuerza bruta, algunas veces, alguno de esos métodos nos ha funcionado, pero otras veces no (sobre todo cuando la contraseña es de esas moustrosas o con caracteres complejos), aunque la fuerza bruta en teoría si va a poder recuperar la contraseña, este método puede tardar muchísimo, inclusive puede tardarse años en sacarla (dependiendo de la complejidad de la contraseña) y normalmente para esos casos pues siempre terminamos dándonos por vencidos y poniéndonos en la idea de que no recuperaremos esa información jamas…

Ahora que les parece si les cuento que existe una posibilidad de poder recuperar esa información aun la contraseña sea compleja y mas aun sin siquiera al final saber la contraseña con que se cifro, que pensarían?????

Ufff pues claro se les haría agua a la boca, pero tampoco pensemos de ella como la solución a todos los males, como todas las cosas buenas vienen con sus limitaciones y requerimientos.

¿Que es? y ¿ Como Funciona?

Esta técnica es conocida bajo el nombre popular de el ataque “plaintext”, los autores de haber encontrado esta vulnerabilidad en el sistema de cifrado de los archivos comprimidos(y Cifrados) con (ahora los conocemos solo como fueron Eli Biham y Paul Kocher, ellos descubrieron que se podía adivinar las 3 llaves (y en los casos mas comunes adivinar la contraseña original) que se necesitan para descifrar un archivo  solo usando una N parte de un X fichero conocido.

En palabras comunes (o como funciona), es muy simple sabiendo una parte total o parcial de algún fichero dentro del archivo cifrado y compreso con, se pueden deducir cada una de las 3 llaves internas (y la contraseña original) que usa el descifrador interno de los y así obtener los ficheros cifrados de manera fácil y rápida.

Limitaciones

Como ya de seguro te diste cuenta, existen algunas limitaciones técnicas mínimas que se necesitan para poder hacer uso de esta técnica…

1) Tiene que estar encriptado/cifrado el archivo usando el algoritmo común de los  nada de cifrados implementados de X Software o AES 128/256.

2) Tienes que conocer una parte parcial o total de alguno de los ficheros que se encuentran adentro del fichero  compreso, es mas fácil y rápido si posees al menos uno de los archivos de manera completa y obviamente descifrada y descompresa, pero si no es así necesitaras al menos 11 bytes del principio del archivo o si se encuentra al final o en cualquier parte distinta del principio necesitaras al menos 13 bytes.

3) Se necesita saber que nivel de compresión se uso, aunque se puede deducir con un poco de maña pero se sigue dependiendo mucho de este dato.

Diferentes Casos

Durante mi etapa de estudio e investigación pude ver claramente tres casos de estudio que pueden pasar durante nuestra travesía de estudio, a continuación los en listo:

-> Si poseemos un fichero completo.

-> Si poseemos un fichero completo pero la contraseña es de carácter complejo

-> Si solo sabemos una cantidad parcial de información de un fichero, considerando mayor o igual a 12(o 13) bytes.

Durante esta guía veremos como se debe hacer para resolver cada caso.

Conocimientos Previos y Materiales

Realmente no se necesitan un conocimiento previo mayor a conocer como moverse bajo una consola (sea cual sea el Sistema Operativo), debido a que obviamente esta aplicación carece de una GUI y claro por razones de espacio y que queda fuera de esta guía, no pondré esa información y solo obviare el conocimiento de la misma.

Notas Rápidas sobre el Formato de Compresión ZIP

Antes de continuar hablando sobre lo que ya son los “Casos de Estudio” tendré que adentrarlos en lo que es el formato de compresión de los ficheros ZIP, esto lo hago para evitar ser dependientes de alguna utilidad para algún sistema operativo especial y así cualquiera que sea el sistema operativo pueda llevarse acabo este análisis.

Los Ficheros ZIP siempre cuentan con una cabecera inicial que nos van a ayudar en muchos casos a aclarar el panorama sobretodo con ciertos datos como métodos de compresión usado para así generar algunos archivos necesarios.

Primero todos los ficheros comunes ZIP empiezan de esta manera (solo tomaremos los primeros 10 Bytes)

50 4B 03 04 14 00 00 00 08 00

(visto desde un visor hexadecimal)

Los Primeros 4 Bytes o “50 4B 03 04“, son conocidos como los de cabecera inicial estos de marcan que el siguiente fichero usa el sistema de compresión ZIP.

Los Siguientes 2 Bytes o “14 00“, indican la versión mínima con la que se puede extraer el contenido compreso.

Los Siguientes 2 Bytes o “00 00“, son usados de manera general por varios parámetros pero normalmente sirven para denotar que el contenido esta encriptado o tiene una contraseña, mas adelante entraremos un poco mas adentro sobre estos bytes.

Los últimos 2 Bytes o “08 00“, son los que mas vamos a fijarnos y son los que indican que método de compresión se uso al comprimir la información.

De esa cabecera en general solo nos interesan (para este caso) los últimos 4 Bytes de esos 10 Bytes o bien “00 00 08 00” ese grupo de bytes le indican al software que no tiene contraseña y que se ha usado el metodo de compresion “deflate” en modo Normal, esta informacion puede ser corroborrada en el archivo APPNOTE.txt de las lineas 470 a la 575 (esta incluido en el pack dentro de la carpeta Caso 1).

Ahora aquí tiene su viene su chiste sobre los bytes que son usados de manera general, estos se mueven cuando el contenido se encuentra cifrado o se cambio el modo de compresión, ahora si ponemos el primero de sus 2 bytes a “01” le estaremos diciendo al software que el contenido se encuentra cifrado, pero si ahora ese byte valiera “02” le estaría diciendo al software que esta compreso en el modo máximo, ahora por lógica entenderán si vale “03” este byte le estará diciendo al software que esta compreso en modo máximo y este se encuentra cifrado. Entonces siguiendo las especificaciones anteriores si vemos…

00 00 08 00“, significa modo de compresión normal y la información no esta cifrada.

01 00 08 00“, significa modo de compresión normal y la información esta cifrada (o tiene contraseña).

02 00 08 00“, significa modo de compresión máxima y la información no esta cifrada.

03 00 08 00“, significa modo de compresión máxima y la información se encuentra cifrada (o tiene contraseña).

Esto claro es la versión “resumida” o la parte que nos interesa, esto no es precisamente la ley ya que el método de compresión deflate seteado a “08 00” puede cambiar a muchísimos otros y por consecuente los otros dos bytes también serian afectados, así como otros muchísimos parámetros afectarían estos 4 bytes que consideramos importantes, mi recomendacion es estudiar al menos las paginas mencionadas del archivo APPNOTE.txt que incluí en el pack ya que ahí se especifica con lujo de detalle que pasa cuando se mueve o cambia algún byte y asi como otros datos importantes.

CASO 1: “Lo Normal - Fichero Completo”

Primero tomaremos los dos ficheros que están en la carpeta Caso 1, como veras uno corresponde al fichero  que esta por supuesto con una contraseña y el otro archivo si te fijas es uno que ya esta adentro, siguiendo nuestro análisis que vimos en la sección de notas rápidas sobre los ficheros ZIP encontramos que el archivo esta obviamente cifrado en modo de compresión normal y se uso el método de compresión “deflate”, ahora la técnica funciona así el chiste es comprimir el archivo que poseemos o “APPNOTE.txt” exactamente como esta dentro del ZIP con contraseña, ya que poseemos las especificaciones lo comprimimos exactamente en modo normal y con el metodo “deflate” (el método deflate es el que la mayoría del software de compresión y descompresión ZIP usa, asi que no hay que preocuparse mucho) claro esta vez sin ponerle una contraseña lo que tendremos que hacer es extraer los ficheros de cada lado y dárselos a PkCrack para que el haga su labor de CriptoAnalisis.

Primero empecemos con el archivo cifrado, ejecutaremos del siguiente modo el ejecutable “extract”:

: extract Caso1.zip Appnote.txt

Esto nos devolverá la parte de dato correspondiente a la versión cifrada de “Appnote.txt”, como veran no es leible la información, ahora cambiaremos rápido el nombre del archivo que nos devolvió por “Appnote_Encriptado.txt” para así evitar que sea reescrito por la siguiente parte, ahora toca sacar el mismo archivo pero de nuestro ZIP creado con el archivo que teníamos y para esto hacemos:

: extract APPNOTE.zip Appnote.txt

Ahora también como el otro cambiaremos el nombre por “Appnote_DesEncriptado.txt”, al igual que el otro este archivo también es ilegible ahora que ya tenemos nuestros archivos listos pasaremos ya a la parte buena o esperada.

Ya que tenemos todo listo ahora ejecutamos si el PkCrack poniendo como parámetros primero el archivo encriptado (después del -c) y luego el desencriptado (después de -p):

: pkcrack -c Appnote_Encriptado.txt -p Appnote_DesEncriptado.txt

Si todo salio bien deberemos ver como se procesa solo y obtendremos un resultado igual al siguiente:

Como vemos despues de solo poco mas de 1 minuto obtenemos la clave original que es “0a2b3c4d” y lo podemos comprobar abriendo el ZIP y probando que podemos acceder a los archivos y así descomprimirlo, también cabe mencionar que la contraseña tiene un largo de 8 caracteres la misma acción que tardo con este método poco mas de 1 minuto tardaría usando fuerza bruta de unas 2 a 3 horas y eso si escogemos el grupo correcto de letras.

Este caso fue muy fácil obtuvimos todo lo que necesitábamos, pero sin embargo este caso es el mas digamos obvio y es el que siempre dará buenos resultados, normalmente encontraras siempre este si es que puedes usar esta técnica pero sin embargo como veremos a continuación podremos superar otras adversidades.

Caso 2: “Modos de Compresión - Fichero completo con contraseña compleja”

Este caso no tiene mucha diferencia con el primero lo unico que va a pasar es que nuestro camino sera un poco mas complicado y no veremos exactamente las cosas como el primero si no que ahora veremos un poco.

Como la anterior ves empezemos sacando los archivos de Caso2, otra vez tenemos un ZIP con password y esta vez tenemos una imagen GIF (ahora recuperaremos las imagenes de mi coleccion de xinitas XD), como la otra vez analizaremos el ZIP pero esta vez nos encontramos que el modo de compresion cambio a maximo asi que tendremos que hacer que “xinita 1.gif” sea compreso al igual que el primer caso pero en modo maximo.

De aqui en adelante evitaremos palabreria y diremos directamente que se debe hacer, primero extraemos “xinita 1.gif” de Caso2.zip

: extract Caso2.zip “xinita 1.gif”

Luego cambiaremos el nombre del archivo que nos devolvio por “xinita1_Encriptado.gif” y procederemos a extraer su contraparte

: extract “xinita 1.zip” “xinita 1.gif”

Cambiaremos el nombre del archivo como la otravez pero ahora por “xinita1_DesEncriptado.gif” y empezaremos con el criptoanalisis…

Esta vez tendremos que parar a PkCrack (Control+C con el teclado normalmente) ya que este no encontrara la contraseña y este caso fue dejado a proposito ya que le puse a este archivo una contraseña de exactamente 100 caracteres alfanumericos, sin embargo este caso les demostrara lo que dije al principio acerca de que se puede recuperar la informacion que esta adentro del ZIP sin siquiera saber la contraseña, cabe mencionar que PkCrack te podra sacar las contraseñas desde largo 1 a 9 apartir de 10 en adelante le tomare bastante tiempo segun uno de mis intentos le toma 4 minutos sacar largo 10 y 12 minutos largo 11 (claro desde mi PC) esto comparado con la BF que largo 10 ya empieza a medirse en meses es un tiempo bastante reducido pero bueno siguiendo con el hilo de a lo que hibamos ahora como se fijan en una parte del criptoanalisis sacara 3 llaves estas llaves son las unicas que se necesitan para desencriptar un archivo y para este caso son “8488e329″, “5384c9d8″, ” 806f3ada”, ahora lo que vamos a hacer es usar estas llaves en conjunto con el ejecutable “zipdecrypt” que es el encargado de hacer esta labor, asi que sin mas preambulo ejecutaremos lo siguiente:

: zipdecrypt 8488e329 5384c9d8 806f3ada Caso2.zip Caso2_DesEncriptado.zip

Como puedes ver primero van las tres llaves en su orden respectivo, luego el archivo ZIP cifrado o con contraseña y por ultimo el fichero final donde se guardara la version sin contraseña, si todo sale bien deberas recibir la siguiente informacion…

Decrypting xinita 3.gif (4caf12dd4a17cf8da35b0bef)… OK!

Decrypting xinita 4.gif (7a5738cdccee36bc3084dad3)… OK!

Decrypting xinita 1.gif (ff6f8373d75a7befeaf7b229)… OK!

Decrypting xinita 2.gif (ff51d5dfe438e0bf4ee2dd1e)… OK!

Ahora como veras el archivo “Caso2_DesEncriptado.zip” se ha creado y si intentamos acceder a la informacion o descomprimirla veremos que ya no nos pide contraseña y hemos recuperado al 100% todos nuestros ficheros.

En fin en general este caso demuestra que podemos recuperar los archivos al 100% sin siquiera conocer el password original con el que se cifro la informacion, esta vez solo hicimos un poquito mas de trabajo.

Cabe mencionar que esto se podia hacer directo esto desde PkCrack solo usando el atributo “-d” seguido del nombre del archivo donde se va a poner la verison sin contraseña.

Caso 3: “Informacion Parcial - Fichero incompleto”

Este es desde mi punto de vista el caso mas dificil o mas soñado digamos ya que para lograr sacar este es un poco difícil, el asunto esta ahora en que no poseemos el fichero original si no solo una parte de el (durante este caso solo poseemos los primeros 500 bytes) y realmente llevar a la vida real es algo complejo, en si esta parte supone que tienes solo una parte mayor de 13 bytes (que es el minimo de informacion necesaria) del archivo original sin embargo aqui hay algo soñado o dificil de realizar como saben tendremos que poner exactamente como esta la informacion compresa en nuestro con contraseña, pero si solo poseemos una parte del archivo original y queremos comprimirla para obtener los archivos necesarios veremos que no se podra sacar ni siquiera las tres llaves, la respuesta es simple a este problema el algoritmo de compresion ZIP cambia con respecto al tamaño de la informacion que tenga que comprimir, osea digamos el archivo original de 96 KiloBytes fue compreso segun ese tamaño pero comprimir solo 500 bytes producira una salida muy diferente a la que en el archivo original fue, asi que pensemos en la epoca en que se ideo esto como saben esta epoca era la epoca del internet por telefono y era comun tener archivos mal descargados o con informacion faltante, la idea es que si se consigue un fichero ZIP (sin contraseña claro esta) con el mismo archivo que esta adentro de nuestro ZIP con contraseña pero no poseemos la totalidad podemos con una parte mayor de 13 bytes hacer nuestro criptoanalisis.

Como pueden ver tener ese campo ideal es un poco dificil y hasta cierto punto soñado en la vida real encontrar otro archivo ZIP que contenga uno de los ficheros del fichero ZIP con contraseña y que el primero este dañado y podamos usar solo una parte de la misma, bueno pues ya sabran que es algo SUMAMENTE DIFICIL y creo que solo esta debido a las epocas en que se hizo el programa y claro como una prueba de concepto de que si se puede.

Para evitarles todo este problema ya les he puesto el archivo “PKZip_parcial.pdf” que contiene esos 500 bytes parciales de un archivo ZIP que en teoria digamos “mal descargamos” y por eso solo tenemos esa informacion parcial.

Ahora como dije esto es solo una “prueba de concepto” de que si se puede pero aplicar esto en la vida real o un caso real sera creo que inutil, extraeremos como siempre el fichero PKZip.pdf del archivo ZIP Caso3.zip

: extract Caso3.zip PKZip.pdf

Cambiaremos los nombres como lo hicimos en los dos casos anteriores y ejecutaremos PkCrack:

: pkcrack -c PKZip_Encriptado.pdf -p PKZip_Parcial.pdf

Files read. Starting stage 1 on Fri May 4 00:56:42 2007

Generating 1st generation of possible key2_511 values…done.

Found 4194304 possible key2-values.

Now we’re trying to reduce these…

Done. Left with 15421 possible Values. bestOffset is 24.

Stage 1 completed. Starting stage 2 on Fri May 4 00:57:15 2007

Ta-daaaaa! key0=274557c2, key1=47c0e619, key2=37542ddc

Probabilistic test succeeded for 492 bytes.

Stage 2 completed. Starting password search on Fri May 4 01:16:46 2007

Key: 6c 61 6c 61 33 31 33 33 37

Or as a string: ‘lala31337′ (without the enclosing single quotes)

Finished on Fri May 4 01:16:47 2007

Como veran ahora tambien tuvimos exito y esta vez solo teniamos 500 bytes del archivo original no el fichero completo como siempre pero sin embargo tener menos informacion significa mayor lentitud y como veran llevar este criptoanalisis tardara un poco mas de 20 minutos y para aquellos que quieran probar si prueban con el minimo de 13 bytes si encontraran la solucion pero tardara cerca de 2 a 3 horas el criptoanalisis.

Hay otra aclaracion y es que segun el documento sobre este criptoanalisis nosotros podremos hacerlo mismo con cualquier parte de informacion (contigua) aun se encuentre en medio del archivo o al final, en este caso probamos con los primeros 500 bytes, pero sin embargo quise hacer un caso donde busque la llave pero usando una parte del archivo distinta al principio pero como dije todas mis pruebas me llevaban a que no se podia y por consecuente no pude hablar sobre este subcaso de este caso, claro no quise seguir con mas profundizacion por que no valia la pena seguir con algo que de por si es un poco dificil de replicar en la vida real.

Conclusion

Llegando ya a la parte final de este sencilla guia se puede hacer notar que el sistema de cifrado comun de los ficheros ZIP puede ser facilmente vulnerado aun se tomen precauciones con respecto al largo o complejidad de la contraseña, claro llevar a acabo esta tecnica tiene sus limitaciones de si puede o no usarse aunque normalmente cuando alguien hace un respaldo suele poner algunos archivos que estan a la vista publica, dentro del ejemplo comun que se muestra sobre esta tecnica se hablaba sobre aquellos respaldos que contenian la imagen del logo de la empresa a la que se le fue robada la informacion y como el logo se encuentra disponible en el sitio web oficial de la empresa entonces ya dariamos por hecho que tenemos un archivo plano y con el podremos facilmente romper la contraseña y poder ver los ficheros cifrados.

No puedo terminar sin decir que desde mi punto de vista personal usar el formato ZIP como respaldo de informacion no es algo que digamos sea una solucion profesional, tampoco podemos decir que usar los cifrados nativos de algun software en especial sean la solucion ya que es una solucion pero mata la famosa portabilidad, en fin lo mejor para mi es cuidar bien aquellos medios que usemos para respaldar o resguardar informacion sean bien cuidados y se tomen encuenta dentro de nuestro plan de seguridad informatica.

Sin mas que decir un saludo a todos y espero les sirva esta sencillisima guia.

 

Fuente:http://g30rg3x.com/jugando-con-el-encriptado-de-los-archivos-zip/

 


Sobre esta noticia

Autor:
Haroldcho (3 noticias)
Visitas:
15970
Tipo:
Tutorial
Licencia:
Distribución gratuita
¿Problemas con esta noticia?
×
Denunciar esta noticia por

Denunciar

Comentarios

×
¿Desea borrar este comentario?
Borrar
0
+ -
Responder

jldtecno (07/05/2009)

me parecio interesante tu nota.
gracias