Opiniões
Uma resenha do OffSec Exploitation Expert (OSEE): uma jornada inesperada


VP of Hacking
Updated
8 min
Em 22 de agosto de 2023, recebi este e-mail informando que eu tinha sido aprovado no exame OSEE:

Esse e-mail foi a culminação de anos de estudo, trabalho duro e superação dos meus limites além do que eu poderia imaginar.
O caminho até esse e-mail começou quando obtive a certificação OSCE em 2020. Na época, eu já tinha comprado uma vaga no treinamento Advanced Windows Exploitation (AWE) em Londres e tive dois anos de tentativas frustradas de viajar por causa da quarentena mundial pela COVID, das restrições de visto do Reino Unido e do falecimento da rainha.
Vou começar este post com um resumo do que é a certificação OSEE. Depois, vou entrar nos detalhes do treinamento e oferecer algumas percepções e dicas para o exame.
OffSec Exploitation Expert (OSEE)
O OSEE é uma certificação da OffSec que você obtém depois de concluir o curso "EXP-401: Advanced Windows Exploitation (AWE)" e passar em um exame de 72 horas, exaustivo e difícil.
Conheço pessoas que têm o certificado desde 2009, mas o curso recebeu várias atualizações desde sua criação, incluindo exploits para o Adobe Flash Player e para o Windows Kernel em suas versões mais recentes.
A atualização mais recente, até aquele momento, foi anunciada no canal privado para certificados OSEE no servidor do OffSec no Discord, em 18 de setembro de 2021, por Morten Schenk, um dos instrutores do AWE.

Cito o que ele disse durante meu treinamento: "Precisamos atualizar este curso constantemente; caso contrário, o conteúdo não seria avançado o suficiente."
Essa frase resume o que é o AWE: o treinamento de exploração do Windows mais avançado, difícil e insano do mercado.
O preço do curso pode variar de acordo com o local. Por exemplo, na BlackHat Middle East and Africa, o preço foi de US$ 12.375:

Já em Londres, o preço foi de £9.435 + IVA:

Rumo a Londres
Uma das principais características do curso AWE é que você precisa participar presencialmente.
Normalmente, o AWE é ministrado na BlackHat USA, em Las Vegas. No entanto, foi em 2020 que terminei a certificação OSCE, e a BlackHat USA seria 100% virtual por causa da pandemia de COVID-19. Então dei uma olhada no site da OffSec e descobri que haveria um treinamento em Londres em abril de 2021. Fiz minha inscrição, mas, como era de se esperar, ela foi remarcada várias vezes por causa da pandemia. Depois de várias tentativas e de um visto do Reino Unido atrasado, consegui viajar em setembro de 2022 para fazer o curso nas instalações da QA (parceira da OffSec) em Londres.

O curso foi planejado para ser ministrado em cinco dias. No entanto, a segunda-feira em que deveria começar era feriado no Reino Unido por causa do funeral da rainha Elizabeth II. Isso resultou em quatro dias intensos de treinamento de derreter o cérebro.
Pré-requisitos do curso
Como em todas as certificações da OffSec, você não precisa de um diploma específico para tentar fazer qualquer um dos cursos. No entanto, como o AWE é um treinamento avançado, eles sugerem que você tenha o seguinte:
Experiência em realizar análise dinâmica de binários com o WinDbg e análise estática com o IDA free.
Experiência prática em exploração básica. Você deve, no mínimo, já ter escrito exploits antes.
Conhecimento básico da arquitetura Windows x86_64 e da criação de shellcode x64.
Familiaridade com a programação em C/C++ e o uso do Visual Studio.
Eles também sugerem levar um notebook com um processador moderno, pelo menos 16 GB de RAM e 160 GB de espaço livre em disco. No entanto, quando cheguei à sala de aula, cada estudante tinha seu próprio computador de mesa dedicado, com tudo já configurado. Não sei se isso acontece em todos os treinamentos, mas vale lembrar.
Na inscrição, também há um desafio pré-treinamento chamado "0h n03z, I @m bR0k3n!". Nesse desafio, você recebe um projeto do Visual Studio com um shellcode quebrado e precisa fazer uma análise dinâmica com o WinDbg para consertá-lo e fazer com que ele abra uma calculadora. Eles concluem: "Resolver este desafio representa os pré-requisitos técnicos mínimos exigidos para este curso. Se você achar este desafio difícil demais, talvez seja bom reconsiderar sua inscrição na turma."
EXP-401
O programa oficial do EXP-401 pode ser consultado aqui.
Um dos primeiros slides do treinamento foi este:

O que se pode esperar de um treinamento que começa assim? Bem, você vai mergulhar em cinco módulos, nos quais é apresentada, em detalhes, uma forma de pensar para criar exploits complexos.
No primeiro dia, você cria do zero um shellcode reverso x64 personalizado. Parece fácil, não é? Pois isso foi ensinado nas primeiras 2 horas do treinamento. O resto do dia foi dedicado a explicar e concluir um exploit guest-to-host para uma vulnerabilidade Use-After-Free no mecanismo RPC da VMWare (chamado de backdoor), contornando mitigações modernas de exploração como o WDEG (que inclui a randomização de heap bottom-up) e um uso insano de uma combinação de ROP + COP, resultando em uma reverse shell a partir do host VMWare.
No segundo dia, foi apresentada uma vulnerabilidade de Type Confusion no motor JS do Edge (pré-Chromium). Devido à natureza do Edge e às mitigações de segurança apresentadas, o caminho da primitiva inicial de Leitura/Escrita Arbitrária até a execução de APIs Win32 arbitrárias é repleto de controles como CFG, ASLR, ACG, CET e DEP, que são contornados usando técnicas de tirar o fôlego. Para escapar do sandbox, uma CVE é explorada, o que finalmente resulta na obtenção de uma reverse shell apenas clicando em um botão em uma página web no navegador.
O terceiro dia foi o início da exploração do Windows Kernel. As primeiras horas foram usadas para explicar como configurar a depuração do Kernel e vários conceitos importantes de funcionamento interno do Windows relevantes para a exploração, como Memory Paging, SSDT, uma introdução aos Kernel Drivers e às proteções do Kernel, entre outros. Em seguida, foi criado um exploit de LPE para uma vulnerabilidade no driver FortiShield, criando uma primitiva de Leitura/Escrita Arbitrária, contornando o SMEP ao abusar das Page Table Entries (PTE), restaurando a execução do Kernel e tornando o exploit independente de versão.
Por fim, o quarto dia foi dedicado a criar um exploit para um driver nativo do Windows (win32k). O exploit realizou uma manipulação pesada de pool e usou um gadget inédito para criar uma primitiva de Leitura/Escrita Arbitrária. Além disso, foi criada uma versão do exploit que funciona a partir de uma shell de baixa integridade, abusando de vazamentos de memória. O exploit também foi atualizado para funcionar mesmo com o HVCI habilitado.
Em resumo, o curso vai ensinar você a realizar um exploit em cadeia completa:
Explorar uma vulnerabilidade de Type Confusion para obter Leitura/Escrita Arbitrária em um processo do Edge dentro do sandbox e executar APIs Win32 arbitrárias.
Escapar do sandbox explorando (fazendo engenharia reversa de um exploit em C#!) outro processo do Edge e executando comandos arbitrários do sistema operacional em integridade média.
Realizar um ataque guest-to-host explorando uma vulnerabilidade no protocolo RPC proprietário da VMWare.
Escolher como elevar privilégios no sistema operacional do host, explorando um driver da Fortinet ou criando um exploit para o driver nativo win32k.
Tudo isso teve que ser feito contornando mitigações avançadas como WDEG, CFG, CET, ACG, (k)ASLR, DEP, EAF, HVCI, SMEP etc.
Agora, os níveis de "WTF" fazem todo sentido.
A ressaca pós-curso
Como mencionado acima, o curso teve quatro dias de duração. Diferente de muitos outros, o material do curso inclui dois livros com conteúdo escrito, um arquivo ZIP com todas as PoCs criadas e os slides usados para conduzir o treinamento. Vários "quilômetros extras" do curso (deixo a dica!) estão ali para você praticar ainda mais os temas apresentados.
Depois de concluir o curso, você tem até um ano para agendar o exame. Agendei o meu para 17 de agosto de 2023.
No mês anterior ao exame, me dediquei 100% a revisar o material do curso e reproduzir os mesmos exploits:

Na verdade, li o material duas vezes durante aquele mês de estudo. Na primeira vez, resolvi todos os exercícios dos cinco módulos e alguns quilômetros extras. Na segunda vez, reli todo o material, mas com uma visão "de 9 mil metros de altura", para ter uma ideia geral do conteúdo e entender o design dos exploits em um nível mais alto.
Essa abordagem me deu mais confiança para entender e digerir o nível profundo de conceitos técnicos apresentados no curso.
Com tudo pronto, chegou o dia do exame.
Exame
Agendei o exame para começar em 17 de agosto de 2023, às 7h. Você tem 71 horas e 45 minutos de tempo de laboratório para concluir os desafios e mais 24 horas para criar e enviar um relatório. Como o exame é supervisionado (proctored), é preciso chegar 15 minutos antes para a verificação de identidade e outras checagens de supervisão.
O modelo de relatório do exame traz diretrizes sobre o que esperar dele:
Há dois desafios.
No primeiro desafio, você precisa escapar de um sandbox.
No segundo desafio, você precisa lidar com o Windows Kernel.
Cada desafio pode valer 25 ou 50 pontos.
Você precisa alcançar pelo menos 75 pontos para passar no exame (ou seja, precisa concluir pelo menos um desafio e meio).
Não posso dar mais detalhes sobre o exame, mas acho que os desafios são uma boa forma de avaliar os temas cobertos no curso, e o tempo é suficiente para concluí-los se você souber o que está fazendo.
No meu caso, terminei o exame cerca de uma hora antes do prazo final. Sim, foi exaustivo.
Depois de algumas horas de sono, criei o relatório e o enviei na noite de 20 de agosto. A última vez que enviei um relatório à OffSec foi no início de 2023, quando concluí a certificação OSEP , e tive que esperar até uma semana pelo resultado. No entanto, apenas dois dias depois de enviar o relatório do OSEE, em 22 de agosto, recebi o e-mail mencionado anteriormente, dizendo que eu havia sido aprovado nos desafios e obtido a certificação OSEE.

Dicas para o exame
A seguir estão algumas coisas que funcionaram para mim, mas, como sempre, os resultados podem variar de pessoa para pessoa:
Conclua todos os exercícios do livro.
Cada módulo tem alguns quilômetros extras. Conclua o máximo possível deles. O último quilômetro extra que concluí foi a criação de um exploit para a CVE-2021-31956:

Repita os pontos 1 e 2.
Já fiz trabalhos anteriores sobre Kernel Debugging. Você pode acompanhar meus posts no blog e reproduzir como contornar os controles e criar um exploit para o HEVD.
A série sobre Browser Exploitation, de Connor McGarr, é uma ótima forma de aprender e praticar o módulo de Type Confusion do Edge.
Participe do servidor da OffSec no Discord. A comunidade é excelente, e a equipe de suporte da OffSec pode ajudar você com qualquer coisa relacionada ao curso.
A conexão VPN não é estável. Como se trata de um túnel UDP, pode haver problemas no cálculo do tamanho do MTU (MTU da VPN > MTU do link), o que pode causar perda de pacotes em momentos de tráfego intenso. Siga este guia para resolver o problema. No final, precisei adicionar a linha
mssfix 1387ao meu arquivo de conexão do OpenVPN para corrigir esses problemas.
Críticas comuns
Primeiro, e a mais conhecida: fazer o curso é caro. No entanto, na minha opinião, o que você aprende durante o treinamento e a preparação para o exame vale cada centavo.
Além disso, como o nome do curso sugere, o treinamento é sobre exploração (exploitation). A Microsoft tem feito um ótimo trabalho desde o lançamento do Windows 8 para melhorar continuamente a segurança do sistema operacional. Então, mesmo com a atualização do curso em 2021, muitas das técnicas apresentadas no treinamento já não funcionam nas versões mais atuais do Windows. Isso significa que, embora o conhecimento adquirido esteja mais voltado para desenvolver a mentalidade necessária para criar exploits complexos e avançados, algumas das técnicas e primitivas usadas já não são válidas, e é preciso fazer novas pesquisas para desenvolver um exploit para uma versão atual do Windows (mais uma vez, acredito que isso pode até ser uma vantagem, se você olhar por outro ângulo).
Conclusões
A experiência do OSEE foi realmente enriquecedora para mim. Obter essa certificação era um sonho pessoal que eu tinha há muito tempo, e é ou foi um objetivo final para muitos outros profissionais de segurança ofensiva.
Mas sempre tive a mesma sensação depois de conseguir uma certificação: e agora?
Comece agora com o PTaaS da Fluid Attacks
Assine nossa newsletter
Mantenha-se atualizado sobre nossos próximos eventos e os últimos posts do blog, advisories e outros recursos interessantes.
Outros posts


























