lunes, 8 de diciembre de 2008

Winrar: La reconquista

Alien [blackhat4all@gmail.com]

En la edición anterior publiqué un artículo de nombre “Winrar: I give up”, en el mismo exponía todo lo que había encontrado de curioso con los archivos .rar a la vez que hacía pública mi retirada del tema. No obstante, mientras cerraba y guardaba las conclusiones finales en un txt (mejor formato de texto del mundo!!) me acordé de algunas cosas y…

Una vez un profesor de física del preuniversitario me dijo que quizás la pregunta más importante que podría hacerse una persona y que es también quizás la base de todos los adelantos científicos de los que hoy disfrutamos es “¿Por qué?”

¿Por qué llueve?
¿Por qué el día tiene 24 horas?
¿Por qué el cielo es azul?

¿Por qué funciona solo con el primer archivo y no con todos?

Si, claro que funciona con todos. El caso es que después de tomarme un TIEMPO para leerme en hexadecimal todo el contenido de un .rar de solo 94 kb (y créanme que es bastante código) me percaté que todos los archivos tienen una entrada similar, me explico.

Winrar, como todos saben, dividen los archivos para que sea viable poder extraer uno solo en lugar de descompactar todo el paquete. Pero para esto tiene que definir cada uno de los archivos, asociarlos con una imagen, identificar el tamaño, el nombre, y demás parámetros que son para Winrar imprescindibles.

Producto de esto, cada archivo debe que tener una entrada en la que se definan todas estas cosas; por lo tanto cada archivo tienen una “cabecera” independiente y debe ser similar a la del primero. (al menos en teoría)

En hexadecimal, cada entrada de archivo se representa con 30 bites, los cuales describo a continuación:
74 80 80 3c 00 a6 06 00 00 6e 17 00 00 02 19 bd 2c a5 d5 7c 70 39 1d 35 1c 00 20 00 00 00 (File Name)
74 90 80 41 00 a9 04 00 00 89 0f 00 00 02 b9 8c 02 40 21 77 70 39 1d 35 21 00 20 00 00 00 (File Name)
74 90 80 41 00 f5 06 00 00 73 1e 00 00 02 0e 77 2a 16 56 8c 6c 39 1d 35 21 00 20 00 00 00 (File Name)
74 90 80 41 00 6c 06 00 00 bc 19 00 00 02 d9 35 60 e8 c7 7c 70 39 1d 35 21 00 20 00 00 00 (File Name)
...

Haciendo una representación un poco más general y fácil de entender veríamos algo como:
A, B, C, D, E, F, G, H, I, J, K, L, M, N, Ñ, O, P, Q, R, S, T, U, V, W, X, Y, Z, A1, A2, A3

Donde cada letra representa un valor en hexadecimal.

A – Vendría siendo el valor 74, que no es más que la entrada oficial al archivo.
B, C, D, E – Son valores que, a excepción del primer archivo, se mantienen iguales para el resto. Aún no se con seguridad que significa, pero podría estar más relacionado con el compactado de forma general que con las características de un solo archivo en específico.
F, G, H, I – Serial el tamaño del archivo comprimido y escritos al revés, o sea, si el tamaño del archivo comprimido es 3.832 bytes (0EF8 en hex) se vería representado como F8 0E 00 00, si es 37.312.000 bytes (35,5 Mb) en el archivo diría 00 56 39 02.
J, K, L, M – Sería el tamaño del archivo sin comprimir y escrito igualmente al revés.
N – Al parecer este valor es fijo y siempre está asignado a 2 (02 en el archivo)
Ñ, O, P, Q – Estos valores representan el valor CRC32.
R – Sin datos
S – Sin datos
T – Sin datos
U – Sin datos
V – Sin datos
W – Sin datos
X – Representa la longitud del nombre del archivo, incluyendo las subcarpetas en las que se encuentre en caso que así sea.
Y, Z, A1, A2, A3 – Estos valores no los he logrado entender aún, pero por el momento pienso que solo sirven para delimitar los datos del archivo del archivo como tal, pues sin importar extensión tamaño u otros datos, estos valores se mantienen invariables. Podría parecer un poco ilógico que se tomen seleccionen 5 bites solo para esto, pero teniendo en cuenta la cantidad de caracteres que se repiten en un compactado, de escoger solo uno podría haber cierto margen de error a la hora de ser leído el archivo. (Nota del autor: Aunque igual podría yo estar hablando tremenda … y ser la parte más importante del archivo compactado)

Y bueno, aquí tenemos ante nosotros una parte del cifrado de los archivos Winrar, parte esta bastante pequeña, pero quizás de mucho interés.

Conclusiones

Como ven es fácil hacer un programa para burlar, en parte, al Winrar. De esta forma, ya no será necesario tener que esconder las cosas y ocultarlas con un password que, como quiera que sea no está exento de que se nos olvide.

He aquí una nueva forma de ocultar información a la vista y sin tener que recurrir a programas extraños o extranjeros, una nueva vulnerabilidad del Winrar salida de las páginas de BlackHat.

Pero eso no es todo, sin restarle importancia al programa como tal, lo que realmente considero significativo es que solo me quedan 3 metas, así que… Objetivo 4, voy a por ti!! . [Cuando las cumpla todas voy a dormir 3 días seguidos ;)]



Artículos relacionados


No hay comentarios: