jueves, 21 de julio de 2011

WriteUp - fatherapple - wgsbd2

Nos proporcionan el ejecutable sig_32.


Al ejecutarlo muestra el siguiente mensaje y se queda esperando:



Al pulsar Ctrl-C para salir, nos da un mensaje extra:



Los números que muestra cambian en cada ejecución, pero no sabemos mucho más, así que pasamos a analizarlo con IDA. Por suerte, es un binario muy sencillo. Vemos aquí la función principal:



Podemos ver que se realiza un fork y las actividades básicas tanto del proceso padre (salida del fork distinta de cero) como del hijo. No vemos directamente que se imprima el mensaje "Hack ___ planet", pero recordamos que ha salido al pulsar Ctrl-C, por lo que debe imprimirse en el manejador de la señal, así que nos fijamos en ese punto.


Efectivamente el proceso padre está redefiniendo la señal 2 (SIGINT), por lo que asumimos que en esa función se muestra el comentado "Hack ___ planet". Por su parte, el proceso hijo redefine la señal 14 (SIGALRM) y después muestra el mensaje principal, donde vemos que los números de manzanas que nos indicaba son el pid del proceso padre y el del hijo.


Queremos ver qué hace este proceso al recibir la señal SIGALRM, así que vamos a la función legendary:



Curioso... fija fflussh como el manejador de la señal 12 (SIGUSR2), espera 1 segundo y vuelve a cambiarlo a la función boobs. Sólo por el nombre de la función, miramos primero esta última y vemos que no hace nada (¿WTF? juegan con mis sentimientos como si fuera una marioneta ;-)). fflussh en cambio parece contener algún mensaje oculto.


Como ya estoy vago, vamos a probar si el análisis que hemos hecho hasta ahora está bien... necesitamos enviar al proceso hijo, que amablemente nos indica su pid, la señal 14, y en menos de 1 segundo (pero dándole tiempo a fijar la nueva señal) enviar la señal 12:



It works!!! :-)

miércoles, 20 de julio de 2011

WriteUp - therabbit - wgsbd2

Nos proporcionan el ejecutable therabbit.exe.


Si lo ejecutamos, descarga del servidor del reto un fichero llamado metienescontento.arj, pero en seguida vemos mediante un editor hexadecimal que es un RAR, y al intentar descomprimirlo, que tiene contraseña.


Atacar por fuerza bruta la contraseña del RAR es lentísimo, así que decidimos analizar el ejecutable porque parece lógico que contenga la contraseña para descomprimir el archivo que ha bajado.


Analizando las cadenas contenidas en el binario vemos que está comprimido con UPX:


>strings -q therabbit.exe|head
!This program cannot be run in DOS mode.
\>%
\>J
|)E
\>!
Rich
UPX0
UPX1
.rsrc
3.00

Descargamos el packer de su web http://upx.sourceforge.net/ y lo utilizamos para extraer el binario original:



El ejecutable desempaquetado resulta ser un script de AutoIt transformado en ejecutable, como podemos observar en las cadenas del ejecutable o en las propiedades del mismo:



Investigando un poco, llegamos a esta entrada en el fabuloso blog de Didier Stevens:


http://blog.didierstevens.com/2007/10/02/autoit-malware-revisited/

Siguiendo sus instrucciones, nos bajamos la versión de AutoIt apropiada y mediante Exe2Aut recuperamos el script original, por suerte sin contraseña.


Es muy fácil localizar la parte interesante, y a primera vista llama la atención una variable con el valor "car411o" que apesta a contraseña. Además vemos otras 2 variables que tampoco se utilizan, con los valores "unsoldo" y "fai":



Me puse en la piel de B4RRe1R0, me impregné de acento gallego y la solución salió sola: "faiunsoldocar411o".


Con esta contraseña podemos descomprimir el fichero descargado y obtenemos el token:


>cat cozashula.txt
eze_ezpanyolitoSexydem0da

WriteUp - 90sdancing - wgsbd2

Lo primero que tienes que hacer es leer la impresionante solución de Sherab Giovannini a este reto:


http://www.reversingcode.com/f1l3s/90sdancing.by.Sherab.Giovannini.zip

Una vez hecho eso, si su capacidad te desborda (como a mí), igual te interesa esta solución de andar por casa.


Nos proporcionan el binario crackme.exe. Analizando las cadenas de texto incluidas en el mismo enseguida vemos que es un ejecutable creado a partir de un script de python con py2exe.



>strings crackme.exe|grep -i py2exe
PY2EXE_VERBOSE
PY2EXE_VERBOSE
py2exe
C:\Python24\lib\site-packages\py2exe\boot_common.pyR
This file and also _memimporter.pyd is part of the py2exe package.

Buscando en Google un rato, localizamos un script que nos permite deshacer la conversión:


http://osdir.com/ml/python.py2exe/2007-11/msg00030.html

Como indican en la misma página, hay que ejecutarlo con la versión de python que se utilizó para generar el ejecutable, así que instalo en mi máquina python 2.4 y lo probamos:



>\Python24\python.exe exe2py.py crackme.exe
HEADER: 0x78563412 0 0 3039
ZipArchive:
Found code object: C:\Python24\lib\site-packages\py2exe\boot_common.py
Extracting to: boot_common.pyc
Found code object:
Disassembly:
1 0 LOAD_CONST 0 (None)
3 IMPORT_NAME 0 (zipextimporter)
6 STORE_NAME 0 (zipextimporter)
9 LOAD_NAME 0 (zipextimporter)
12 LOAD_ATTR 1 (install)
15 CALL_FUNCTION 0
18 POP_TOP
19 LOAD_CONST 0 (None)
22 RETURN_VALUE
Found code object: crackme.py
Extracting to: crackme.pyc

Perfecto, ya tenemos un script de python compilado, así que vamos a la web depython.net para obtener el código fuente:



Ya podemos ver claramente que pasando como parámetro "Captain hollywood" obtendremos el token que buscábamos: "find another way".

miércoles, 6 de julio de 2011

Quals SiBCTF 2011


Este fin de semana se han celebrado las quals del SiBCTF 2011. Hemos participado y hemos conseguido clasificarnos para la final del SiBCTF 2011. En la final estarán 8 equipos rusos y 8 equipos no rusos. Se celebrará el 11 de Septiembre del 2011. Los equipos que estarán en la final serán:

Lista de equipos rusos invitados a las finales del “SiBCTF 2011”

  • Leet More
  • HD || ! HD
  • PeterPen
  • MiT
  • HackerMayCry
  • Koibasta
  • [censored]
  • Honeypot

Lista de equipos no rusos invitados a las finales del “SiBCTF 2011”

  • Plaid Parliament of Pwning
  • disekt
  • SGM48
  • tiwfrags
  • shell-storm
  • Keysec
  • pwnfu
  • pentsec

Intentaremos hacerlo lo mejor posible. Hasta ese día, a practicar ;-)