Español | English
rss facebook linkedin Twitter

Pistas para el Reto 3

Se ha cumplido el plazo establecido para la resolución del reto 3, y todavía no hemos recibido ninguna solución, por lo que vamos a dar alguna pista.

Una vez desensamblado el crackme, podemos observar que el código es muy feo, que ha sido ofuscado, por lo que en primer lugar lidiaremos con este problema.

Para ello, podemos observar que todo el código es similar. En este caso se han utilizado un par de macros que introducen basura. En la imagen vemos muchos saltos que no pretenden más que dificultar el análisis del código.

Para combatir esto, nos bastará con eliminar este código muerto (instrucciones inútiles). Para ello utilizaremos, por ejemplo, el depurador OllyDbg con el plug-in OllyScript y el siguiente script.

//Inicializamos variables
var dir_obf

var pos_mem
mov pos_mem,00401000

//buscamos los bytes que nos interesan en memoria
find pos_mem, #740975070FEB06EBFD7401EB010F#
mov dir_obf, $RESULT
bucle:
//y los reemplazamos con instrucciones NOP
repl dir_obf, #740975070FEB06EBFD7401EB010F#, #9090909090909090909090909090#,14
find dir_obf, #740975070FEB06EBFD7401EB010F#

mov dir_obf, $RESULT
//hasta no encontrar ningún resultado más
cmp $RESULT, 0
je fin
jmp bucle
fin:
ret


Lanzamos este script, y como resultado obtenemos un código más legible, aunque comprobareis que queda alguna otra macro para quitar.


Seguimos analizando el funcionamiento del crackme, y vemos que la razón del alto consumo de CPU y el tiempo que tarda en mostrar el mensaje es debido a que lanza numerosos hilos que se encargan de la comprobación.


Ante esto, y viendo que el código de cada hilo es muy simple, yo me decanto por un análisis estático.
Personalmente opino que un método correcto puede consistir en sentarse con un papel y bolígrafo en frente del código y empezar a dibujar círculos y rayas. ;)
Eso sí, queda bastante claro que nos enfrentamos a una labor tediosa.

¡Que cada uno ataque por donde quiera!

No dudeis en enviar vuestra solución a labs@s21sec.com. Podeis enviar también vuestros avances/dudas en caso de que no consigais resolverlo.

Mikel Gastesi
S21sec labs

2 comentarios:

Trancek dijo...

despues de un tiempo lo volvi a mirar...y uff lo sigo viendo largo y sobretodo complicado para mi nivel, asi que nada, entre tanto thread me termino perdiendo y aunque se por donde va el crackme no consigo sacar lo que hay que meter jeje, buen crackme y estare por aqui para cuando salga la solucion ya que creo que no podre con él, no he tratado con multithreads asi.

saludos

S21sec labs dijo...

Hola Trancek,

No desesperes, que este crackme es más tedioso, pero se puede resolver

Tenemos ya un participante que va por muy buen camino, a ver si consigue llegar al fondo del asunto!


(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login