OSCP Journey

Whatis

Este post conta de forma abstraida a minha jornada entre 02/2020 e 07/2020 para obter a certificação Offensive Security Certified Professional (OSCP). A OSCP é uma das certificações de entrada da Offensive Security, o processo normal para realizar o exame é através do curso Pentest With Kali Linux PWK.

Motivação

É um pouco complicado pensar nos reais motivos para realizar um investimento desse nível se não partir de dois pontos que acredito que estejam relacionados a reconhecimento profissional e desafiar a si mesmo. Não que uma OSCP seja a única forma de você se desafiar, mas é uma forma de você se desafiar e ser reconhecido por isso profissionalmente (if pass: return success). Olhando de um panorama diferente do “O mundo quer papéis, dê papeis ao mundo”, desde que eu iniciei meus estudos em segurança ofensiva eu almejava alcançar a OSCP, afinal, somos movidos por ambições, certo? Talvez seja algo como hacker dream, ter algo que te dê o sentimento de pertencimento. Essa jornada não foi sobre o destino, foi sobre o caminho, o desejo de aprender mais, a sensação que você tem quando vira deus em um sistema, você sabe, não enjoa nunca.

Preparativos

Minha jornada começou bem antes do começo — por assim dizer –, eu iniciei meus preparativos um mês antes de ter a certeza de que eu iria realmente entrar nessa jornada. Eu tive que me preparar a me preparar, certo? A vida não vem com um manual, mas outras pessoas escrevem sobre(separei alguns links aqui: https://pastebin.com/GTF2f653), então eu procurei em diversos lugares, papers, artigos, vídeos e posts de pessoas que estavam se preparando pra OSCP e consegui extrair algumas coisas: organização, disciplina e perseverança são a chave. A organização é importante pois são diversos conteúdos e você como tudo na vida tem tempo finito, você precisa montar um cronograma. A disciplina vai te fazer seguir esse cronograma. A Perseverança, bom, você tem que colocar o máximo de esforço possível e não desistir no primeiro Segmentation fault, na verdade, em nenhum deles, você precisa destruir a todo custo. Algo que fez bastante sentido foi Eminem, nunca escutei tanto essa música na minha vida:

Depois que a expectativa emocional está alinhada, sobre o que vai ser preciso pra obter sucesso, vamos aos preparativos técnicos, muitos recomendam as máquinas do HTB (ou Hack the Box: https://www.hackthebox.eu/) como uma forma de se preparar, eu não acredito que está errado mas não posso dizer que está certo pois não segui esse caminho por questões financeiras, uma vez que você precisa pagar a licença para ter acesso a máquinas aposentadas. Meu preparativo consistiu em máquinas do Vulnhub (https://www.vulnhub.com/), obviamente não foi uma ideia exclusiva minha, como falei antes, eu extrai essa informação de papers como o do Abatchy (https://www.abatchy.com/2017/02/oscp-like-vulnhub-vms). A lista do Abatchy foi o kickstart, nesse preparativo eu fiz as seguintes máquinas (Eu escrevi a writeup da maioria e postei no meu blog):

Minhas recomendações são:

O processo de documentação de step by step precisa estar enraizado em você a um nível que você tire evidência de tudo com algo que eu chamaria de memória muscular de tanto repetir esse processo.

Lab OSCP

Meu lab teve duração de 90 dias eu adquiri a versão anterior a 2020 uma semana antes da Offensive anunciar a nova versão e eles se recusaram a atualizar o pacote mesmo o laboratório não tendo iniciado, então, estarei referenciando o material anterior ao do PWK 2020, o laboratório também sofreu alterações na nova versão, teve algumas máquinas novas e acredito que removeram outras.

Se você é um cara que já vive nesse mundo de segurança ofensiva, você provavelmente vai ficar entediado com o curso/material e a sua superficialidade, caso você não tenha experiência, vai achar difícil, o material não vai te dar base pra muita coisa, no máximo, vai te dar um caminho e você vai ter que construir a base por si próprio.

Eu não tinha como me dedicar exclusivamente pro laboratório pois trabalho full time, então leve isso em consideração quando você for definir o tempo de laboratório que podem variar de 30, 60 ou 90 dias. O ponto chave da OSCP é o laboratório, acho que é esse o item que mais faz ‘valer’ o investimento.

O laboratório possui mais de 50 máquinas (acho que 55) quais estão separadas em quatro redes, sendo: pública, administração, tecnologia e desenvolvimento. A rede pública é acessada da sua rede normalmente, algumas máquinas da rede públicas vão te dar acesso a rede de tecnologia e desenvolvimento e você irá achar uma máquina dentro dessas redes que irá te levar a rede de administração. A dica que eu recebi era: concentre seus esforços na rede pública. De fato, a rede pública é a maior e possui a maior diversidade de máquinas, mas obter acesso a outras redes é um puzzle divertido, eu obtive acesso a todas as redes e comprometi grande parte das máquinas do laboratório durante os 90 dias, menos máquinas do que eu queria ter comprometido.

Lembre-se de documentar todos os seus passos, eu recomendo a utilização do FlameShot (https://flameshot.js.org/#/) para tirar as evidências. Escreva um draft de uma writeup ou pelo menos a cyber kill chain do ataque de cada box que você comprometer. É importante criar o hábito de tirar print das “flags” em cada box, contendo endereço IP e conteúdo do arquivo na sua origem através de uma shell interativa.

Tente realizar os ataques sem o Metasploit, execute de forma manual, tente entender como o exploit funciona, independente da linguagem ou tipo. Acredito que o que a OSCP te faz aprender e consolidar é a metodologia do pentest, você vive isso mais de 50 vezes no laboratório, é chance que você tem de aperfeiçoar seus métodos, criar um core de ferramentas que vão ser usadas em diferentes steps do seu progresso até a joia da coroa (Proof.txt), o que eu quero dizer com isso é, estruture seus programas/shells/binários em diretórios organizados, por exemplo, um diretório contendo scripts de webshells e reverse shells que você gostou, diversifique a linguagem deles pois você pode não encontrar uma forma de executar em uma linguagem X, então tenha redundâncias. Outra dica é ter os binários do Windows, eu vou listar para você algumas ferramentas:

Durante sua jornada, você vai se deparar com tecnologias novas ou velhas ( muito velhas ), vai executar comandos complicados que você precisa entender o que eles fazem, anote isso em um lugar (cherrytree), elabore suas anotações de forma adequada, você vai usar com frequência a não ser que sua genética te permita ter memória fotográfica ou qualquer outro tipo de memorização alienígena.

Então o lance é saber o que você está fazendo ou procurando, ferramentas devem fazer o que elas devem fazer, ser um utensilio e não o guia, sua mente deve ser a própria arma, nesse cenário, você deve ser capaz de criar suas próprias coisas certo? O conhecimento liberta, em vários sentidos e um deles é em relação a limitação de ferramentas.

Em virtude de saber what the fuck is going on, você sabe a resposta certo? Sei que sabe, é, exatamente, pesquise. O universo de uma intrusão é vasto, é como uma arvore invertida de escolhas que são dadas pelo cenário que acabam em um mesmo lugar: no poder absoluto do administrador tirano. Então em todas as etapas do processo que vão te levar a comprometer o alvo, você precisa ter ciência do que está acontecendo, desde a fase de enumeração das portas (TCP/UDP), conhecer os protocolos, o que eles fazem, saber interagir com protocolos distintos (HTTP/HTTPS/SMB/SMTP/FTP e etc).

Com a experiência você vai identificar com uma velocidade significante o entry point, nesse processo você precisa se armar, achar um exploit ou criar um payload perfeito pro seu alvo que vai permitir você obter acesso a shell ou a informações que te levem a cumprir seu objetivo, essa é a parte interessante e infelizmente não é o momento para desbravar esse tópico pois seria extremamente extenso.

Depois do acesso inicial, você vai estar atrás das linhas inimigas, é o momento que você não pode ser detectado – não é o caso nos laboratórios anyway então vou pular essa parte –, no cenário da OSCP, o objetivo é obter acesso administrativo, e cada sistema tem suas peculiaridades, tirando exploits de kernel, você precisa entender como os sistemas funcionam, as configurações que podem ser abusadas, é interessante e existem vários papers relacionados, eu separei alguns de Windows e outros de Linux para você:

Preparativos Pós lab

Depois que meu período de laboratório encerrou, eu não me sentia preparado. Eu me submeti a mais 30 dias de laboratório no ambiente do https://sec4us.com.br. Comprometi diversas boxes, isso ajudou a minha confiança, mas o toque final foi em Buffer Overflow, eu estava bem enferrujado, então eu trabalhei na metodologia de BoF por uns três dias, eu encontrei alguns binários vulneráveis para praticar:

Exame

Meu exame foi caótico, tudo deu errado no começo e eu achei que iria ter minha prova suspensa. A webcam do meu notebook parou de funcionar — o notebook qual tinha sido devidamente preparado para o exame, com uma VM do kali configurada e ajustada pra prova com todas as customizações necessárias –, já era. O responsável pelo exame, chamado de proctor, disse que se eu não resolvesse em uma hora, ele iria cancelar o exame. Bom, eu olhei pro lado e vi meu outro notebook antigo, liguei e vi que tinha uma VM Kali antiga de 2018 ( O sistema que seria utilizado pro hack não pode ser o host, precisa ser virtual), esse notebook tem 4gb de ram, I3 e precisava suportar uma vm por 24h, sim, eu me fodi hardcore, sem falar no medo a cada ferramenta que eu instalava no sistema, o medo de crashar era absurdo, como se minha vida dependesse da estabilidade de um kali Linux, o que é hilário, é o equivalente de estar num carro sem freios em direção ao penhasco.

Depois de conseguir resolver o primeiro problema, meu RG tem uma foto de 10 anos atrás, foi engraçado eu mostrando diversos documentos na webcam que provavam que era eu mesmo e tendo que ficar colocando a foto do meu lado enquanto provavelmente mais de uma pessoa olhava pela webcam e deveriam discutir ‘Hmm, pode ser que seja ele mesmo” e faziam uma votação pra dropar meu exame, o problema é – além da foto antiga — que não corto o cabelo a mais de 4 meses e deixei minha barba acompanhar, sabe, pra ver aonde isso vai dar no final desse pesadelo viral, então basicamente estou com uma aparência muito diferente de qualquer coisa que eu já apareci antes na minha vida. Mas tudo deu certo, comecei a prova depois de uma hora, então eu tinha 22 horas e 45 minutos para destruir 5 alvos. Moral da história, realize as verificações com um dia de antecedência da prova, se for possível, tenha documentos atualizados. É bom definir uma estratégia para o exame, por exemplo, são 5 máquinas, duas de 25 pontos, duas de 20 pontos e uma de 10, totalizando 100 pontos, e a nota para aprovação é 70 pontos. Minha estratégia foi focar em bater os 70 pontos primeiro e brincar depois. A prova e si começou muito bem, eu alcancei 50 pontos em menos de uma hora e meia comprometendo as duas de 25 pontos, então parei para almoçar. Depois disso foi só sofrimento, matei a de 10, totalizando 60 pontos, e depois comprometi o user da box de 20 pontos, obtendo a pontuação necessária, depois de 12h de exame eu tinha obtido os 100 pontos. Eu não fui dormir depois de comprometer todo o ambiente, eu voltei em máquina por máquina, escrevendo a cyber kill chain (para mentalizar já o relatório e quais evidências seria usadas) e revisando as evidências ou tirando novas, mas eu estava exausto e deixei passar algumas coisas, mas nada muito sério. Depois que eu revisei tudo, eu informei ao proctor que eu iria dormir porém para ele manter a conexão aberta, caso ele terminasse a prova naquele instante, as 24h de tempo de relatório começariam a valer. Depois que eu acordei, dormi algo perto de 3h, acordei depois das 9H, o proctor tinha encerrado o ambiente por causa do tempo de exame. Então eu almocei e comecei a fazer o relatório, entreguei o relatório de madrugada, levou quase 12h de elaboração de relatório devido ao detalhamento exigido.

Relatório

Para o relatório eu peguei um modelo da internet (https://github.com/whoisflynn/OSCP-Exam-Report-Template). A estrutura do relatório entregue era basicamente igual a do template, contudo, eu dividi cada host(IP) em duas seções, sendo elas "Acesso Inicial" e "Pós Exploração", o objetivo era melhorar a organização e separar o comprometimento do primerio usuário em "Acesso Inicial" da escalação de privilégio para o usuário root na seção de "Pós Exploração".

Cada vulnerabilidade reportada tinha nome, descrição da vulnerabilidade, CVSS (Se aplicável), criticidade, prova de conceito (descrição step by step de passos para a exploração) e recomendações para correção ou mitigação.

Resultado

O resultado saiu no domingo de manhã, sendo que o relatório tinha sido encaminhado sábado de madrugada, contudo, eu só descobri na segunda-feira de manhã – passei ansiedade atoa haha – com a informação que fui aprovado no exame e me tornei certificado OSCP.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.