Sou fã dos CTFs! Desde que participei há uns anos nunca mais parei, agarra-nos mais do que a «Guerra dos Tronos».

OK… Parece giro… Mas o que é isso? Para que serve?

O que são?

CTF (Capture The Flag) significa «Capture a Bandeira». São competições gratuitas que nos permitem testar os nossos conhecimentos sobre hacking através de desafios de diferentes modalidades que teremos de resolver para conseguir o prémio, a famosa «flag».

A «flag» é um código (por ex. flag{W3lc0m3_t0_CTF} que permite confirmar à plataforma da competição que fomos capazes de resolver o desafio e, normalmente, é acompanhada de uma compensação com pontos. A quantidade de pontos está relacionada com a complexidade do desafio e/ou tempo e pessoas que o resolvem. Por exemplo, se o desafio vale 100 pontos e fomos os segundos a resolvê-lo, o 1º ganha 100 pontos, nós (2º) 99 pontos, o 3º 98 pontos, e assim sucessivamente.

Tudo o que é bom acaba depressa, e os CTF têm um tempo limite para resolver o maior número de desafios possíveis. Normalmente, este tempo é de 24/48h durante o fim de semana, apesar de existirem outros com uma duração de uma semana, duas ou até mesmo um mês.

Para que serve?

Os CTF servem para:

 Adquirir conhecimentos e experiência sobre segurança informática.
 Testar as nossas capacidades de hacking de forma legal e controlada.
 Socializar.
 Melhorar o teu curriculum vitae.
 O mais importante… Divertir-nos!

Tipos de CTF

Estas são as diferentes modalidades:

– Jeopardy: Desafios de diferentes temáticas (Crypto, Web, Forense, Reversing, Exploting…) onde se ganham pontos quando são resolvidos de acordo com o nível de dificuldade. Ganha o participante ou equipa que mais pontos tenha quando terminar o tempo de jogo.

– Attack-Defense: Cada equipa tem um servidor ou uma rede de equipamentos com vulnerabilidades que devem proteger enquanto tentam conseguir acesso à equipa contrária. Neste desafio há pontos de ataque e pontos de defesa.

– Mixted: Wargame, hardware e outros.

Tipos de Desafios

Explicarei cada um dos desafios que podemos encontrar num CTF:

– Criptografia (Crypto): Poderíamos definir como um procedimento onde se oculta uma mensagem secreta através de encriptação ou codificação para evitar que seja legível para alguém que não saiba como o decifrar.
– Web: Este tipo de desafios focam-se em encontrar e explorar vulnerabilidades na aplicação Web, tais como: Injeção de SQL, Cross-Site Scripting (XSS), força bruta, CRLF, CSRF…

– Esteganografia (Stego): Técnicas que ocultam mensagens ou objetos dentro de outros, de forma a que a sua presença não seja detetada e passem despercebidos.

– Engenharia reversa (Reversing): Geralmente analisa-se um ficheiro binário (BIN, EXE, ELF, APK…) executável. Os participantes têm de encontrar a Flag ou a chave através da descompilação do ficheiro.
– Exploração (Exploting): O objetivo deste desafio é construir o nosso próprio exploit, normalmente para um binário que se executa num servidor ou para uma aplicação web. Geralmente tem-se acesso ao código fonte da aplicação a explorar.

– Forense (Forensic): Consiste em investigar e analisar tipos de dados, como por exemplo capturas de rede (.pcap), core dumps ou de discos duros.

– Programação (Programming): Neste tipo de desafios teremos que preparar um programa ou script para fazer uma determinada tarefa.

– OSINT (Open Source Intelligence): Estes desafios são bastante raros e quase nunca os encontraremos num CTF. Esta modalidade consiste em investigar algo ou alguém através de fontes de acesso público (fóruns, redes sociais, blogs, wikis, revistas, imprensa, etc.)

– Vários (Misc): Mistura de desafios das diferentes categorias vistas anteriormente.

Como participar?

É muito fácil, só terá de se registar na página do evento, o link é partilhado por RRSS uns dias antes de começar o CTF.

Se quiser estar a par das novidades, recomendo que se inscreva em CTF Time e confirme o calendário onde especificam as datas de início/fim e também apresentam o link direto para o CTF.

O que preciso para jogar?

É recomendável ter uma ligação Linux preparada para PenTest. Estas distribuições contam com um grande número de ferramentas instaladas e configuradas, por isso só é necessário instalar, virtualizar ou iniciar num docker.

Tem aqui uma lista das mais conhecidas:
Kali Linux

Parrot Security OS

BackBox

BuqTraq

BlackArch

Onde treinar?

Existem muitas plataformas de treino onde pode praticar hacking de forma legal e GRÁTIS. Recomendo aqui algumas:

Bandit – OverTheWire: Ótima para começar no mundo do hacking e familiarizar-se com os comandos Linux.

gf0s Labs: Pequeno laboratório com três desafios que se assemelham à realidade, perfeito para começar neste mundo do CTF.

Root Me: Website com muitos desafios de diferentes tipos e classificados por níveis.

Hack Me: Plataforma onde cada um pode carregar as aplicações Web vulneráveis para fins educativos ou de investigação.

HackThis: Website de treino com diferentes tipos de desafios por níveis onde a dificuldade aumenta após resolver o anterior.

Hack The Box: Um dos laboratórios mais conhecidos e em voga no mundo do hacking, dispõe de máquinas com todo o tipo de Sistemas Operativos e também desafios de diferentes temáticas.

VulnHub: Máquinas virtuais (.OVA) vulneráveis para descarregar e montar no seu próprio equipamento.

CTF Time: Não há nada melhor do que fazer o que gosta e com amig@s. Na CTF Time pode criar uma equipa e participar numa grande variedade de competições por todo o mundo.

Crie o seu próprio CTF

Gostaria de criar o seu próprio CTF para um evento ou só por diversão? Pode fazê-lo de forma gratuita com qualquer uma destas plataformas:

– Facebook CTF: https://github.com/facebook/fbctf

– Mellivora CTF: https://github.com/Nakiami/mellivora

– CTFd: https://github.com/CTFd/CTFd

E com toda esta informação já pode começar a jogar. Mas sempre em plataformas controladas ou nos nossos próprios equipamentos e nunca (sem autorização expressa e por escrito) em websites reais.