
Framework de código aberto para hospedar competições CTF do tipo Attack/Defense com gamebot automatizado, execução de scripts, roteamento VPN e gerenciamento de infraestrutura baseado em nuvem para educadores e treinadores.
Este é o framework que a Shellphish usa para hospedar o iCTF.
O iCTF Framework é descrito em um artigo apresentado no workshop Usenix 3GSE em 2014.
Disponibilizamos este framework na esperança de que permita a educadores e treinadores hospedar seus próprios CTFs A/D. Este framework é gratuito para uso comercial, mas o suporte que podemos oferecer é limitado.
Planejamos lançar mais documentação técnica sobre cada componente no futuro; por enquanto, você pode encontrar instruções sobre como criar um jogo aqui.
Se tiver dúvidas, envie um e-mail para [email protected].
AVISO: Este framework ainda está em desenvolvimento e esta versão deve ser considerada uma versão BETA. Novos pull requests e novas issues são bem-vindos :)
Este é o banco de dados central que rastreia o estado do jogo. Ele é executado na VM do Banco de Dados e expõe uma API RESTful. Observe que este banco de dados não deve ser acessado diretamente pelas equipes, que devem, em vez disso, passar pelo componente de serviços da equipe.
O Gamebot é o componente responsável por avançar a competição. A competição é dividida em ticks. No início de cada tick, o gamebot decide quais scripts precisam ser executados pelo scriptbot (por exemplo, scripts para definir flags, recuperar flags ou testar serviços) e escreve a agenda no banco de dados central. Em seguida, extrai do banco de dados os dados sobre o tick anterior (por exemplo, flag submetida e o status das verificações de serviço) e calcula os pontos a serem atribuídos a cada equipe. As novas pontuações são armazenadas no banco de dados para que possam ser exibidas pelo componente de painel.
O scriptbot é responsável pela execução dos scripts agendados pelo gamebot. O scriptbot extrai os scripts agendados para execução do banco de dados central e, em seguida, os executa. Por exemplo, os scripts recuperam flags que foram definidas no tick anterior ou verificam se os serviços estão ativos e funcionais.
O componente roteador é responsável por rotear o tráfego entre as equipes na competição. O componente implementa um serviço OpenVPN. Cada equipe recebe uma VM que atua como roteador para a equipe. O tráfego entre as equipes precisa ser anonimizado para evitar que as equipes distingam o tráfego gerado pelo scriptbot do tráfego da equipe.
Para mais informações, visite nossa página wiki sobre como executar um CTF de classe