
Marco de trabajo de código abierto para albergar competiciones CTF de ataque/defensa con gamebot automatizado, ejecución de scripts, enrutamiento VPN y gestión de infraestructura basada en la nube para educadores y formadores.
Este es el framework que Shellphish utiliza para alojar el iCTF.
El Framework iCTF está descrito en un artículo presentado en el taller Usenix 3GSE en 2014.
Publicamos esto con la esperanza de que permita a educadores y entrenadores alojar sus propios CTF A/D. Este framework es de uso comercial gratuito, pero el soporte que podemos proporcionar es limitado.
Planeamos publicar más documentación técnica sobre cada componente en el futuro; por ahora puedes encontrar instrucciones sobre cómo crear un juego aquí.
Si tienes preguntas, por favor envía un correo electrónico a [email protected].
DESCARGO DE RESPONSABILIDAD: Este framework aún está en desarrollo y esta versión debe considerarse una versión BETA. ¡Se aceptan nuevos pull requests y nuevos issues :)
Esta es la base de datos central que rastrea el estado del juego. Se ejecuta en la máquina virtual de la base de datos y expone una API RESTful. Tenga en cuenta que los equipos no deben acceder directamente a esta base de datos, sino que deben hacerlo a través del componente de servicios del equipo.
El Gamebot es el componente responsable de avanzar la competición. La competición está dividida en ticks. Al comienzo de cada tick, el gamebot decide qué scripts deben ser ejecutados por el scriptbot (por ejemplo, scripts para establecer flags, recuperar flags o probar servicios) y escribe el cronograma en la base de datos central. Luego, extrae de la base de datos los datos sobre el tick anterior (por ejemplo, flags enviados y el estado de las verificaciones de servicios) y calcula los puntos a asignar a cada equipo. Los nuevos puntajes se almacenan en la base de datos, para que puedan ser mostrados por el componente del dashboard.
El scriptbot es responsable de la ejecución de los scripts programados por el gamebot. El scriptbot extrae los scripts programados para su ejecución de la base de datos central y luego los ejecuta. Por ejemplo, los scripts recuperan flags que se han establecido en el tick anterior, o verifican si los servicios están activos y funcionales.
El componente router es responsable de enrutar el tráfico entre los equipos en la competición. El componente implementa un servicio OpenVPN. A cada equipo se le asigna una máquina virtual que actúa como router para el equipo. El tráfico entre equipos debe ser anonimizado para evitar que los equipos distingan el tráfico generado por scriptbot del tráfico de equipo.
Para más información visita nuestra página wiki sobre cómo ejecutar un CTF de clase