Vamos lá, essa história é longa e mistura confusão, dificuldades, gastos e, claro, muita diversão. Neste tópico, vou mostrar como foi minha linha de raciocínio para construir uma plataforma de CTF focada em baixo custo, detalhando os desafios e trazendo um pouco de “tecniquês” para explicar as engrenagens por trás de tudo.

Espero de coração que este relato ajude quem tiver o mesmo desejo no futuro. Durante minhas pesquisas, só encontrei conteúdo sobre isso em inglês; logo, este deve ser o primeiro (ou um dos primeiros) em português.

Troca de Ideia

Se você quiser trocar conhecimento ou dar sugestões, sinta-se à vontade para me chamar no LinkedIn ou por e-mail. Tenho quase certeza de que a minha configuração de infraestrutura não é a “melhor do mundo”, então feedbacks são bem-vindos!

Guia Técnico

Este texto é um relato de experiência. Caso você esteja procurando o passo a passo técnico detalhado, ele está disponível aqui.


O Ponto de Partida: Por que criar uma plataforma própria?

Na minha (ex)entidade estudantil da UFABC, o Green Team Hacker Club, não tínhamos uma plataforma própria. Faltava algo com a nossa cara, nossos desafios e, acima de tudo, nossa autonomia.

Ter uma plataforma nossa parecia um sonho distante, já que não tínhamos ninguém especializado em Cloud ou DevOps no time. Dependíamos totalmente de plataformas externas (como PicoCTF, TryHackMe e HackTheBox) ou da ocorrência de eventos pontuais para treinar. Foi então que decidi colocar a mão na massa e criar essa bendita plataforma.

A Escolha da Ferramenta: CTFd

Com uma pesquisa rápida, percebi que a opção mais prática e sólida é o CTFd. Ele já é extremamente consolidado na comunidade de segurança, estável e traz uma praticidade gigantesca.

Fica aqui meu elogio:

A plataforma CTFd é incrivelmente bem documentada e salva entusiastas ao redor do mundo. Sou fã demais!

Planejamento e Filosofia de Design

Acredito que PLANEJAMENTO é a palavra-chave para qualquer projeto. Fazer as coisas sem pensar sempre dá errado — seja no curto ou no longo prazo.

Como somos uma entidade universitária, os membros entram e saem com frequência. Isso exige que tudo seja bem documentado e fácil de manter. Quando digo fácil, quero dizer que não deve demandar conhecimentos profundos de DevOps ou redes logo de cara, para não assustar os “bixos” (calouros) que estão tendo o primeiro contato com a segurança agora.

Por que não apenas desafios estáticos?

Alguém poderia perguntar: “Lucas, por que não fazer desafios simples onde o competidor apenas baixa o arquivo?“. É uma ótima ideia, mas eu acho a experiência de usuário (UX) muito inferior. Eu queria desafios mais complexos, que exigissem um serviço Docker simulando um dispositivo real, para trazer mais imersão.

Premissas do GTHC:

  1. Usuários Simultâneos: Somos uma entidade pequena, então o foco era suportar cerca de 10 usuários simultâneos (podendo aumentar um pouco em época de processo seletivo).

  2. Budget: Como bons universitários, o orçamento era quase zero. O objetivo era gastar o mínimo possível.

  3. Performance: Mesmo com orçamento baixo, a qualidade do serviço não poderia ser sacrificada.

  4. Personalização: A plataforma precisava ter a identidade visual e o “espírito” do GTHC.


A Infraestrutura

Após muita pesquisa, optei pela GCP (Google Cloud Platform) com o deploy do CTFd rodando diretamente em Python.

Por que em Python e não Docker? Para o nosso volume de usuários, a diferença de performance era mínima. Optei pelo Python por ser mais fácil de configurar e dar manutenção para quem assumir a entidade depois de mim, caso não domine Docker.

O Setup:

  • Subi uma instância EC2 (Compute Engine) de tamanho small com Ubuntu.

  • Atualizei os pacotes e instalei o CTFd.

  • Configurei o NGINX para gerenciar o tráfego e o HTTPS (Segurança em primeiro lugar!).

  • Compramos o domínio ctfgthc.com.br pelo Registro.br.

  • Para o envio de e-mails (como recuperação de senha), utilizei o Mailgun.


Regra de Ouro da Documentação

Uma lição importantíssima: DOCUMENTE SEUS DESAFIOS! Não importa se o desafio é uma flag boba escondida no robots.txt ou um sistema complexo rodando em SSH via Docker: documente o processo de configuração, o raciocínio por trás dele e, se possível, o write-up (resolução).

Em uma entidade estudantil, isso vale ouro. Futuramente, pessoas que nunca viram aquele desafio precisarão ajudar novos membros ou fazer manutenções, e a documentação será a única bússola deles.

Na época do processo seletivo de 2025, fizemos uma força-tarefa e criamos vários desafios em conjunto, o que foi essencial para o sucesso do projeto.


O Resultado Final (Custos e Sucesso)

No fim das contas, conseguimos manter tudo dentro do esperado:

  • GCP: R$ 30,00 mensais.

  • Domínio: R$ 70,00 (válido por 2 anos).

O resultado? Tivemos mais de 50 pessoas utilizando a plataforma simultaneamente e resolvendo desafios. Foi incrível ver o projeto ganhando vida!

Se você leu até aqui e tem alguma dica de como eu poderia ter otimizado ainda mais os custos ou a infra, por favor, me dê um toque!