Español | English
rss facebook linkedin Twitter

Diseño del Reto 3 - Segunda pista.

Ya tenemos una solución en nuestro poder, y otra a punto de caer, por lo que damos la pista que teníamos prevista y la semana que viene publicamos las soluciones.

El crackme del tercer reto es una prueba de concepto de un pequeño estudio sobre como crear una protección en la que se prenteden utilizar uno de los puntos débiles del atacante, a la vez que una de las mayores ventajas del programador:

- El punto débil es el atacante en si, que es un ser humano y tiene una capacidad limitada de análisis de complejidad.
- La ventaja del programador es la posibilidad de crear la protección a su antojo, hacer software "inteligente", utilizar estudios previos, etc.

Se buscaba un sistema de protección que una vez lanzada la ejecución evolucione hacia un final correcto si y solo si se cumplía la premisa inicial, que en este caso era el keyfile correcto. Tras valorar otras alternativas como un algoritmo genético, se utilizaron Redes de Petri

Una red de Petri se puede ver como una red de distribución de fichas entre lugares interconectados por transiciones. Para disparar una transición, cada lugar que le apunta deberá tener una ficha y, al dispararse la transición, perderá la ficha, a la vez que se lanzará una ficha a cada lugar apuntado por la transición lanzada.

La siguiente imagen ilustra una transición de una red sencilla (se muestra en rojo la transición que se va a disparar)

También podemos dibujar el árbol de alcanzabilidad del dicha red:


Por supuesto, se pueden diseñar redes de Petri más complejas, como la que se muestra a continuación, y que ha sido utilizada en el crackme:


Junto con su árbol de alcanzabilidad:

En cada ejecución el programa puede tomar un camino diferente del árbol, pero siempre llegará a la misma solución.

La red debe estar diseñada de tal manera que si se cambia alguna ficha, no se alcance la solución correcta. Por ejemplo, si añadimos una ficha en P2, el nuevo árbol de alcanzabilidad demuestra que no se llega a la solución, por lo que el avance de la red quedara atascado y saltará el timer diciendo que la solución no es correcta.


En resumen, se aborda de manera un poco más sofisticada el arte de tocar las narices.

Referencias:
Una herramienta muy intuitiva para trabajar con redes de Petri:
http://pipe2.sourceforge.net/
Un escrito sobre el tema (requiere registro): http://www.codebreakers-journal.com/content/view/47/27/

Mikel Gastesi
S21sec labs

2 comentarios:

Sergio dijo...

El paper sobre redes perimetrales es el escrito por Thorsten Schneider?

S21sec labs dijo...

Hola Sergio,

Si, el paper sobre redes de petri es el escrito por Thorsten Schneider y Robert Airapetyan.


(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login