# Wargame (hacking)

Wargame (ou capture the flag, CTF), no âmbito da tecnologia, é uma modalidade de competição entre hackers desafiados a desvendar problemas sobre segurança da informação, sendo esses desafios de segurança cibernética e esporte mental no qual os concorrentes devem explorar ou defender uma vulnerabilidade em um sistema ou aplicativo, para obter ou impedir o acesso a um sistema de computador.
Um CTF geralmente envolve uma captura lógica da bandeira, podendo ser baseado em pentesting, autenticação baseada em conhecimento, ataques a URL, engenharia reversa de software (principalmente JavaScript, Adobe Flash e linguagem de montagem), quebra de senhas, code injection, cross-site scripting, SQL injections, explorações, falsificação de endereços IP, forense e outras técnicas de hackers. $^[$
Praticado em equipes ou individualmente, o CTF pode acontecer em três formatos distintos. No primeiro deles, chamado de "Jeopardy-Style", o jogador individual, ou o time, precisa resolver desafios de segurança da informação (para capturar as chamadas “flags”) que valem pontos de acordo com a complexidade que têm. Ganha quem, no final, obtiver a maior pontuação. As vezes são online e servem como qualificatórias para as finais do segundo formato, chamado de "Attack/Defense". No "Attack/Defense", é dado aos jogadores um ambiente (normalmente uma rede de computadores) cheio de falhas e vulnerabilidades que terão de ser descobertas e corrigidas em um determinado período de tempo, encerrado o prazo, os jogadores passam à tentativa de invasão do ambiente adversário ao mesmo tempo em que protegem o próprio. São realizadas on-site (offline), onde ocorre as maiores competições nacionais e internacionais, como a DEF CON. Existem também CTFs “híbridos”, misturando os dois formatos e podendo ser feitos de diversas formas diferentes.
O CTF avalia, de forma gamificada, habilidades como vulnerabilidade da rede, criptografia e programação, entre outras. O CTF pode explorar também conhecimentos que vão além de uma área específica, exigindo o domínio de matemática, linguística, história etc.
Em resumo, são competições que envolvem diversas competências dos profissionais/estudantes/entusiastas para a resolução de desafios relacionados à infosec (segurança da informação), com o objetivo de capturar a bandeira (normalmente um código) e pontuar. As competições de CTF geralmente são projetadas para servir como um exercício educacional para dar aos participantes experiência em segurança de máquina, além de conduzir e reagir aos tipos de ataques encontrados no mundo real.

## História

A cibersegurança é um assunto de alta prioridade nas empresas, pequenas e grandes, pois os ataques cibernéticos têm aumentado nos últimos anos. Em resposta a esses ataques, profissionais de segurança e estudantes universitários passaram por treinamentos rigorosos sobre como os hackers conseguem entrar nas empresas e como se defender. Uma maneira de treinar a segurança cibernética é através de um evento de CTF.
O primeiro CTF de segurança cibernética desenvolvido e hospedado foi em 1996 na 4ª edição da DEFCON em Las Vegas, Nevada. O DEFCON é a maior conferência de segurança cibernética dos Estados Unidos e foi oficialmente iniciada em 1993 por Jeff Moss. O DEFCON tornou-se uma plataforma para competição de habilidades e, à medida que a Internet cresceu, as competições de DEFCON e CTF também o fizeram. As competições de CTF tornaram-se globais porque não tinham fronteiras e podem ser feitas via Internet, em pouco tempo equipes internacionais estavam competindo por diferentes tipos de prêmios e direitos de se gabar.
Atualmente há competições em diversos eventos, no mundo todo, dos quais participam estudantes, interessados e profissionais de segurança da informação, além de competições criadas por escolas e universidades (para ensino, avaliação e aplicação). Há ainda empresas de tecnologia que usam o Capture the Flag como forma de treino e contratação de novos funcionários. Um exemplo é a Ernst & Young, que criou um CTF em seu site para processo de seleção. Google e Facebook também têm suas próprias competições.

## Modalidades de desafios

Os desafios dos CTFs são divididos basicamente em categorias, como:
* Binário - engenharia reversa ou exploração de um arquivo binário.
A exploração binária se resume a fazer com que um aplicativo aja de maneira diferente da que ele deveria executar. Ao fazer o aplicativo funcionar de maneira diferente, você obtém informações valiosas que serão usadas para alterar ou comandar o destino.
As explorações binárias comuns usam uma técnica conhecida como corrupção de memória, que pode permitir que um invasor obtenha privilégios não autorizados ao sistema que está executando o aplicativo ou sequestrando o fluxo de controle do aplicativo e injetando seus comandos diretamente no sistema.
* Web - Explorando páginas da Web para encontrar a bandeira.
Esses tipos abrangem uma ampla variedade de métodos diferentes para explorar recursos baseados na Web. Embora os métodos sejam amplos, existem ferramentas comumente associadas à exploração na Web, incluindo Nmap, Wireshark e Metasploit .
Alguns dos sinalizadores mais fáceis são acessíveis através do seu navegador da web, através de “Exibir fonte da página” ou o equivalente no seu navegador.
* Criptografia - Normalmente envolve descriptografar ou criptografar uma parte dos dados.
Frequentemente, esse tipo é baseado em conversões de string de um formato para outro.
Precisa-se criptografar ou descriptografar mensagens. Você precisará ter uma boa noção de programação para criptografia. Caso contrário, é uma habilidade lucrativa a ser alcançada .
* Pwn - Explorando um servidor para encontrar a bandeira;
* Esteganografia - encarregada de encontrar informações ocultas em arquivos ou imagens.
O termo vem do grego steganos, que significa "encoberto, escondido" e graphein, que significa "escrita".
É a técnica de ocultar uma mensagem dentro de outra. Diferentemente da criptografia, onde torna-se a mensagem ilegível, a esteganografia procura esconder o fato de que a mensagem existe em primeiro lugar.
* Forensics - Voltados a recuperação de dados, análise forense seja de memória, de rede.
Esse tipo em um ambiente CTF pode cobrir muito terreno, mas é bastante comum que seja solicitado encontrar arquivos ou informações ocultas em outros tipos de arquivos.
Ao cavar esses arquivos com scripts e ferramentas, os concorrentes podem extrair dados (normalmente criptografados) e executá-los em uma série de outras ferramentas enquanto tentam decodificar a bandeira cobiçada.
* Networking - São de analises de pacote, protocolos de roteamento e investigação de dump de rede;
* XPL - Medem a capacidade de explorar programas para alterar seu fluxo normal de execução;
* Miscellaneous - Conhecidos como “misc”, são desafios que não se encaixam necessariamente nas outras categorias, normalmente são misturados, pode ser forense com programação, etc;
* Engenharia Reversa - é o processo de descobrir os princípios tecnológicos e o funcionamento do sistema, através da análise de sua estrutura, função e operação:$^[$
Às vezes, o sinalizador será uma sequência oculta dentro do código do aplicativo. Dependendo do tipo de desafio e do nível de dificuldade da tarefa, pode ser necessário usar a engenharia reversa.Os desafios de engenharia reversa exigem um software de depuração e desmontagem de conhecimento íntimo. Os objetivos são: pegar um binário compilado, separá-lo e descobrir como ele funciona .
Deve-se estar familiarizado com o modo como o aplicativo usa fluxo de controle, loops e condicionais, para que você possa descobrir como dobrar o programa à sua vontade e, em seguida, capturar a bandeira.
* PPC(Professional Programming and Coding) - Como o nome diz, são desafios de programação, onde você vai se deparar com desafios em que há um código (de qualquer linguagem possível).Talvez você precisará alterar coisas no código para que ele compile e retorne a flag, porém, depende muito, eles também podem ser um problema em que você terá que estruturar sua ideia em uma linguagem, pois resolver na mão seria improvável, mas assim como os outros desafios, podem ser bem complexos.

## Maiores eventos

* Nacionais
** Capture The Flag - HackerSec
** Hackaflag
** Hackversity da H2HC
** Sucuri Hacker Club
** Pwn2Win CTF
* Internacionais
** DEF CON CTF
** Google CTF
** Hack The Box
** Trend Micro CTF
** Rootcon
** OWASP CTF
** Hitcon
** picoCTF
** RuCTFE
** iCTF
** CSAW CTF
** Pwn2Win CTF
Exemplos por modalidade :
| Jeopardy CTFs | Attack/Defense CTFs |
| CSAW CTF | DEF CON CTF (Finals) |
| PicoCTF | iCTF |
| DEF CON CTF (Quals) | RuCTFE |

## Benefícios no mundo real

Uma competição CTF é um excelente lugar para começar a carreira em segurança cibernética ou para aumentar o perfil no setor, pois os eventos costumam ser acompanhados e assistidos de perto por gerentes e recrutadores, a fim de encontrar talentos emergentes e profissionais existentes.
Contudo, em busca de emprego ou não, um CTF é uma das ótimas maneiras de desafiar seus conhecimentos em um ambiente seguro, colaborativo e tolerante, seja você um entusiasta, um profissional da segurança ou um estudante. Além dos altos benefícios em relação ao desenvolvimento técnico, os CTFs podem também oferecer aos participantes uma grande oportunidade de trabalhar suas habilidades sociais, como trabalho de equipe, comunicação, adaptabilidade, gerenciamento de tempo e resolução de problemas.
Ao organizar uma competição de CTF, certifique-se de comunicar as regras e limites da competição antes do início do evento.
Os diretores de Segurança de Informação devem estar sempre dispostos proativamente a incentivar equipes a participar das competições como parte de seu desenvolvimento profissional. Isso lhes permitirá aprimorar suas habilidades em grupo.
Com algumas dessas iniciativas, pode se formar uma base eficaz para uma amola estratégia de educação e conscientização sobre segurança cibernética.
A ocasião possui um forte elemento social, apesar do ambiente competitivo. Dá aos jogadores a chance de se encontrar na vida real para compartilhar conhecimento, interagir e se relacionar com objetivos, interesses comuns e experiências. Contudo, se a pessoa é do tipo que gosta de ganhar a competição, muitos CTFs oferecem prêmios generosos, por meio de patrocínio e financiamento.
Consequentemente, os CTFs são benéficos para acadêmicos da segurança e pesquisadores que podem usar os dados de ataque e o tráfego de rede gerado durante as competições como estudos de caso para ajudar a prever, modelas e prevenir incidentes de segurança no mundo real.
Porém, entre tantos benefícios existe um malefício muito grande, sendo essa a possibilidade de mau uso das práticas de hackeamento adquiridas nas competições. Podendo haver pessoas mal intencionadas que pretendem utilizar os conhecimentos adquiridos no CFT para explorar vulnerabilidades e obter vantagens. “Essas pessoas são conhecidas como ‘black hat’, em oposição àquelas que buscam o conhecimento para aplicar a favor da segurança da informação, as ‘white hat’.”

## O jogo como instrumento educacional

A análise proativa de vulnerabilidade nos sistemas existentes ficam ausentes durante anos nos modernos currículos de segurança de computadores. Os alunos não aprendem como localizar e consertar design, configuração e falhas de aplicação em sistemas existentes, porém exercícios como o Capture The Flag (CTF) ensinam essas habilidades. Como tal, o CTF preenche um vazio crítico na educação sobre segurança da informação e, dessa forma, ocupa esse nicho, de forma natural, fornecendo um paralelo seguro para as experiências de crackers na natureza. As especificidades de um exercício podem levar a uma abordagem geral para o ensino dessas habilidades. Os departamentos de Segurança de Computadores podem participar do CTF com exercícios para ensinar um conjunto de habilidades importantes e, além disso, pesquisadores na área de educação podem usar o jogo como um assessor e base para entender como melhor transmitir essas habilidades.
O jogo serve como um exemplo do tipo de material que precisa ser incluído na educação sobre segurança da informação, por ser um esporte baseado em trabalho em equipe que é essencialmente um exercício de subversão controlada e sensível ao tempo do sistema (também conhecido como cracking). Além de um conjunto de objetivos artificiais que dão ao esporte uma vara de medir e um conjunto de limites que mantêm o esporte contido, os participantes têm uma extraordinária liberdade e essa liberdade motiva os alunos a experimentarem e obriga a aprimorar habilidades que não são, normalmente, aprendidas em uma grade de matérias padrão de segurança da informação. O CTF é um componente de um foco educacional atualmente ausente da educação institucional em Segurança da Informação. Uma das possíveis desvantagens do jogo é a quantidade de configuração necessária, por ser baseado no conceito de administrar os próprios serviços e subverter os outros. Um serviço é qualquer aplicativo que pode ser utilizado remotamente em uma rede, muitos serviços, por exemplo, fazem uso de um servidor comum de web, existe uma infinidade de serviços em potencial que podem ser usados.
Exercícios ao vivo, como competições, são um meio popular e divertido de envolver os alunos com tópicos de segurança cibernética. O foco desses eventos é, normalmente, para equipes para defender um host executando serviços vulneráveis enquanto simultaneamente atacam os hosts de outras equipes executando os mesmos serviços (CTFs no estilo ataque e defesa) ou para resolver desafios autônomos de várias categorias, como engenharia reversa, forense e segurança na Web, sem a necessidade de atacar diretamente outras equipes. Em ambos os casos, a exploração bem-sucedida de um serviço ou solução de um desafio revela uma bandeira ao vencedor, que marca pontos para a equipe quando submetida a um servidor de bandeira operado pelos organizadores da partida; o envio de bandeiras para desafios mais difíceis obtém um número maior de pontos para a equipe e a equipe que pontua o maior número de pontos ao longo da competição é declarado vencedor. Os benefícios pedagógicos das competições acadêmicas de CTF - a maior e com mais longa duração, a iCTF1, realiza-se anualmente desde 2002 - tem sido amplamente relatados. Entre as mais relatadas, estão o aumento da motivação dos alunos para aprender sobre segurança cibernética, o gozo e a satisfação de competir e o conhecimento prático aprimorado de aspectos da cibersegurança como resultado da participação, como citado anteriormente.
* Problemas na implementação no meio acadêmico
Um dos principais problemas para a concretização do CTF como forma educacional , em universidades e instituições de ensino, são problemas de estrutura e custo das estruturas. A infraestrutura para uma partida é tipicamente grande e complexa, principalmente para CTFs no estilo de ataque e defesa, são necessários sistemas de redes com uma grande banda larga, servidores e estruturas de hardware em geral para o bom funcionamento de uma partida ou aula. Ademais, as partidas envolvem inevitavelmente o ataque a serviços vulneráveis ​​disponíveis em uma rede. O corpo técnico das instituições hesitam em permitir que os estudantes trafeguem pela rede e que dados maliciosos possam passar pela rede de controle de segurança . Além disso, existe o risco de o tráfego de ataque dos alunos interferir em outros estudantes ou máquinas que não fazem parte da competição.
Outrossim, embora a natureza invertida de um estilo CTF se destaca em motivar e ensinar os alunos, assumir responsabilidades e aprender por conta própria não é uma coisa tão simples. Além disso, desenvolver, administrar e controlar um ambiente de CTF está repleto de desafios e os professores devem estar preparados para superar ou adaptar. Os maiores desafios do corpo docente são despesas gerais necessárias como controle da integridade acadêmica, extensibilidade e profundidade apropriada. O desenvolvimento de qualquer cyber competitivo, seja de natureza ofensiva ou defensiva, requer um design cuidadoso para provocar significantes impactos na aprendizagem e isso leva tempo e esforço no parte do instrutor. Desta vez, o compromisso é agravado pela natureza mutável do cyber ambiente e a constante necessidade de atualizar o curso e trabalhar com a tecnologias modernas. Para minimizar despesas gerais, instituições de ensino começaram a implementar um sistema desenvolvido externamente de estrutura para hospedar os desafios da CTF. Essa estrutura é essencial para o sucesso de cursos cibernéticos baseados em esforço individual, especificamente, facilita os alunos, fornecendo acesso fácil a problemas, dicas, pontuação e competição e integridade acadêmica.

## Técnicas mais utilizadas

* Return Oriented Programming
Essa técnica é um método de exploração de segurança que habilita o invasor executar código mesmo na presença de defesas de segurança, como proteção de espaço executável e assinatura de código. No Return oriented programming, o intruso adquire o controle da pilha de chamadas com o objetivo de sequestrar o fluxo de controle de programas e, após o roubo desse fluxo, introduz sequências de instruções do computador cautelosamente escolhidas que já estão presentes na memória da máquina, chamados de dispositivos. Geralmente, os ROP terminam em um instrução de retorno que estão alocadas em um sub-rotina no programa e/ou no código da biblioteca associada. Esses dispositivos habilitam que o invasor execute ações aleatórias em uma máquina com defesas que impossibilitam ataques mais simples.$^[$
* SQL Injection
É uma técnica na qual o usuário pode injetar comandos SQL em um procedimento SQL por meio de aplicações web ou locais. Tais comandos modificam o SQL original da aplicação e que tem como função processar uma requisição pré- estabelecida. o SQL injetado compromete drasticamente a segurança da aplicação seja web ou local. Dessa forma, o ataque de injeção de SQL (SQL Injection) baseia- se em introduções diretas de código no local de entrada de dados de serão adicionados com comandos SQL e a posteriori executados. Este tipo de mudança direta de comando SQL pode facilitar o acesso a dados escondidos, sobrescrever dados valiosos e até mesmo executar comandos de sistema perigosos no servidor. Exemplos de injeções de SQL são:
* Retrieving hidden data: Está relacionado à recuperação de dados, é usado para modificar uma consulta SQL para retornar resultados adicionais.
* Subvertendo a lógica do aplicativo: Onde você pode alterar uma consulta para interferir na lógica do aplicativo.
* Union attacks: Onde você pode recuperar dados de diferentes tabelas de banco de dados
* Examinando o banco de dados: Onde você pode extrair informações sobre a versão e a estrutura do banco de dados.
* Blind SQL Injection: Onde os resultados de uma consulta que você controla não são retornados nas respostas do aplicativo.

## Ferramentas

* Criptool
Essa ferramenta foi criada com o intuito de ser um aplicativo comercial para treinamentos de profissionais de segurança da informação. Porém, se tornou um projeto Open source com certa importância no campo da criptografia.
Os usuários do Cryptool podem ajustar, com seus próprios parâmetros, mais de 400 algoritmos. Sua interface, documentação, ferramentas analíticas e algoritmos inserem os usuários no mundo da criptografia. Esta aplicação contém a maioria da cifras clássicas, assim como a criptografia simétrica e assimétrica moderna, incluindo RSA, ECC, assinaturas digitais, criptografia híbrida, criptografia homomórfica e troca de chaves Diffie-Hellman. Métodos da área de criptografia quântica (como o protocolo de troca de chaves BB84) e da área de criptografia pós-quântica (como McEliece, WOTS, Merkle-Signature-Scheme, XMSS, XMSS_MT e SPHINCS) são implementados. Muitos métodos (por exemplo, código Huffman, AES, Keccak, MSS) são visualizados.$^[$
* Wireshark
O wireshark é o mais utilizado analisador de protocolos de rede. Ele permite o usuário saiba o que ocorre em um determinada rede em nível microscópico.
Por meio desse programa é possível controlar o tráfego de um rede e analisar a entrada e a saída de dados do computador, em diferente protocolos, ou da rede à qual o computador está conectado. Além disso, através desse dispositivo o usuário pode controlar o tráfego de um determinado dispositivo de rede em uma máquina que pode ter um ou mais desses dispositivos.$^[$
* John The Ripper
O John The Ripper é uma ferramenta de quebra de senha. Criada para o sistema operacional Unix, agora é possível ser utilizada em quinze diferentes plataformas. John The Ripper combina vários crackers de senha em um único pacote, e é capaz de detectar automaticamente tipos de hash de senhas e inclui um cracker personalizável, o que o torna um programas mais populares para quebra de senhas. Ele pode ser executado em vários formatos de senha criptografada, incluindo vários tipos de hash de senha de criptografia mais comumente encontrados em várias versões do Unix. Módulos adicionais ampliaram sua capacidade de incluir hashes de senha e senhas baseados em MD4 armazenados no LDAP, MySQL e outros.$^[$
* Binwalk
Esta é ferramenta possui o intuito de fazer buscas em arquivos de imagens (raw). O Binwalk foi criado para realizar análises e extrações de códigos e arquivos dentro de firmwares, mas também é utilizada para outras finalidades. O programa faz uso da biblioteca libmagic, desta forma é capaz de reconhecer os "Magic Numbers" no bloco de dados de um arquivo, possibilitando, assim, identificar os tipo dos arquivos escondidos em uma imagem.
"Números Mágicos" ou "Magic Numbers" é a expressão atribuída as constantes de um tipo de arquivo, definindo, deste modo, as assinaturas desses arquivos e criando, por fim, um padrão de identificação.
* Burp Suite
O burp suite é uma ferramenta gráfica e possui como objetivo fazer testes de segurança de aplicativos da web. Esta ferramenta foi criada pela PortSwigger Web Security. Possui três edições: a Community Edition, disponível para download gratuitamente, a Profissional Edition e a Interprise Edition. Ele pretende fornecer uma solução abrangente para verificações de segurança de aplicativos da web. Além da funcionalidade básica, como servidor proxy, scanner e intruso, a ferramenta também contém opções mais avançadas, como uma aranha, um repetidor, um decodificador, um comparador, um extensor e um sequenciador.$^[$
* GDB
Também conhecido como GNU Debugger, o GDB é um depurador capaz de fazer depuração em sistemas Unix e de suportar diversas linguagens de programação, como C, C++, Fortran, Objective-C, Pascal, Java e outras.$^[$
GDB e outros depuradores tem a função de supervisionar a execução de um determinado programa para que informações sobre seu funcionamento possam ser obtidas. Nessas ferramentas, Há algumas funcionalidades específicas que possibilita ir direto para uma linha determinada ou ainda mudar o valor de uma variável forçosamente e observar os resultados.
Assim, através dessa ferramenta, é o possível seu usuário saber o que está acontecendo dentro de outro programa enquanto ele é executado ou o que o mesmo programa estava fazendo quando caiu.

## Dificuldades em jogar

As qualidades que tornam os jogos facilmente reproduzíveis como, por exemplo, aqueles que são auto-descritivos, que possuem baixos requisitos de habilidade e são neutros em termos de idioma, geralmente não são encontradas em muitos CTF, significando que não é fácil "pegar e jogar" imediatamente uma partida. Outros jogos, como Dama e GoFish, possuem barreiras iniciais muito baixas e como resultado são populares em todo o mundo. Para um jogador de Damas não é necessário pesquisar o jogo e entender detalhes técnicos para ganhar uma partida, porém o mesmo não vale para CTF, onde o profundo conhecimento de tecnologia ajuda muito com a participação e o sucesso. Dessa forma, o CTF é mais parecido com o xadrez, onde, mesmo que as regras básicas sejam diretas, um indivíduo pode precisar de muitos anos de experiência para dominar bem.
Infelizmente, muitos CTFs não são projetados com o iniciante em mente, utilizando requisitos técnicos pesados que levam os iniciantes a ficarem presos rapidamente e, por fim, desistirem. Para um iniciante, o primeiro passo é frequentemente o mais difícil. Os movimentos que são naturais de um veterano nem sempre são facilmente compreensíveis ou acessíveis. Especificamente, os desafios de CTF freqüentemente giram em torno de habilidades complexas e altamente técnicas, como descompilação de código de bytes (DotNet CSAW CTF 2013), desmontadores de código de máquina (Impossible CSAW CTF 2013) e reversão de formato de arquivo (ArmorAll GitS 2014 Teaser); todos os tópicos técnicos são expressamente projetados para que até mesmo competidores qualificados fiquem fora da sua zona de conforto.

## Diferença entre CTF e hackathons

As competições CTF e hackathons reúnem equipes para usar suas habilidades de maneira orquestrada e com um limite de tempo. Contudo, aqui que as semelhanças terminam.
As competições CTF incentivam as equipes a se infiltrar nos sistemas de segurança e evitar as defesas. Essas infiltrações podem ser por meio de explorações conhecidas ou criadas pelos concorrentes para ganhar pontos. Logo, é um jogo.
Hackathon é um evento mais colaborativo que permite os desenvolvedores e programadores mostrarem seus talentos e criatividade, criando um aplicativo ou programa funcional dentro de um período de tempo proposto, seguindo critérios específicos. A competição pode estar relacionada à segurança, mas hackathon é um termo generalizado.