Jump to content

Criando meu CTF com CTFd


greenmind

Recommended Posts

Conhecendo o CTFd

O CTFd é uma plataforma para criar de forma fácil o seu próprio Capture The Flag no estilo jeopardy , com a possibilidade de criar e inserir diversos plugins e temas acredito que seja a melhor plataforma para quem está começando e deseja criar o seu próprio CTF.

Site Oficial

Podemos ver também um demo que o pessoal disponibiliza.

Demo CTFd

Além disso eles disponibilizam a plataforma por 50 dólares por mês em uma cloud para você. **Mais temos o código fonte dela no github.**  

Obtendo o CTFd
Podemos encontrar o CTFd no repositório oficial no Github

Repositório CTFd

O projeto está em desenvolvimento , mais ainda tem alguns bugs como , exportar os desafios e os jogadores. Assim como todo projeto em desenvolvimento temos alguns bugs , podemos resolver ajudando no desenvolvimento do projeto.

Documentação do CTFd
Assim como todo projeto de qualidade achamos uma documentação para nos auxiliar , podemos ver em [Documentação CTFd](https://github.com/CTFd/CTFd/wiki).

Instalando o CTFd
Podemos criar o nosso CTF em uma simples VM rodando no Virtualbox , Vagrant e até o Docker.

Idependente de onde vamos rodar precisamos baixar o CTFd , eu recomendo usar o GIT. Com ele já instalado podemos dar um **git clone**.
 

git clone https://github.com/CTFd/CTFd

Ou podemos baixar ele em
 

https://github.com/CTFd/CTFd/archive/master.zip

Instalação simples


Nesse primeiro caso é uma instalação simples , visando apenas conhecer o projeto e jogando com os brothers já que dessa forma conseguimos ter um numero pequeno de jogadores pois usa o próprio servidor do Flask.

Vamos apenas executar o arquivo **prepare.sh** com poderes de administrador.

Com isso já temos nossa plataforma rodando sem problemas.

Basta executar o arquivo serve.py.
 

python serve.py

Instalação completa
Já na segunda vamos usar o gunicorn e o nginx como proxy reverso já que é o que eles recomendam para jogar com grande numero de pessoas.

A documentação pede para que seja rodado o arquivo prepare.sh , o arquivo de instalação nada mais é que o pedido para instalar.
 

apt-get install build-essential python-dev python-pip libffi-dev



E os requisitos requeriments.txt.

pip install -r requirements.txt


Esses requisitos vão ser instalados automaticamente , mais caso queira saber o que é podemos ver esse arquivo que é uma pequena lista de bibliotecas e versões para que o CTFd funcione sem problemas.

Atualmente é

Flask==0.12.2
Flask-SQLAlchemy==2.2
Flask-Session==0.3.1
Flask-Caching==1.2.0
Flask-Migrate==2.0.4
SQLAlchemy==1.1.11
SQLAlchemy-Utils==0.32.14
passlib==1.7.1
bcrypt==3.1.3
six==1.10.0
itsdangerous==0.24
requests==2.18.1
PyMySQL==0.7.11
gunicorn==19.7.0
dataset==0.8.0
mistune==0.7.4
netaddr==0.7.19


Com isso já temos nossa plataforma rodando sem problemas.

Basta executar o arquivo serve.py .
 

python serve.py

Caso instalou para rodar usando o **python3** faça.
 

python3 serve.py


Executando o gunicorn
Mais a ideia é executar essa plataforma usando o gunicorn , na própria documentação ele explica como podemos fazer isso.

Com ele já instalado vamos executar iniciar ele na porta **8000** , mais podemos iniciar em qualquer porta , nesse caso ele não precisa de permissão de um administrador para ser executado.

 gunicorn --bind 0.0.0.0:8000 -w 4 "CTFd:create_app()"

Configurando Proxy Nginx


Para instalar o **Nginx** é bem simples.

apt-get install nginx

Vamos agora configurar ele para que ele sirva de **proxy reverso** a nossa aplicação que vai estar rodando na porta **8000**.

Vamos criar o arquivo chamado ctf.conf.
 

/etc/nginx/sites-available/ctf.conf


O conteúdo do arquivo é
 

    server {
        listen       80;
        server_name  localhost;
        access_log  /var/log/nginx/proxy-ctf.log;

        location / {
                proxy_pass      http://127.0.0.1:8000;
        }
    }

 

Vamos apagar o arquivo padrão.
 

rm /etc/nginx/sites-enabled/default


Agora vamos criar um link no Linux usando o comando ln para lincar a pasta sites-available para a sites-enabled.
 

ln -s /etc/nginx/sites-available/ctf.conf /etc/nginx/sites-enabled/ctf.conf

 

Agora basta reiniciar o **Nginx** e pronto.
 

service nginx restart

 

Pronto para jogar

Toda a instalação que eu acabei de explicar eu fiz e está online no meu blog em
 

http://lab.greenmind.top/


Espero ter ajudado nesse tutorial , e qualquer duvida por favor entrem em contato.


Pontos importantes
- Esse projeto ainda está em desenvolvimento.

- Esse é apenas a primeira versão desse tutorial

- Esse é o primeiro POST do meu blog e toda critica é muito bem vinda.

- Tema é muito simples modificar e criar.


Referências

GreenMind ABase - https://greenmind.top/abase/Infraestrutura/Games/CTFd/

CTFd Wiki - https://github.com/CTFd/CTFd/wiki

CTFd Github - https://github.com/CTFd/CTFd/ 

Site CTFd - https://ctfd.io

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...