The Information Systems and Computer Applications examination covers material that is usually taught in an introductory college-level business information systems course.

Binarios para desayunar

Binarios para desayunar

 

Como ya sabéis desde hace tiempo llevamos organizando los ‘wargames’ de Campus Party e incluso lanzamos nuestro primer Wargame internacional hace relativamente poco.
Llevamos tiempo prometiendo que liberaríamos algunas de las pruebas para aquellos que en su momento no pudieron participar y hoy ha llegado ese día.
Las pruebas que vamos a liberar son de tipo ‘binarios’ y la dificultad va in crescendo, la primera es bastante sencilla, la segunda tiene mas dificultad y la tercera es mas dura .
Problemas de tiempo
Esta prueba formó parte del reto Campus Party 2009 y la lógica es la siguiente: Tenemos un binario compilado que debe liberar un token, el problema es que solo liberará dicho token en una fecha determinada (y posterior a la actual).
Para asegurarnos que el binario se ejecutaba en el host donde debía ejecutarse (y no fuera tan fácil como descargarlo y ejecutar en una maquina cambiando la hora …) debes crear el fichero /tmp/matrixhasyou para simular el entorno confiable donde debe ejecutarse.
El código fuente de la prueba se puede descargar aquí
Compilación: gcc -static timetoken.c -o timetoken
Crackme ‘old school’
Este es el típico crackme donde se debe ‘reversear’ el binario en busca del token, lo suyo es compilarlo con -static para meter mayor cantidad de ruido y hacer que el comando strings emita muchos datos.
El fuente de esta prueba aquí.
Compilación: gcc -Wall -O2 –static -pthread passCP.c -o passCP
Crypto al revés
Esta prueba, del Wargame I, generó infinidad de correos electrónicos preguntando ‘si estaba bien’ porque el planteamiento es un poco diferente a lo normal. En este caso, del binario debes ser capaz de obtener un string cifrado y convertido en base64 y la clave para descifrar dicho string. ¿Donde está el problema? En que no se especifica en ningún lado con qué algoritmo de cifrado se ha realizado el proceso.
El binario se ofrecía ‘roto’ ya que faltaba una librería llamada libSbD.so.1 que era la que contenía la información sobre los algoritmos empleados. Se pedía como solución que se entregase una librería que hiciera funcionar el binario
Mucha gente resolvió el problema haciendo fuerza bruta … de algoritmos para descubrir cual se estaba usando.
Para jugar esta prueba, compila todo el fuente (binario y librerías) y luego ‘borra’ libSbD.so.1 para tener el binario exactamente a como se entregaba a los participantes
El fuente de la prueba se puede descargar aquí
Compilación:
(la librería compartida)

gcc -c -fPIC libSbD.c -o libSbD.o

gcc -shared -Wl,-soname,libSbD.so.1 -o libSbD.so  libSbD.o

(El binario en si )

gcc bin02.c -o bin02 -L. -lSbD -lssl -lcrypto -pthread

ln libSbD.so libSbD.so.1
(Para ejecutarlo)

export LD_LIBRARY_PATH=`pwd`

./bin02

Esperamos que este material resulte didáctico, tanto para los valientes que compilen y jueguen como para aquellos que simplemente tengan interés en ver el código