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
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
4 comments :
Hola yago fijate que yo siempre he tenido el interes en aprender este tipo de cosas, actualmetne soy desarrolladora en php y se un poco de otros lenguajes como java, perl y c. Siempre me he sentido atraida por el lado de la seguridad informatica y quisiera adentrarme un poco mas en eso. Que es lo que me recomendarias estudiar para poder resolver este tipo de retos.
Gracias.
Ale
Hola Ale, Como bien dices tener conocimiento previo de sistemas operativos / lenguajes de programación es requisito fundamental. Para ir 'soltándote' lo mejor que puedes hacer es conseguir 'Writeups' de wargames, por ejemplo aquí está el de nuestro Wargame I http://www.securitybydefault.com/2011/02/soluciones-del-i-wargame-sbd.html
Hola Ale, Como bien dices tener conocimiento previo de sistemas operativos / lenguajes de programación es requisito fundamental. Para ir 'soltándote' lo mejor que puedes hacer es conseguir 'Writeups' de wargames, por ejemplo aquí está el de nuestro Wargame I http://www.securitybydefault.com/2011/02/soluciones-del-i-wargame-sbd.html
Sería interesante compartir con la comunidad el código de las pruebas para ver cómo están desarrolladas.
Cuando saque algo de tiempo volveré a echarle un vistazo a las pruebas de binarios.
Un saludo.
Publicar un comentario