Hoje venci um desafio que havia planejado desde fevereiro: tirar a certificação GXPN.
Enfim, depois de 3 meses de estudo intensivo, mais de 1.400 páginas de material, diversos desafios online vencidos nos Labs via VPN da SANS, incluindo um CTF final, fiz a prova com conteúdo bem puxado, e consegui passar.
Vou contar um pouco sobre esse curso e essa certificação...
O conteúdo abordado por essa formação é o seguinte:
Exam Certification Objectives
Objectives | Objective Outcome Statement |
---|---|
Accessing the Network | The candidate will demonstrate an understanding of how to bypass network access control systems. |
Advanced Fuzzing Techniques | The candidate will be able to develop custom fuzzing test sequences using the Sulley framework. |
Advanced Stack Smashing | The candidate will demonstrate an understanding of how to write advanced stack overflow exploits against canary-protected programs and ASLR. |
Crypto for Pen Testers | The candidate will be able to attack and exploit common weaknesses in cryptographic implementations. |
Escaping Restricted Environments | The candidate will demonstrate an understanding of restricted environments in Linux and Windows, Desktop restriction techniques, as well as tools and techniques for bypassing them. |
Exploiting the Network | The candidate will demonstrate an understanding of how to exploit common vulnerabilities in modern networks attacking client systems and common network protocols. |
Fuzzing Introduction and Operation | The candidate will demonstrate an understanding of the benefits and practical application of protocol fuzzing to identify flaws in target software systems. |
Introduction to Memory and Dynamic Linux Memory | The candidate will demonstrate a basic understanding of X86 processor architecture, Linux memory management, assembly and the linking and loading process. |
Introduction to Windows Exploitation | The candidate will demonstrate an understanding of Windows constructs required for exploitation and the most common OS and Compile-Time Controls. |
Manipulating the Network | The candidate will demonstrate an understanding of how to manipulate common network systems to gain escalated privileges and the opportunity to exploit systems. |
Network Boot Attacks | The candidate will be able to attack and exploit common weaknesses in network boot environments, including DHCP, BOOTP, and PXE. |
Python and Scapy For Pen Testers | The candidate will demonstrate an understanding of the ability to read and modify Python scripts and packet crafting using Scapy to enhance functionality as required during a penetration test. |
Shellcode | The candidate will demonstrate the ability to write shellcode on the Linux operating system, and demonstrate an understanding of the Windows shellcode methodology. |
Smashing the Stack | The candidate will demonstrate an understanding of how to write basic exploits against stack overflow vulnerabilities. |
Windows Overflows | The candidate will demonstrate an understanding of how to exploit Windows vulnerabilities on the stack, and bypass memory protections. |
- deixar que a prova realmente comprovasse pra mim mesmo meu nível de conhecimento;
- é balela a história do open book, prq não serve pra muita coisa, e obviamente só percebi isso quando já estava fazendo a prova.
Agora, por que o open book não ajuda muito? Simplesmente porque o conteúdo não é decoreba, mas sim análise de casos, tráfego de rede, mapa de rede, resultado de debugging e análise do porque um exploit ou shellcode não funcionou, e o que fazer para que funcionem, análise de scripts de fuzzing e etc. Com isso, a maioria das questões apresenta print de telas para que sejam analisados e uma resposta seja dada.
A prova possui um total de 75 questões, com 180 minutos para realização da mesma. O que dá em média menos de 2 minutos e meio para cada questão. Felizmente finalizei com uma 1h30, pois nunca tive muita paciência com provas, ou sei a resposta ou não, afinal a resposta não cai do céu :-)
Voltando ao curso...
Optei fazer na modalidade SelfStudy, na qual recebemos as apostilas pelo correio, impressas, os mp3 das aulas (equivalente à 5 dias de curso, mais o CTF), e os DVDs com algumas VMs e ferramentas para não precisar fazer downloads para as práticas.
Assim que nos inscrevemos, também recebemos as credenciais para acesso via VPN aos labs da SANS e realizarmos as práticas de cada módulo do curso (são 5 ao todos, e o mesmo número de apostilas). E esse acesso dura 4 meses, que é o tempo que temos entre o estudo e a realização da prova. Se não realizar os labs e a prova nesse período, perdemos o acesso e o voucher, e precisamos pagar uma taxa para reagendar a mesma. Por esse motivo, não quis correr o risco e agendei a prova para três meses após receber todo o material e iniciar os estudos.
Cada módulo, ao todo 5, tem uma apostila específica, com teoria, exercícios práticos, e um bootcamp final para reforçar o conteúdo estudado no módulo. Os módulos são:
- Exploração de Redes
- Criptografia para Pentesters
- Python, Scapy e Fuzzing
- Linux Exploitation
- Windows Exploitation
Apenas para constar: os pdfs que estão disponíveis para download na internet, já estão desatualizados e sem uma série de conteúdos, além de não possibilitar o acesso de quem baixá-los aos labs da SANS.
Como o material é bem extenso (quase 1.400 páginas no total), decidi adotar uma estratégia para agilizar e facilitar meus estudos em um período curto. Afinal, o conteúdo além de complexo, é muito extenso para absorver tudo em 3 meses.
Comecei estudando toda a parte teórica, de todos os 5 módulos, e só depois que terminei, fiz as práticas, pois ajudou-me a concentrar esforços em duas fases distintas (só teoria e depois só prática), sendo que a segunda fase (prática) ajudou-me a relembrar e fixar a primeira parte (teoria).
É muito importante conseguir montar um lab da forma correta para que os exercícios dêem os resultados esperados e possamos entender a lógica da coisa toda. Por exemplo, sem ter um Windows XP SP0, um Windows XP SP3, um Windows Seven, um Windows Server 2003 e um Server 2008, ficará difícil entender o porque de um exploit funcionar em um, e não em outro, e ainda pode ter a possibilidade de readequar um exploit e/ou shellcode para funcionar em mais de uma versão de Windows, ou. no caso do Linux, em versões diferentes do kernel.
O investimento é alto, mas o conteúdo estudado compensa. Infelizmente no Brasil não ganhamos tão bem a ponto de tirar o escorpião do bolso e sacar $4,555.00 para bancar um curso e uma prova dessas, mas as vezes essas oportunidades caem do céu, como no meu caso, onde a empresa onde trabalho decidiu custear essa certificação. E como forma de reconhecimento, vi-me obrigado a passar na prova na primeira tentativa.
Uma coisa que achei interessante, foi o diferencial entre a certificação GXPN e a OSCE, onde na primeira é englobado técnicas de exploração tanto de Windows quanto de Linux, enquanto que na segunda, apenas sistemas Windows são explorados. De qualquer forma, a OSCE já está em meu radar para os próximos meses :-)
Agora tenho novos planos de certificações, para poder aprofundar-me em alguns assuntos de interesse pessoal, e outros que além de interesse pessoal, também envolve os interesses de meu empregador. No primeiro grupo, está a GREM, que infelizmente será deixada para o início do ano que vem, enquanto que aquelas que são de meu interesse, mas também envolvem minhas atividades do dia a dia, já estão agendadas para os próximos meses, e pagas.
Os próximos passos são: OSCP, através de treinamento presencial na Black Hat, e a OSCE, logo após a prova da OSCP. Ambas certificações já estão pagas, e só estão esperando a chegada da Black Hat e esse descanso merecido pós-GXPN. E inclusive sei que a GXPN está servindo como base para a OSCP e OSCE, pois sei do alto nível técnico cobrado por elas em suas avaliações. Esse foi o motivo por decidir seguir essa sequência de certificações.
Confesso que nesses últimos meses (de fevereiro à maio), deixei todos os livros de lado, até mesmo qualquer leitura para espairecer a cabeça, e foquei todo meu esforço nas apostilas, que somadas davam em torno de 3 livros bem técnicos e todos em inglês. Esse é outro ponto importante: o inglês precisa estar afiado, pois todo o material, bem como a prova, está em inglês, sem opção alternativa de tradução.
Bem, essa foi minha experiência, e alguns de meus planos futuros. Se alguém precisar de alguma ajuda, ou tirar dúvidas, sinta-se à vontade, que durante meu escasso tempo livre tentarei ajudar.
OBS1: a prova da GXPN tem 75 questões e é necessário acertar pelo menos 66% da prova para passar. Isso dá 50 questões.
OBS2: não colocarei meu score aqui, pois mesmo que eu diga que tirei 99% vai ter gente falando besteira, dizendo que não sei nada porque não tirei 100% ;-)