Introdução
Meu nome é Hélvio Junior, também conhecido como M4v3r1ck. Para quem me conhece, sabe da minha paixão estudo sobre low level exploitation, envolvendo buffer overflow, process injection e etc…
Durante todo este processo uma coisa que sempre busquei foi encontrar no mercado certificações sobre este assunto. Até pouco tempo atrás tínhamos somente uma certificação, a antiga OSCE (descontinuada em outubro de 2020), mas hoje em temos algumas outras opções de certificação como a OSED (Offensive Security Exploit Developer) e eCXD (eLearnSecurity Certified eXploit Developer), bem como a OSEE (Offensive Security Exploitation Expert).
O objetivo deste artigo é realizar um breve review sobre as certificações eCXD e OSED, bem como realizar um comparativo entre elas contendo conteúdos e passos para uma correta preparação para ambas. Adicionalmente comentar sobre a minha experiência na realização delas.
OSCE para OSCE3
Antes de entrar no assunto propriamente dito deste artigo vamos comentar um pouco do histórico da antiga OSCE e da nova OSCE3.
A antiga OSCE, teve seu processo de venda encerrado em 15 de outubro de 2020, de forma que quem comprou até esta data teve mais um prazo para a realização dela, sendo assim até esses dias tenho visto algumas pessoas postando nas redes sociais o sucesso na realização dela.
Esta versão da OSCE, quando foi criada pela Offensive Security, englobou 3 grandes assuntos: 1 - exploração Web com code review; 2 - exploração com buffer overflow; 3 - bypass de defesas. Porém com o passar dos anos e a evolução da tecnologia a certificação se tornou defasada de forma que a Offensive Security decidiu dividi-la em 3 outras certificações mantendo cada um com o foco principal da antiga:
- OSWE (Offensive Security Web Expert): Foco em exploração web com análise do código fonte;
- OSED (Offensive Security Exploit Developer): Foco em exploração com buffer overflow;
- OSEP (Offensive Security Experienced Penetration Tester): Foco em bypass de defesas.
Desta forma uma vez que o profissional obtém essas 3 certificações ele automaticamente recebe o título de OSCE3.
Apesar dessa estratégia ter tornado bem mais caro o processo de obtenção da OSCE3, a meu ver, tecnicamente dizendo, ficou muito interessante pois cada uma dessas áreas pode ser explorada de uma forma mais abrangente e profunda levando o aluno a um melhor entendimento e conhecimento.
Adicionalmente a essa mudança pude perceber um aumento considerável de qualidade do material impresso (PDF) e vídeo dos treinamentos da Offsec, explicando coisas que antigamente seriam deixadas no ar pela filosofia Try Harder.
Vou agora, comentar brevemente sobre a minha experiência em cada uma das 3 certificações de exploits (OSCE, eCXD e OSED), posteriormente farei uma comparação entre as 3 certificações e por fim uma lista de conteúdos para estudo das duas certificações (eCXD e OSED).
OSCE
Como comentei anteriormente, essa certificação já teve a sua venda descontinuada sendo assim não entrarei em muitos detalhes, somente mantive ela aqui para fins de conhecimento.
Eu realizei a OSCE em 18 de fevereiro de 2019, iniciei a mesma por volta de 17:00, como sabemos essa certificação era composta de 4 desafios, por volta de 4h da manhã do dia seguinte eu já tinha adquirido a pontuação necessária para a passar na prova, mesmo faltando a resolução de um dos desafios, sendo assim parei para dormir e quando acordei por volta de umas 9h da manhã e iniciei a escrita do relatório. Por volta de 19h (pouco mais de 24 horas de exame) eu finalizei a escrita do relatório, então retomei a execução do último desafio, após mais umas 6 horas finalizei o último desafio e segui para a finalização do relatório e envio do mesmo, sendo assim finalizando a prova mesmo antes das 47h45m previstas.
No dia 22 de fevereiro recebi a resposta de aprovação deste exame.
Pouco tempo depois deste processo elaborei um treinamento focado nesta certificação cobrindo todo o necessário para o estudo a aprovação dela. Atualmente o treinamento está disponível em formato gravado on-line em: https://sec4us.com.br/treinamentos/desenvolvimento-de-exploits-32-bits-extended/
Principais conteúdos da OSCE:
- Buffer Overflow clássico Windows
- Buffer Overflow SEH Windows
- Buffer Overflow com Egghunter
- Criação de exploit Zeroday (0 day)
- Criação de um encoder personalizado
- Bypass de antivírus
- Criação de um backdoor
- Explorações Web (RCE, LFI e Cookie Injection)
Note que na antiga OSCE, toda a parte de Buffer Overflow ocorre em ambiente Windows 32 bits e sem proteções (ASLR, DEP e etc…)
eCXD (eLearnSecurity Certified eXploit Developer)
https://elearnsecurity.com/product/ecxd-certification/
A eCXD é uma certificação disponível até os dias atuais, e ao meu ponto de vista, uma certificação muito interessante, atualizada e multi-plataforma, pois ela abrange Windows e Linux ambos em 32 e 64 bits e diversas proteções como ASLR, DEP, canary e etc…
Como o modelo de negócio da eLearSecurity permite somente a compra do voucher de certificação sem a compra do curso, eu decidi fazê-la sem o curso mesmo, peguei qual era o seu conteúdo programático e mandei ver nos estudos.
A eCXD é uma prova com 7 dias de duração e sem proctoring, outra coisa muito legal da eLearnSecurity é que o primeiro retake é sem custo, então naturalmente você vai para a prova mais tranquilo sem a pressão financeira de ter que passar se não vai gastar uma grana para fazer o retake.
Iniciei a prova no dia 18 de agosto de 2020 e enviei o meu relatório no dia 24 de agosto, já o tempo de espera de resposta, este sim é um ponto bem negativo da eLeanSecurity, pois eles pedem 30 dias úteis para a análise do relatório, e como todo bom ansioso esperar este tempo é um martírio. Para minha sanidade mental, não demoraram tudo isso e no dia 06 de setembro de 2020 eles responderam com sucesso na prova.
Tanto o conteúdo, quanto a prova é muito legal de fazer, com diversas pegadinhas exigindo um profundo conhecimento de exploração e criação de Shellcoding. Quanto a ferramental, não há muitas restrições, de forma que pode ser utilizado ferramentas como ropper, Immunity debbuger, mona.py e etc… Mas nem por isso a prova fica trivial, de forma que ela exige um bom conhecimento de exploração 32 e 64 bits, Windows e Linux, com a criação de cadeia ROP manual, bem como a criação de Shellcoding do zero.
Principais conteúdos da eCXD:
- Conhecimento de Windows e Linux Internals
- Conhecimento básico de engenharia reversa 32 e 64 bits
- Utilização de softwares de debbug. Porém, não há exigência e limitação de um software específico, de forma que pode ser utilizado o de preferência.
- Criação de exploits em ambientes Windows e Linux, utilizando scripts Python. Pode-se utilizar bibliotecas como a pwnlib.
- Bypass de proteções como ASLR/PIE, Stack Cookie, NX/DEP, RELRO etc.
Muitas pessoas tentam realizá-la sem tem um bom domínio da criação de Shellcoding do zero, bem como sem um bom domínio de chamadas de API de sistema operacional (Windows e Linux) em suas diversas técnicas e variantes. Impactando no sucesso da criação do Shellcoding propriamente dito e dos ROPs. Não espere encontrar na internet respostas simples e rápidas de como contornar os desafios propostos pela prova.
Desta forma se posso dar uma dica, é: Não negligencie o estudo de Assembly para a criação de Shellcoding, ele é extremamente importante para o sucesso nesta certificação. Isso está descrito de forma muito clara nos pré-requisitos da certificação.
OSED (Offensive Security Exploit Developer)
https://www.offensive-security.com/exp301-osed/
Vamos então, para a mais nova certificação lançada pela Offensive Security (até o momento da escrita deste post). Diga-se de passagem, uma das provas mais desafiadoras e desgastantes que eu já fiz em minha vida!
O modelo de negócio da Offensive Security exige que para realizar a prova você tenha que fazer o curso deles, o que deixa a certificação mais cara, começando em 1299,00 Dólares americanos. Sem direito a retake free, de forma que se reprovar vai ter que desembolsar 249 dólares para cada tentativa.
Esta é uma prova de 47h45m com mais 24 horas para envio de relatório, durante as 47h45m de prova você tem acesso a um ambiente de VPN, o painel administrativo, as máquinas dos desafios e a máquina para desenvolvimento dos exploits e debug.
A prova é com proctoring, isso significa que durante todo este período de acesso a VPN você tem o(s) seu(s) monitor(s) monitorado(s) bem como sua câmera aberta o tempo todo. O proctoring em si é bem tranquilo, pois você pode consultar o que desejar, internet, livros, o próprio material da offsec. Só não pode consultar os universitários e/ou utilizar as ferramentas restritas. Desta forma é muito importante a leitura prévia do guia da prova, até mesmo antes de iniciar os estudos, para que você possa se acostumar as ferramentas permitidas na prova.
Vamos então a realização da minha prova, eu iniciei a prova no dia 07 de setembro das 2021 às 13h. A prova é desenhada de forma que após a conclusão de um número X de exercícios você adquire a pontuação mínima (60 de 100 pontos), sendo assim você tem a opção de finalizar por aí ou de continuar para realizar o restante da prova.
Com +- 14 horas de realização da prova eu havia obtido essa pontuação mínima, mas como ainda tinha muito tempo de prova e com medo de ficar no limite e não ser aprovado por qualquer deslize, decidi continuar. Mas antes de continuar resolvi descansar um pouco e dormi umas 6 horas.
Após retomar ainda me restavam +- 28 horas de prova, dessas eu gastei pelo menos 24 para a resolução do restante da prova. Após uma fina checagem de todos os requisitos dos desafios e me certificando ter cumprido todos os requisitos iniciei a escrita do relatório +- 1h antes de finalizar o meu período de prova, então logo em seguida finalizou meu período da prova, sendo assim a VPN foi encerrada bem como o monitoramento do proctoring.
Das 25 horas que tive de escrita do relatório eu gastei pelo menos 23 o escrevendo, relatório este que finalizou com 293 página. Este foi de longe o maior relatório que já realizei (em certificações) e o mais complexo, devido a necessidade de explicação dos detalhes para levar o meu leitor a compreender a linha de raciocínio. Finalizei em entreguei o relatório no limite do prazo e sem escrever da forma que eu desejava diversos detalhes.
Após 4 logos dias de espera, no dia 14 de setembro de 2021 recebi o tão esperado e-mail de resposta informando a aprovação na prova. Desta forma me tornei, se não o primeiro, um dos primeiros Brasileiros residentes no Brasil a obter OSED.
Antes de partir para os principais conteúdos dessa certificação, gostaria de comentar os pontos que senti falta. Eu senti falta do estudo de alguns itens como exploit 64 bits, uma vez que só é estudado e cobrado exploits 32 bits, bem como a exploração em ambientes Linux, pois a Offsec conhecidamente só aborda exploração em ambientes Windows. Porém a OSED aborda de uma forma muito legal e profunda a exploração em 32 bits com bypass de diversas mitigações como (ASLR, DEP e etc…)
Principais conteúdos da OSED:
- Conhecimento de Windows Internals
- Arquitetura x86 (32 bits)
- Conhecimento de intermediários a avançados de engenharia reversa 32 bits
- Utilização de softwares de debbug, limitado ao WinDbg.
- Criação de exploits em ambientes Windows, utilizando scripts Python.
- Criação de Shellcoding utilizando a biblioteca Python keystone-engine
- Bypass de proteções como ASLR, DEP e CFG.
- Exploração de overflow em cadeia SEH.
- Utilização do IDA PRO, limitado em sua versão gratuita.
Alguns cuidados com a OSED
Para a realização da prova você fica restrito a utilização do WinDbg, eu até questionei se pode ser utilizado a versão preview do WinDbg (que é uma versão muito melhorada dele), a resposta foi que sim, eu poderia, mas por conta e risco, pois se tivesse qualquer problema não me dariam suporte, bem como era de minha responsabilidade entender se havia alguma funcionalidade ou software que se encaixaria na classificação de softwares proibidos, então por que arriscar? Decidi utilizar a versão clássica mesmo.
Outro detalhe importante é que em alguns dos desafios você é terminantemente proibido de copiar o executável para a sua máquina, sendo assim todo o processo de exploração e debug precisa ocorrer na máquina de debug da Offsec, e eles são muito claros em informar que a máquina final das explorações pode conter sistema operação diferente, então somente utilize e confie na própria aplicação explorada.
Assim como na eCXD, na OSED é cobrado de forma intensa a criação de Shellcoding do zero, bem como um bom domínio de chamadas de API de sistema operacional Windows em suas diversas técnicas e variantes. Seja elas de forma direta, em um código assembly, ou, via ROP. Desta forma não se aventure a realizar a prova se não estiver bem confiante neste assunto.
eCXD versus OSED
Muitas pessoas me fazem esta pergunta, qual eu devo fazer? eCXD ou OSED? A meu ver as provas são complementares uma vez que a eCXD aborda também 64 bits e ambientes Linux (que não são abordados na OSED), porém a OSED aborda de forma mais profunda a engenharia reversa de aplicações para identificação e exploração de vulnerabilidades.
Sendo assim recomendo a realização das duas, começando pela eCXD em virtude de uma série de fatores, sejam técnicos, sejam psicológicos, uma vez que a prova tem maior duração (7 dias) e com direito ao primeiro retake sem custo, não tem proctoring e sem contar que é mais barata.
Indicação de treinamentos
Nós da Sec4US temos uma linha completa de treinamento para dar base a realização destas duas certificações:
- Shellcoding para Desenvolvimento de Exploits, https://sec4us.com.br/treinamentos/shellcoding-para-desenvolvimento-de-exploits/, treinamento ao-vivo, sobre a criação (do zero) de Shellcoding para Windows e Linux, 32 e 64 bits. A meu ver se você tiver que escolher apenas um treinamento (além do oficial) para realizar, este é o treinamento a ser escolhido. Nele vamos do zero, ou seja, de quem nunca desenvolveu em Assembly, até a criação de shell reverso Windows e Linux, entendendo diversos conceitos de Windows e Linux internals dando base para a criação de qualquer shellcode desejado.
- Desenvolvimento de Exploits - 32 bits, https://sec4us.com.br/treinamentos/desenvolvimento-de-exploits-32-bits/, treinamento ao-vivo que cobre toda a parte de exploração em 32 bits Windows e Linux (sem proteções de memória como ASLR e DEP)
- Desenvolvimento de Exploits - 32 bits extended, https://sec4us.com.br/treinamentos/desenvolvimento-de-exploits-32-bits-extended/, treinamento gravado (disponibilizado em formato MP4 para download), com suporte e laboratório remoto, que cobre toda a parte de exploração em 32 bits Windows e Linux (sem proteções de memória como ASLR e DEP), esta é uma versão estendida do treinamento acima, abordando de forma mais profunda alguns dos conhecimentos, bem como com uma introdução a criação de Shellcoding.
Mas Hélvio não vi na listagem um treinamento que aborde buffer overflow em 64 bits e nem um que aborde bypass das mitigações (ASLR, DEP, Canary e etc…) A Sec4US não tem? Sendo objetivo e claro, não! Atualmente não temos um treinamento com este conteúdo, mas pretendemos lançar para o próximo ano (provavelmente no primeiro semestre) um treinamento que aborde este conteúdo fechando, desta forma, um pacote de treinamentos preparatórios para estas certificações.
Deseja conhecer melhor nosso trabalho, bem como ver alguns de nossos conteúdos relacionados a este tema, segue uma lista artigos e mini-treinamentos e palestras que realizamos:
- Criação de Exploits – Parte 0 – Um pouco de teoria
- Criação de Exploits – Parte 1 – Como realizar um Stack buffer overflow?
- Buffer Overflow Linux – Melhorando o GDB
- Shellcoding – Encontrando endereço da função dinamicamente. Análise da biblioteca block_api
- [Youtube] Como realizar um Buffer Overflow? Uma introdução ao assunto
- [Youtube] Entendendo o Buffer Overflow
- [Youtube] Buffer Overflow - Conceitos e Exploração
- [Youtube] Buffer Overflow - Explorando a vulnerabilidade Sudo CVE-2019-18634
- [Youtube] Badchars - Conceitos e como encontrar
- [Youtube] Treinamento Shellcoding 64 bits
- [Youtube] Bypass de proteção de execução (NX/DEP) durante um exploit de Buffer Overflow com ROP
- [Youtube] Printable ASCII Shellcode
Espero que tenham curtido e tenha esclarecido os detalhes e dúvidas sobre essas certificações. Ainda persistiu alguma dúvida? Fique a vontade para me contatar diretamente no telegram @helviojunior.