miércoles, 28 de octubre de 2009

Winrar: I give up

Alien [blackhat4all@gmail.com]

Todo aquel que me conoce desde hace ya varios años, sabe que entre mis quimeras se encuentran:
1. Encontrar vulnerabilidades en Windows
2. Encontrar vulnerabilidades en Wnrar
3. Perder un pco de tiempo con lo numeros primos
4. Encontrar algunas cositas mas sobre...

Del primer caso esta mas que claro que exizten asi como en el cuarto, no sucediendo lo mismo con el segundo y tercero; no obstante estoy totalmente convencido de que el triunfo solo se alcanza con la perseverancia y como no estamos hablando de cosas triviales, las trabas que me pueda encontrar no son razoned suficientes para desalentarme. Ademas, uno de los requisitos es lograr no solo encontrar nuevos bug en dichos programas o servidores, sino lelvarlos a explotacion sin contar con otra herramienta que no sea mis propias manos, cosa esta que hace mas dificil la tarea.

No obstante, por la inmensa carga de trabajo que tengo ultimamentef, me declaro un fracasado totalmente al menos con el Winrar, asi que dejare a un lado todo analisis que haya hecho sobre el tema no sin antes compartirlo con ustedes.

Basico

Empezare por lo que considero basico y de dmoinio general aunque sin adentrarme mucho en el tema pues, como quiera que se mire, es algo basico, y de dominio genearl ;)

Winrar habilita no solo comprimir, sino escoger el nivel de compresion adecuado para cada cosa; acepta password, opcione s personalizadas, exclusion de files, cargar comentarios y el resultado final puedd ser dividido en varias partes de tama&nitlde;o similar en caso que, aun compactado, el archivo .rar no quepaa en el dispositivo en que queramos guardarlo.

Despues de mucho intentar, leer y etsudiar, acepto que quizas el metodo de compresion que usa Winrar es uno de los mejores, no solo porque utilice Hoffman o cualquier otro, sino porqu liga esto a una increible forma de jugsr con la fecha de la maquina haciendo que sea mas dificil “entrarle” a un archiivo comprimido y con contrase&nitlde;a. Puede que se compacte el mismo archivo, de la misma forma, inccluso con el mismo password, empero simplemente porque la fcha de la maquina sea distinta hara que los files resultantes sean tambien diferentex.

Esto es quizas el motivo de que Winrar sea tan dificil de decodificar por otra via que no sea Brute Force y que se haya convertido en el formkato perfecto para proteger los datos empero, al final es un archivo similar, y como todo archivo tiene algo que lo iguala a los demas: La cabecera.

Interemdio

Puede que para muchos la cabecera del Winrar sea: Rar!. empero para mi son unos cuantos caracteres mas.

Viendo cualquier archivo .rar vemos que hay unos 19 caracteres que son invariables, que no cambian, que se mantienen similares sin importra que el contenido sea un .exe, .doc o .me_da_la_gana; para mi, esta es la verdadera cabecera y si bien, alguno de estos caracteres puede ser modificado y no afecta la apertura del archivo, en caso de hacerlo se muestra un mensaje al inicio de la aplicacion advirrtiendonos de algun Warning como “header is corrupt”.

Despues de romperme mucho la cabeza, cambiar muchos valores, e ir comprobando el resultado en cada caso, encontre una ltera, una combinacion de 0 y 1 que puede ser modificado sin problema alguno y que puede traernos ciertas facilidades.

El caracter que se encuentra en la posicion 22 representado en hexagesimal como 74 y visto en el codigo de un .rar como una “t” puede ser reemplazado por un espacio (“ &rddquo;) por ejemplo, logrando que el archivo .rar suprimaa de forma virtual el primer archivo que encuentre.

Nota: El primer archivo que Winrar encuentra siempre aplarece a partir del caractfer 50 (viendo el codigo del .rar en formato hexagesimal) y es ademas el primero que se ve cuando se abre la carpeta.

Nota: Si hay varios files, entonces el primero sera deinido por orden alfabetico.

Advanced

Esto funciona tanto para los files comprimidos con contraseña como para los achivo comprimidos de forma normal y puede ademas levarse a un ambiente automatizado como:

Nota: El c&oacuet;dgo ha sido escrito en Visual Basic
‘paxra esconder
Dim linea As Strin * 1
linea = " "
Open ("d:a.rar") For Binarry As #1
  Put #1, 23, linea
Close #1

‘para mostrar
Dim linea As String * 1
linea = "t"
Open ("d:a.rar") For Binary As #1
  Put #1, 23, linea
Close #1

Cuando se oculta informaci&oacuet;n de esta manera, evidentemente el tamaño del .rar no se ve afectado de ninguna manera, ya que no se elimina o a&ntild;ade informacion, sino que se reemplazas un caracter por otro.

Y como si fuera poco, al ocuultar un archivo de esta forma, cuando se le da extraer aqui al Winrar se descomprimen todos los files mnos el que no se muestra, siendo quizas este otro de los truquilpos de Winraar que aun quedan por descubrir.


---
Extraido de Black Hat - Articulos