30 de novembro - 1 de dezembro passou a fase de qualificação do torneio CTFZone , que registrou 1043 equipes de todo o mundo. Segundo nossos dados, os problemas foram resolvidos mesmo no Zimbábue (26 IPs únicos). Indo mais fundo, era uma equipe universitária da cidade de Bulawayo.
Este ano, a CTFZone se tornou a fase de qualificação do DEF CON CTF , portanto a equipe que vencer a final (que será realizada no OFFZONE de 16 a 17 de abril de 2020) irá para o torneio em Las Vegas. Para que os sortudos tivessem tempo para obter vistos, as datas da conferência foram transferidas para uma data anterior.
DEF CON CTF é a competição de segurança mais antiga e mais respeitada de muitas equipes. Os vencedores não recebem um ramo de palmeira, mas mesmo sem ele tudo está indo bem. Agora, no mundo, existem apenas 6 torneios nos quais você pode se qualificar para o DEF CON CTF.
Geografia dos participantes CTFZoneSobre o conceito
No movimento internacional CTF, aconteceu que equipes de diferentes regiões se especializaram em determinadas áreas. Por exemplo, historicamente, os russos são melhores em resolver a web, enquanto as equipes asiáticas e americanas são mais fortes na PWN. No mesmo DEF CON, quase todas as tarefas são binárias. Talvez seja por isso que recentemente as equipes americanas e asiáticas tenham se saído melhor lá. Na CTFZone, estamos tentando mostrar que o CTF não é apenas o PWN, mas também muitas outras categorias interessantes: web, criptografia, reverse, OSINT, forense, PPC.
Web
Em tarefas baseadas na Web, os autores - especialistas em testes de penetração durante o horário de trabalho - tentaram transferir vulnerabilidades de projetos do mundo real. Por exemplo, na tarefa Web-Shop , usamos a popular biblioteca python-markdown2, onde nosso especialista, algumas semanas antes da competição, encontrou uma vulnerabilidade de dia zero para ignorar o filtro XSS. Durante a CTF, no entanto, cada uma das quatro equipes decisoras encontrou sua própria versão dessa vulnerabilidade, o que nos faz pensar na qualidade da filtragem na biblioteca.
Para o trabalho de cartão da Web , usamos a vulnerabilidade de dia zero na classe de validação Java XML padrão. Foi descoberto ao testar um firewall de aplicativos Web real, por isso convidamos os participantes a contornar o WAF, que desenvolvemos especificamente para a tarefa. A versão detalhada do wrightup será posterior.
Bem, a tarefa EmeraldRush mostrou como o GitLab e o Github se tornaram no ano passado - as vulnerabilidades associadas ao Ruby, nas quais eles são escritos. Um deles é baseado no CVE-2018-18649 (no entanto, não existe exploração de acesso aberto); o segundo foi recentemente descoberto e publicado na plataforma HackerOne (para obter uma descrição, consulte o artigo ). Obviamente, os desenvolvedores foram notificados dessas e de todas as outras vulnerabilidades da web antes da competição, de acordo com os princípios de Divulgação Responsável.
Crypto
Por sua vez, a equipe de desenvolvimento do cryptotask tomou como base não apenas os erros constantemente encontrados no CTF relacionados à implementação do RSA, mas também os ataques sensacionais dos últimos anos. Por exemplo, a tarefa OCB2 teve que lidar com um ataque ao sistema de criptografia simétrica com o mesmo nome, cuja descoberta na conferência Crypto eles deram o Best Paper Award.
E na tarefa NTRU , era necessário estudar o ataque em um sistema de treliça assimétrico. Ela foi descrita em setembro, mas não foi suficiente encontrar e ler o artigo correspondente. O próprio autor do problema se deparou com problemas quando descobriu que a publicação adotou o caso mais conveniente para descrição, que não funcionou com os parâmetros selecionados na tarefa final. Eu tive que refazer o algoritmo! É interessante que um dos participantes (Alexey Udovenko, da equipe de LC / BC) resolveu o problema sem um artigo, tendo apresentado um método de solução ligeiramente diferente, baseado no mesmo princípio.
Forense
Bem, a categoria mais complicada em nosso CTF foi forense. Todo mundo está acostumado a pensar que essas tarefas são resolvidas usando três utilitários: primeiro, volatilidade e seqüências de caracteres. Mas tínhamos tarefas diferentes - por exemplo, uma tarefa In-The-Shadows incomum, cuja solução era necessária para lidar com a técnica descrita aqui . Os detalhes também serão divulgados no comitê distrital posteriormente.
Sobre o treinamento
A preparação direta para as qualificações da CTFZone consistiu em várias etapas principais (reunir uma equipe de projeto, desenvolver tarefas, testar e implantar infraestrutura, lançar um foguete no espaço) e muitas auxiliares (buscar inspiração, estabelecer comunicação, atormentar e duvidar, depressão, superar a crise existencial).
Três meses antes do início da assembléia geral, as datas foram escolhidas - 7 e 8 de dezembro. A equipe chegou à conclusão de que nada teria tempo, mas continuava trabalhando. E sete dias depois, esses prazos irreais foram alterados uma semana antes, uma vez que as datas selecionadas e todas as seguintes já haviam recebido outros CTFs. Tudo o que restava era sorrir, cerrar os dentes e trabalhar com energia triplicada. Não havia como voltar atrás: desenvolvimento do startanul.

Como resultado, a tarefa foi mais do que o habitual - 30 peças. Cada tarefa é única, mas não dura muito: 3 meses de preparação e apenas 36 horas de voo. Mas o que! Os botões que você pintou cuidadosamente no front-end serão tocados pelos principais CTFers do mundo - eles mergulharão na sua ideia e fornecerão um feedback pessoal. Esta é uma ótima experiência e uma oportunidade de falar sobre seu trabalho com uma grande comunidade. Afinal, geralmente com as vulnerabilidades que estão nas tarefas, algum tipo de história está conectada. Algumas tarefas eram tão difíceis que ninguém conseguia descobri-las. Ao final da qualificação dos problemas não resolvidos, dois permaneciam: Popular Forense e Web-Card .
Sobre infraestrutura
A organização da infraestrutura do torneio poderia ser abordada de diferentes maneiras. Por exemplo, à moda antiga, corte máquinas virtuais para desenvolvedores de tarefas e dê acesso a elas. Nessa situação, cada desenvolvedor se torna um administrador satisfeito do host local, tudo funciona como ele deseja e resta apenas fornecer conectividade de rede. É claro, no entanto, que não se fala em nenhuma replicação e tolerância a falhas nesse caso. O responsável por nossa infraestrutura acabou de falhar em um dos CTFs da ZeroNights em 2016 e, desta vez, ministrado por uma experiência amarga, decidiu fazer as coisas de maneira diferente.
Decidimos por muito tempo onde moraríamos e, no final, decidimos dar a volta na nuvem. As razões são claras: competições para hackers, por isso é melhor quebrar o Google, e já havia desenvolvimentos prontos no zashnik. A principal ferramenta para criar a plataforma foi o Terraform, que permite descrever a infraestrutura na forma de código em um formato declarativo e cuida de todos os outros gestos. Ou seja, por exemplo, você não precisa pensar em como acessar a API do Google e dizer a ele quantas e quais máquinas virtuais você deseja implantar.
Também foi necessário decidir como iniciar tarefas. Tivemos muita sorte por todos os desenvolvedores já conseguirem escrever tarefas no Docker. Esse é um contêiner de hype que permite empacotar um serviço com todas as dependências em um ambiente isolado que não muda entre as reinicializações. Não há muitas maneiras de trabalhar com o Docker: são principalmente orquestradores como o Compose e o k8s. Para tornar tudo bonito, ou seja, implementar o Wishlist com balanceamento, réplicas, tolerância a falhas e outras empresas, a escolha da orquestra era óbvia - Kubernetes.

Aqui, no entanto, houve algum mal-entendido entre o criador da infraestrutura e os desenvolvedores. Os pentesters são uma casta especial do mundo de TI: eles são em parte como administradores, redes e sabem como fazer banco de dados, e são orientados em programação. Em geral, não pessoas, mas facas suíças. Eles são extremamente extraordinários e ambiciosos, mas, infelizmente, quando foi decidido escrever Helm para cada tarefa, esqueci de alguma forma que os pentesters ainda não são administradores profissionais. Isso levou a uma pequena guerra, durante a qual foi necessário explicar por que certas decisões são tomadas à força e são impostas restrições.
Os caras não tinham experiência em escrever Helm, mas todos sabiam escrever Compose. Você mesmo entende que entre o Compose local e o Helm-chart há uma lacuna em algumas semanas ou até meses de estudo do material. Este foi o primeiro sinal que indicou que havia alguns problemas (onde a CTF estaria sem eles, especialmente quando a equipe e o administrador são novos quase sempre).
Devido à falta de tempo, não foi possível automatizar tudo - algumas coisas tiveram que ser repassadas aos ombros dos próprios desenvolvedores. Os pentesters tiveram que se sentar em reuniões, onde lhes foi dito como escrever elmos, enquanto eles próprios, aparentemente, amaldiçoavam esse desvio do que é a luz. Mas, apesar de tudo, conseguimos - todas as tarefas foram descritas e empacotadas nos gráficos Helm, o monitoramento foi configurado na forma de Grafana e Prometheus. O momento da verdade chegou.
E aqui, para alívio de todos, descobriu-se que a infraestrutura resultante é muito fácil de gerenciar. Quando tudo foi descrito e implantado no Google, realizamos um briefing para quem estava de plantão. Havia dez deles e todos fizeram um ótimo trabalho: levantaram os caídos, coletaram e lançaram a versão corrigida em um cubo.
Sobre os finalistas
Como resultado, equipes de 10 estrelas foram selecionadas para as finais. Por que estelar? O fato é que 6 em cada 10 equipes estão nos dez melhores campeonatos mundiais no CTFtime, e as quatro restantes estão um pouco atrás dos dez primeiros, mas também no topo.
A principal característica do torneio foi que a luta mais feroz não foi por um lugar entre os três primeiros, mas pela décima linha. Era importante que os participantes chegassem às finais, e a situação é redefinida, e a distribuição de vagas que temos com base nos resultados das competições classificatórias pode mudar bastante.
CTFZone 2019 Quals Finalistas Classificação FinalO que vem a seguir?
Além disso, será possível expirar um pouco, depois respirar fundo novamente e iniciar os preparativos para a final. Será realizado no formato Ataque / Defesa, e essa é uma história completamente diferente. Alguém pode perguntar: por que isso é tudo? A pergunta é boa, mas provavelmente não há resposta lógica para ela. É que, se pelo menos por 5 segundos, você pode realmente se destacar no que está acontecendo, sentir-se vivo e ver de qual time você faz parte, não é em vão!