Summ3r 0f h4ck 2019: resultados da pesquisa


Hoje, compartilharemos os resultados do quarto programa de treinamento de verão Summ3r 0f h4ck em nossa empresa no departamento de pesquisa.


Nos últimos anos, os resultados podem ser encontrados aqui: 2016 , 2017 . O departamento de auditoria em um artigo separado aqui e um artigo conjunto para 2018 .


Então, vamos começar com números, fatos e outras informações interessantes.


  • 76 aplicações de toda a Rússia e países vizinhos
  • 10 candidatos selecionados
  • Os candidatos representaram cidades como Saratov, Kaliningrado, Rostov do Don, Moscou, Vladivostok, São Petersburgo e Krasnodar.
  • Universidades: SSU (com o nome de Chernyshevsky), BFU com o nome de I. Kant, Universidade Federal do Sul, HSE MIEM, Universidade Federal do Extremo Oriente (FEFU), Universidade Técnica do Estado de São Petersburgo, Universidade Técnica do Estado de São Petersburgo, Universidade Técnica Técnica de Moscou com o seu nome N.E. Bauman, Universidade Politécnica de São Petersburgo de Pedro, o Grande, Cruzada do Ministério de Assuntos Internos da Federação Russa.

Durante o período de treinamento de nosso departamento, de 15 de julho a 15 de agosto, foram realizadas palestras sobre tópicos como:


  • Introdução à pesquisa de vulnerabilidades em aplicativos binários e código fonte
  • Análise de segurança estática de grandes projetos de código aberto
  • Recuperação de informações simbólicas durante a engenharia reversa
  • Segurança de firmware (sobre o UEFI BIOS)
  • Apresentando a Ferramenta de Análise Binária Ghidra
  • Fases com KLEE, libfuzz, AFL
  • Introdução a ataques de terceiros à microarquitetura

Um dos alunos também deu uma palestra interna sobre o tópico “Visão geral da proteção usando a virtualização de código usando o exemplo do VMProtect”. Obrigado aos rapazes por perguntas interessantes, grande interesse em palestras. Separadamente, vale ressaltar que os alunos de ambos os departamentos podem assistir a palestras e participar do mini-CTF, que pode ser lido com mais detalhes em um artigo do departamento de auditoria .


Quanto aos tópicos deste ano, houve os seguintes:


  • Rastreador baseado em hardware do processador Intel
  • Plugin para Clang Analyzer
  • Empoderando Pigaios
  • Estrutura de pesquisa de segurança de firmware Uefi
  • Difusão de API baseada em estado
  • Ataques de canal lateral em microcontroladores
  • Uma estrutura para recuperar automaticamente nomes de funções
  • Adaptando o AFL Phaser para aplicativos de rede
  • Descompilando o eBPF em Ghidra

Vale a pena notar que, no processo de trabalhar em um tópico, o próprio tópico e sua direção às vezes evoluíram e modificaram por um motivo ou outro. Podemos dizer que todos os caras são ótimos e tentaram espremer o máximo por esse período bastante curto do programa. Embora o mais importante seja adquirir novos conhecimentos e experiências (e namoro).


É importante entender que nosso programa Summ3r 0f h4ck é um programa de treinamento, não um programa de estágio (embora, por uma questão de simplicidade, algumas pessoas o chamam assim). No processo, os caras, juntamente com os mentores, elaboram o tópico do projeto, ouvem palestras, resolvem diferentes laboratórios, recebem várias dicas sobre diferentes aspectos da segurança da informação e, é claro, respondem às suas perguntas.


Como sempre, recorremos às revisões não editáveis ​​de nossos alunos sobre o mês deles na empresa (que desejavam publicá-las).


As perguntas para a mini entrevista eram assim


  1. Por que você decidiu fazer um estágio na Digital Security? O que te atraiu para a empresa?
  2. Você gostou do estágio? O que foi especialmente memorável? Como a realidade coincidiu com suas expectativas?
  3. Conte-nos sobre sua tarefa / tarefas.
  4. As tarefas nas quais você trabalhou durante o estágio pareciam interessantes? Havia algo que você queria fazer, mas falhou?
  5. Você está pronto para retornar à empresa para um estágio ou trabalhar?

E aqui estão algumas das respostas dadas por alguns dos alunos


Novoseltseva Alyona



  1. A Digital Security é uma empresa líder na Rússia no campo da segurança da informação, com a maior e mais amigável equipe de reversores. Eu sempre quis entrar no ambiente de pessoas próximas a você em espírito. Existem profissionais reais aqui e muito a aprender com eles. Além disso, na minha região, não existem empresas e comunidades em geral que, pelo menos, se relacionassem com a engenharia reversa.
  2. Gostei muito do estágio. O mais surpreendente é a atmosfera em que a empresa opera. Caras particularmente atenciosos concordam comigo - nas mesas dos funcionários não havia um único pedaço de papel, exceto seu próprio caderno com pensamentos e idéias. Isso diz muito, e uma tremenda raridade em nosso mundo burocrático!
    Você recebe as melhores condições de trabalho - silêncio, conforto e, o mais importante - pessoas. A equipe e suas pesquisas são muito inspiradoras. Eu realmente gostei de trabalhar em um projeto em equipe com mentores - resolvemos problemas dia e noite, procuramos soluções juntos e nos alegramos quando algo funcionava. Não sinto tanta felicidade há muito tempo. Sasha, Kolya - eu me curvo para você.
  3. Meu trabalho de pesquisa foi o desenvolvimento no Sleigh de um sistema para traduzir um bytecode do eBPF em pCode para a possibilidade de desmontar e descompilar. Foi necessário desenvolver uma extensão para o Ghidra, que permitiria desmontar e decompor os programas eBPF. Eu tive que dominar a linguagem de especificação do processador Sleigh, entender os recursos da arquitetura eBPF e a interação dos programas eBPF com o kernel, ganhar experiência no desenvolvimento de extensões para o Ghidra e trabalhar com o Eclipse, e muito mais
    A tarefa foi concluída com sucesso! O projeto está disponível ao público e publicado no Github. O resultado pode ser testado por qualquer pessoa baixando o conjunto de extensão do repositório usando o link abaixo. Mais detalhes podem ser encontrados em um artigo separado.
  4. Sim, as tarefas eram complexas e interessantes, gostei muito do processo de desenvolvimento e do trabalho em equipe. Eu gostaria muito de estudar o tópico de análise automática de programas e a busca de vulnerabilidades binárias ainda mais profunda, interessante é a execução simbólica.
  5. Com muito prazer! Como a universidade ainda não estuda há vários anos, vou me preparar para o próximo estágio! Para trabalhar - certamente e provavelmente já teria

Link para o projeto


Bukovsky Victor



  1. Decidi fazer um estágio na Digital Security porque essa empresa era a organizadora da minha conferência de segurança da informação favorita - ZeroNight.


  2. O estágio afundou na alma. Tudo correu perfeitamente. Esse raro caso em que a realidade excedeu minhas expectativas. Lembrei-me especialmente de como, no último dia do estágio, eles fizeram um teste sobre o conhecimento da empresa e as habilidades psíquicas :), pela vitória em que recebi uma caixa de biscoitos e uma camiseta.


  3. Minha tarefa foi escrever plug-ins para o IDA PRO 7 usando a API Hex-Rays. A tarefa de um deles era exibir em uma tabela especial (Fig. 1) funções que continham funções que não eram seguras, a critério do pesquisador (a tautologia não podia ser contornada). O objetivo de outro, pode-se dizer, o plug-in principal desse estágio, era restaurar os nomes das funções dos arquivos executáveis ​​removidos (-s) usando informações de suporte. No meu caso, pegamos os nomes das funções dos parâmetros que foram passados ​​para as funções de registro (Fig. 2).



  4. As tarefas para mim foram absolutamente não triviais, o que apenas alimentou o interesse em sua implementação. Ironicamente, fui uma das poucas pessoas de sorte que teve a honra de trabalhar com três curadores. No início, foi Artem quem me apresentou a esse tópico, preparou o Bitbucket para armazenar o projeto, um quadro no Trello, com tarefas e objetivos iniciais, e também contou como trabalhar com a linguagem de marcação Markdown. Então Dmitry Evdokimov se tornou meu curador, que no passado recente já havia lidado com a restauração de nomes de funções, me levou aos pensamentos necessários e revelou mais profundamente o problema. Bem, Boris Ryutin, a pessoa que me entrevistou e graças a quem acabei neste estágio, tornou-se meu curador. Com ele, já recebi tarefas precisas com o objetivo de obter o resultado desejado. Tudo aconteceu em um ritmo muito vigoroso e tudo o que planejamos foi implementado, pelo qual muito obrigado novamente.


  5. Não tenho certeza sobre o estágio, pois me pareceu poucos meses nesta empresa. Quero ficar nele o maior tempo possível, então sim, estou pronto para voltar ao trabalho.



Link para o projeto: https://github.com/o0Starley0o/HexRaysPlugins


Queria permanecer anônimo


  1. ZeroNights / eram amigos
  2. Naturalmente, eu realmente gostei. As expectativas eram justificadas e ainda mais.
    A primeira coisa que vale a pena notar é o tópico com o qual lidei. Planejei ver algo que não poderia (não faria) em casa e, de fato, o tema correspondia perfeitamente a isso.
    Embora não possa dizer que dediquei muito tempo a ela, estou completamente satisfeito com o resultado e o conhecimento adquirido no processo (na verdade - pouco mais de uma semana e o principal resultado foi obtido =).
    Fico feliz que, por qualquer pergunta, uma pergunta sobre o tópico possa receber imediatamente uma resposta do mentor (e a resposta é "você quer tentar / aprender mais?").
    O segundo são muitas pessoas interessantes, não apenas dos funcionários, mas também dos estagiários, pelas quais podemos julgar o futuro da segurança da informação.
    Terceiros - pentesters fizeram uma seleção muito legal de máquinas com configurações / serviços vulneráveis ​​(de tarefas xss com bots, escalonamento de privilégios até captura sequencial de um administrador de domínio).
    Todos foram autorizados a jogar e foi muito divertido por mais 2 semanas. Aqueles que não lhe deram amor suficiente calcularam muito mal.
    Quarta - palestras, foi bom preencher as lacunas no conhecimento ou descobrir algo novo para você.
    Quase todas as palestras reversas foram muito sérias; os Pentesters distribuíram comida e tiveram tarefas interativas.
  3. A tarefa de remover a faixa de execução no modo SMM (anel-2). Você não pode ativar o rastreio no modo menos privilegiado; você precisa do código SMM para habilitá-lo. Naturalmente, ele não sabe como fazer isso.
    Eles fizeram um patch, o lançaram no SMM (para isso era necessário atualizar o UEFI) e, usando as ferramentas existentes (WinIPT), eles conseguiram registrar como o código é executado no SMM.
  4. Agora, existe um número tão grande de tecnologias que é impossível pegar e tentar tudo de uma vez. Você sempre precisa de um incentivo ou tarefa que o leve a olhar para algo novo.
    Então surge um desejo natural: "Posso usar essa tecnologia para minhas tarefas? Pode ser mais fácil / mais eficiente com ela?".
    Portanto, estou satisfeito com o meu tema.
    No entanto, valia a pena levar o projeto a pelo menos um fuzzer primitivo. Essa é uma daquelas coisas que não posso experimentar sem um estímulo externo.
  5. sem comentário

Khabarov Oleg


  1. Na minha opinião, na Rússia, as empresas que usam engenharia reversa em suas atividades profissionais são poucas, e as que a utilizam para encontrar vulnerabilidades, e não para análise de vírus, ainda menos são Segurança Digital e Tecnologias Positivas.
  2. O estágio ajudou a definir as diretrizes para onde ir, se você deseja ser um revendedor, em vez de um "especialista em segurança da informação" abstrato. Lembrei-me do que eram palestras relativamente simples sobre as palestras mais completas e emocionantes dos reversores.
  3. Minha tarefa era refinar a ferramenta de engenharia reversa de Pigaios. Seu objetivo é encontrar funções de biblioteca de código aberto em um binário compilado estaticamente por comparação. No entanto, não lidei com o mecanismo de comparação propriamente dito, mas com o refinamento dessa parte da funcionalidade que extraiu definições de estruturas, tipos, associações etc. das fontes. Como resultado, finalizei o analisador desses elementos e adicionei suporte a projetos criados usando o make. Decidi não integrar essas melhorias no Pigaios, mas criar uma ferramenta separada, porque é mais fácil desmontá-la separadamente do que cavar no código Pigaios.
  4. Não posso dizer que gostei da tarefa, mas isso ajudou a melhorar a compreensão do código C e, graças a essa tarefa, aprendi que você pode analisar o código C sem entender a teoria da engenharia de compilador, mas apenas usando libclang. Portanto, é improvável que eu modifique meu instrumento. Se alguém quiser, tentei escrever de maneira limpa e deixei comentários em todos os lugares.
    Graças às palestras dos reversores, percebi o que queria fazer, a saber, análise binária dinâmica (fuzzing, instrumentação).
  5. Ficarei feliz se, no futuro, conseguir um emprego na Digital Security, pois existem muitos profissionais em seu campo.

Link para o projeto: https://github.com/Barkhat26/decl-exporter


Zabelina Margarita


  1. Eu já havia concluído um estágio em outra empresa como funcionário do serviço de segurança da informação. Lá eu tive que lidar mais com questões de segurança na web. Mas na equipe do CTF, eu sempre resolvia tarefas inversas, geralmente por interesse que li sobre ataques binários. Tornou-se interessante para mim ver como funcionam os inversores, como vou lidar com esse trabalho. Além disso, foi interessante ver o DSEC por dentro.
  2. O estágio é bom. Acima de tudo, gostei das palestras. Porque quase todo o tempo que você está ocupado com o projeto, a oportunidade de se distrair e resolver pequenas tarefas, refresca muito a cabeça. Além disso, aprendi muitas coisas novas, em algum lugar consolidei conhecimentos antigos.
    Expectativas / realidade coincidiram bastante.
  3. Eu lidei com implementações de verificadores para o Clang Static Analyzer. A tarefa não é rocketsaines, mas as conquistas que posso aplicar para minha tese. Primeiro, tive que me familiarizar com a ferramenta, ver o que a biblioteca do clag pode fazer e aprender como coletar verificadores de teste simples. Decidiu-se ainda que eu adotaria a implementação do verificador para o detector de estouro inteiro. A idéia de tal verificador foi indicada na lista de possíveis verificadores de clang, achei que a coisa era útil e aceitável. Eu escolhi uma abordagem com análise AST e verificação de elenco. Mas essa solução determina apenas possíveis estouros. Para uma verificação precisa, você pode usar análise de contaminação e solucionadores de SMT. Não há ferramentas prontas para trabalhar com contaminação na lib; houve desenvolvimentos de outros pesquisadores, que tomei como base. Infelizmente, não consegui terminar minha tarefa em um mês, mas vou terminar o projeto como parte da tese.
  4. A própria idéia de que você perceberá o que mais tarde será aplicável e útil no trabalho real já está alimentando o interesse no projeto. Quero reescrever o verificador de contaminação para que mais tarde possa ser usado não apenas no meu projeto.
  5. A equipe DSEC é excelente, todos os especialistas são legais. Eu viria trabalhar. Mas eu não gostaria de fazer um estágio novamente, a orientação foi decepcionante na minha opinião. Como tínhamos apenas um mês, na hora certa, não recebi um feedback do mentor. E gastei muito tempo em escavação autopropelida, embora pudesse obter uma resposta de um mentor experiente. Apenas se não houver orientação, por que preciso de um estágio, posso cortar meu próprio projeto em casa.

Link para o projeto: https://github.com/dR3m/IntOverflow-CSA-plugin


Sankin Nikita


  1. A Segurança Digital atraiu tópicos de projetos e feedback de participantes de estágios anteriores, além de muitos artigos sobre Habré escritos por funcionários. Em geral, a partir de um post sobre Habré, também aprendi sobre o estágio. Havia também o desejo de mudar a situação, tendo completado um estágio em outra cidade e testado projetos que não realizo no meu trabalho principal.
  2. O estágio não foi como eu esperava, principalmente devido a um aluguel malsucedido do apartamento, o que me impediu de focar no projeto e fazer tudo dentro do prazo. Além disso, no início, era embaraçoso que a tarefa fosse mais sobre escrever código do que sobre pesquisa, mas aqui é provavelmente uma questão de incompatibilidade de expectativas e outros fatores pessoais.
  3. Precisávamos implementar a estrutura de teste de vulnerabilidade do firmware UEFI com base na solução de chipsec existente. O problema era que era difícil manter o código do chipsec, então você tinha que reescrever tudo lindamente no python 3.xe possivelmente adicionar algumas novas funcionalidades.
  4. Na tarefa, pareceu-me interessante não escrever código, mas estudar as tecnologias com as quais eu tinha que trabalhar. Eu queria terminar o projeto até o estágio HAL (camada de abstração de hardware) e estudar com mais detalhes a operação dos dispositivos de hardware e suas interfaces. Infelizmente, os motivos mencionados no parágrafo 2 impediram isso, mas pretendo continuar o projeto após o estágio.
  5. Estou pronto para voltar ao estágio para concluir e mostrar o projeto atual ou se surgir uma ideia interessante. Definitivamente, considerarei a empresa uma das primeiras empregadas em São Petersburgo, mas no momento não preciso disso.

Komarov Nikita


  1. Eu acompanho a Segurança Digital há algum tempo, e desde o primeiro momento em que ouvi falar da Zeronights, pensei que apenas uma empresa muito legal pode fazer isso. Não imediatamente, mas notei que estavam sendo realizados estágios, no entanto, a princípio eu não podia ir. No mesmo ano, vi acidentalmente que, no pôster publicitário, bem no centro, estava meu amigo desconhecido que chegara lá, e achava um ótimo sinal finalmente assistir a um estágio.
  2. Acabou sendo muito interessante e, o mais importante, o tempo estava constantemente cheio de algo. Lembro-me, é claro, dos relatórios e serviços com as caixas de ondas. Na verdade, eu não esperava que houvesse tantas coisas, todas as noites havia algo a fazer além do projeto principal, isso diluía bem a atmosfera e dava uma variedade de tarefas.
  3. Como parte do estágio, minha tarefa foi escrever a estrutura de teste de segurança da uefi. O tópico é interessante, especialmente considerando o fato de que, no quadro de atividades comuns, ainda não tive que me aprofundar tanto neste nível de abstração.
  4. As tarefas eram, é claro, interessantes, provavelmente pelo fato de eu ter que aprender muitas coisas novas ou ter sido esquecida por muito tempo como desnecessária. Infelizmente, houve coisas que não foram bem-sucedidas, mas agora há um incentivo para continuar trabalhando no projeto por um ano.
  5. Espero visitar o estágio no próximo ano. Muito obrigada.

Uvarov Kirill



  1. Eu li o blog da empresa em Habré. Portanto, essa primeira opção era onde você podia sentir a esfera por dentro
  2. Gostei do estágio. Gostei muito da atmosfera. Eu não tinha estado envolvido com segurança antes. Portanto, eu realmente queria tocar tudo sozinho "com as mãos".
  3. Envolvido em um ataque a canais de terceiros em microcontroladores. Implementação de algoritmos criptográficos, análise de energia e aquisição de chaves.
  4. A tarefa está muito próxima dos meus interesses, por isso lidei com o assunto com prazer.
  5. Graças ao estágio, eu sei onde me desenvolver, por isso estou definitivamente pronto para retornar à empresa :)

Palavra final


Durante o programa de verão, também houve circunstâncias de força maior, das quais ninguém está seguro, mas todos os alunos reagiram a isso com compreensão (pelos quais agradecem), e nós o usamos a lápis para minimizar isso no futuro.


Aguarde o anúncio do Summ3r 0f h4ck 2020 no próximo ano!


PS Mais tarde, em vários projetos de homens, publicaremos seus artigos técnicos separados.

Source: https://habr.com/ru/post/pt466465/


All Articles