Hacking do bem — Melhorando os conhecimentos e habilidades em Segurança Cibernética

Os benefícios das competições Capture the Flag (CTF)

Álisson Bertochi
olist
7 min readMay 20, 2021

--

Olá, pessoal. Meu nome é Álisson Bertochi e entrei para o #teamOlist com a missão de ajudar a formar um time efetivo na área de Segurança da Informação. Meu background na área se deve muito às experiências que tive nos últimos 9 anos, no mundo dos CTFs, tanto como player quanto como organizador de eventos, então resolvi escrever um pouco sobre isso por aqui. Tenho certeza que participar desse tipo de competição pode ajudar muito a sua carreira, assim como ajudou a minha e de vários amigos e conhecidos.

Competições no formato Capture the Flag (CTF), de segurança da informação, existem desde 1996, quando foram introduzidas na DEF CON, uma das maiores e mais renomadas conferências de segurança da informação do mundo, que acontece anualmente em Las Vegas. Porém, no Brasil, os CTFs só se popularizam recentemente, apesar do primeiro que se tem notícia ter sido realizado durante a H2HC (Hackers to Hackers Conference) em 2007. As competições no formato Jeopardy, foco principal deste artigo, são aquelas em que o objetivo dos participantes é resolver problemas de categorias diversas, conseguir uma string, chamada de flag, e usá-la para pontuar no Scoreboard. Quanto mais difícil o desafio, mais pontos ele valerá. Entre as principais categorias, podemos citar: Engenharia Reversa, Criptografia, Web Hacking, Exploração de Binários e Miscellaneous (que pode englobar desafios de Análise Forense, Redes e o que mais “der na telha” dos organizadores). Falaremos mais delas adiante.

Em 2012, o Hacking n’ Roll, competição organizada pelo INSERT (Information Security Research Team) da UECE (Universidade Estadual do Ceará), foi o primeiro evento brasileiro no formato Jeopardy nos moldes dos CTFs internacionais, com duração de 24 horas consecutivas, sem intervalo. Esse foi o pontapé inicial para que surgissem vários projetos que colocariam, nos anos seguintes, o Brasil em uma posição de destaque no cenário internacional, como o ELT (Epic Leet Team), melhor time da América Latina, o Pwn2Win CTF, uma das maiores competições do planeta, e o Projeto CTF-BR, que visa disseminar a cultura dos CTFs pelo país, por meio de iniciativas nas quais participam as equipes afiliadas, que são as principais do cenário nacional.

Com a crescente digitalização dos serviços nos últimos anos — transformação essa que tem sido muito potencializada com a pandemia — , a busca por profissionais realmente capacitados para ajudar as empresas a se protegerem aumentou exponencialmente, porém o mercado não estava preparado para atender a essa demanda. O cenário de CTF é um celeiro de talentos e pode ajudar a suprir essa escassez com muita maestria.

As habilidades que um CTF Player precisa ter são as mesmas habilidades que um profissional de destaque necessita. Dentre elas, podemos citar:

1 — A capacidade de resolução de problemas complexos em um curto período de tempo, sob pressão.

2 — A facilidade em realizar um trabalho em equipe realmente efetivo.

3 — A capacidade de “pensar fora da caixa”, muitas vezes em maneiras não previstas pelos autores dos desafios.

4 — Resiliência e persistência para superar os obstáculos encontrados durante as resoluções, além do fato de serem competições longas e cansativas.

Dito isto, podemos perceber que os players e times que se destacam são realmente diferenciados.

Essas competições ocorrem durante o ano inteiro e existe um ranking global com as melhores equipes, que é formado pela soma dos seus 10 melhores resultados no ano. Esse ranking se encontra no site CTFTime.org. Além do ranking, o CTFTime mantém o calendário com as próximas competições e é um repositório de write-ups, que são os tutoriais dos desafios que as equipes fazem após o término das competições. Quanto mais difícil e renomado o evento, maior será seu rating no CTFTime. A grande maioria dos eventos são organizados pelas próprias equipes, mas também existem alguns que são organizados por empresas como o Google CTF, Trend Micro CTF e Facebook CTF, que sempre dão premiações em dinheiro para o Top 3. Além disso, alguns eventos têm uma classificatória online e uma final in loco com os times que se classificaram (por exemplo, o Top 10). Exemplos desses são o DEF CON CTF, cuja a final é em Las Vegas juntamente com a conferência, e o próprio Google CTF. Também existem competições voltadas ao público iniciante, como o picoCTF. De forma geral, as que estão marcadas como “High School” no CTFTime são boas opções para quem quer começar a se aventurar.

Agora, vamos falar um pouco sobre cada uma das categorias para ver com qual delas você se identifica mais, caso deseje começar a jogar. Normalmente, as equipes têm especialistas em cada uma e isso é o que faz com que elas consigam ser competitivas e alcancem bons resultados.

Engenharia Reversa: em âmbito global, engenharia reversa é a arte de entender o funcionamento e construção de algo após o produto (que pode ser um software, aeronave, medicamentos ou literalmente qualquer coisa) estar pronto. No âmbito da computação e dos CTFs, Engenharia Reversa é a arte de pegar um arquivo executável (binário) e analisar ele, sem o código-fonte original, para entender o seu funcionamento, e, no caso dos CTFs, conseguir obter a flag. Esse binário pode ter sido escrito em qualquer linguagem de programação, para qualquer arquitetura, como MIPS, Intel x86, ARM, RISC-V etc. Debuggers, disassemblers e decompilers são ferramentas que auxiliam os jogadores nessa missão.

Criptografia: os criadores dos desafios costumam implementar algoritmos criptográficos com falhas, ou ainda utilizam implementações reais que são fracas e podem ser subvertidas de alguma maneira. Gostar e ter facilidade com matemática é pré-requisito para se dar bem aqui.

Web Hacking: aplicações webs com falhas diversas são apresentadas aos competidores e eles precisam analisá-las e atacá-las para conseguir extrair a flag. As vulnerabilidades podem ser tanto server-side quanto client-side, e às vezes é necessário explorar várias (chain) para atingir o objetivo. É comum os autores dos desafios disponibilizarem todo o ambiente para que os competidores consigam replicar o ambiente localmente, como o Dockerfile, código-fonte etc.

Exploração de Binários: talvez essa seja a categoria mais complexa, pois também exige ser bom em engenharia reversa para conseguir identificar a falha no binário entregue no desafio e, posteriormente, montar um exploit para explorá-la num servidor onde ele está rodando (e que contém a flag). Basicamente, são binários com falhas que podem levar à corrupção de memória e controle do fluxo de execução por parte dos competidores. Algumas falhas comuns que são comumente exploradas aqui: Stack Overflow, Heap Overflow, Integer Overflow, User-after-free (UAF), Double Free etc. Para ser bom nessa categoria, é necessário um conhecimento avançado no funcionamento interno do sistema operacional e da arquitetura-alvo, além de precisar entender de assembly, gerenciamento de memória, debugging etc.

Miscellaneous: aqui, os organizadores dos eventos costumam colocar os desafios que não se encaixam nas outras categorias. Às vezes eles estão relacionados diretamente com segurança da informação, às vezes não. Há uma crescente tendência puxada pela cena chinesa, de desafios de Análise Forense, Redes e PPC (Professional Programming and Coding), que outrora eram apresentados em categorias separadas, serem colocados dentro de Misc. Os de programação (PPC) podem ser similares aos de Maratonas clássicas de programação, ou podem explorar outras vertentes. No Pwn2Win, por exemplo, por muitos anos os desafios de PPC exigiram a criação de um bot para automatizar e vencer um game que era apresentado no terminal, após acessá-lo via SSH. Algumas pessoas que não se especializaram nas outras categorias conseguem achar aqui desafios interessantes para trabalhar durante os eventos.

Se você se interessou e deseja começar nesse mundo, como citado anteriormente, no Brasil temos o Projeto CTF-BR, onde entre os objetivos estão ajudar a disseminar a cultura das competições pelo país, unir e fortalecer os players e equipes, por meio de diversas iniciativas, e ajudar pessoas interessadas a encontrarem um time. No grupo do Discord do Projeto existe um canal chamado #ache-um-time onde você pode se apresentar e falar com outros interessados para combinar para jogar algum dos próximos eventos disponíveis no CTFTime (veja a página de Upcoming). Além do Discord, você pode se aproximar da comunidade por várias outras redes sociais, disponíveis em https://bit.ly/ctfbr-social. Outra dica é dar uma olhada no link https://ctf-br.org/docs, que tem alguns sites de Wargames, que são como CTFs que ficam sempre online, e assim você pode começar a ver alguns desafios hoje mesmo.

👉 E se você já tem experiência com isso, venha trabalhar comigo no time de Segurança da Informação do Olist! Temos várias vagas abertas e para trabalho remoto, confira e candidate-se em olist.gupy.io.

Boa sorte nessa caminhada, que com certeza será de sucesso! :)

Leia também:

A Tríade Ágil | Parte 1 / The Agile Triad | Part I

Alguns sites e recursos caso deseje saber mais sobre segurança cibernética:

https://bit.ly/por-que-jogar-ctf -> artigo que fiz para o site Mente Binária

https://bit.ly/por-que-jogar-ctf-video -> vídeo que fiz para complementar o artigo do Mente Binária

https://ctftime.org -> site com o calendário, ranking global e write-ups das equipes

https://ctf-br.org -> site do Projeto CTF-BR

https://pwn2.win -> site do evento brasileiro que é referência no cenário internacional

https://epicleet.team -> site da equipe brasileira que é a melhor da América Latina

https://ctf-br.org/docs -> compilado com diversos links interessantes de palestras e sites de wargames

https://www.wechall.net -> site que é como se fosse o CTFTime dos Wargames. Mantém um ranking individual dos melhores Players por país

--

--