CTF #nullcon 2012: Ingeniería inversa 1

  • February 2, 2012
  • tuxotron
  • nullcon1.jpg

    Esta prueba consistía pues en lo típico, nos dan un binario y busca el flag. :/

    Voy a intentar explicar lo que hice, pero como no estoy seguro si se va a entender muy bien, ya verás porque lo digo, también he grabado un pequeño vídeo de demostración.

    El binario que nos dan después de ejecutar el prólogo (file y strings :) ), vemos que es un binario de Windows. Cuando lo ejecutamos, vemos que abre al menú de inicio, run (ejecutar) y escribe: wmplayer.exe y lo ejecuta, es decir, que también manda la tecla intro (enter).

    Para esta prueba usé Immunity Debugger. Lo primero que nos damos cuenta es que el ejecutable está empaquetado con UPX, aunque si lo ejecutamos desde el debugger, el programa reacciona de la misma manera, con lo que en principio no tiene ninguna protección anti-debugger.

    Viendo que lo que el binario hace es mandar eventos de teclado, lo primero que hice es poner un breakpoint en la llamada SendInput (user32). El problema es que no veía que tecla estaba siendo enviada, pero después de depurar un poco vi que era MapVirtualKey (concretamente la versión ANSI, MapVirtualKeyA) la que creaba la tecla virtual y uno de sus parámetros es el código ASCII de la tecla que queremos enviar.

    Así que una vez puesto el breakpoint en MapVirtualKey e ir resumiendo me aparecía en la pantalla:

    Selection_004.png

    Cerraba dicha ventana, pulsaba F9 (continuar) y me aparecía de nuevo, pero con una letra distinta. Después del susto y de pensar un poco, el binario está mandando eventos de teclado, y estos van a la ventana/control que tenga el foco en ese momento. En Immunity Debugger, cuando estás en la ventana principal (primer cuadrante donde están las instrucciones que se ejecutan) y pulsas una tecla se abre la ventana Assemble At … con la tecla que has pulsado.

    Después de ir resumiendo la ejecución, todo tenía sentido, la ventana se abría con la tecla w, m, p, l, a, y, e, r, ., e, x, e, intro, w, e, (espacio), c, o, u, … WAIT! O sea que abre el wmplayer.exe, pero luego sigue mandando teclas, ¡uy! esto tiene buena pinta.

    De repente se me iluminó la bombilla y me dije, ¿y por qué no nos aprovechamos de la carámbola de la ventanita Assemble At? :D

    Así que lo que hice fue, poner el breakpoint en la MapVirtualKeyA. Situándonos en el cuarto cuadrante de la ventana principal, para evitar la ventana de Assemble At, pulsamos F9, hasta que llegamos cuando se va a mandar el intro, código 0D. Modificamos dicho evento y para que mande un x20 (espacio en blanco), pero antes de pulsar F9, borramos el breakpoint que teníamos en MapVirtualKeyA, nos situamos en el primer cuadrante de la ventana (este paso es muy importante), para que cuando resumamos la ejecución, el primer carácter que se manda será el espacio en blanco y a continuación el resto del texto, que como no tenemos el breakpoint, la aplicación va a escupir el flag en la ventana de Assmble At.

    Como todo esto es muy oscuro y rocambolesco, decidí grabar un screencast para que se vea más claro.

    Por lo tanto nuestro flag: We could talk all day about what AutoHotKey can do for an online poker player

Juego de Tronos, trailer segunda temporada

In Real Life, mini documental sobre la adicción a WoW

  • February 1, 2012
  • cybercaronte
  • La adicción a WoW es un hecho como ya habréis leído en nuestro blog. Este documental de sólo 7 minutos habla de Anthony Rosner, un jugador de WoW que decidió que ya era momento de volver a vivir en el mundo real. Nos cuenta su vida y amores dentro del juego y como cada vez que casi estaba a punto de dejarlo, aparecía una nueva expansión que te volvía a enganchar.

    Está bastante bien realizado, eso sí, está en inglés pero merece la pena verlo y escucharlo.

    Visto en GeeksAreSexy.