Jump to content

Criando meu CTF com CTFd


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

 

Edited by greenmind
  • Curtir 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...