Midnight Hackings apoia o fim da escala 6x1.
Todos nós trabalhadores devemos ter direito à vida além do trabalho! Trabalhadores unidos mudam o mundo.
Notas sobre Penetration Testing 0x00
Introdução às notas de estudo
Sexta (28/06/2024) comecei minha jornada rumo à Segurança Ofensiva, visando mudar minha área profissional de 4 anos em Blue e Purple Team. O motivo para essa mudança, além de busca de mais vagas de trabalho, é para fortalecer meu conhecimento em cybersecurity através do hacking propriamente dito. Então, let’s hack!
Atualmente estou estudando para a certificação eJPT, da iNE Security. É uma certificação entry-level de custo baixo (pelo menos fora do Brasil), que abrange desde as fases iniciais de um pentest até o pós exploratório, com uma prova de 35 questões sobre um laboratório de 5 máquinas, que deve ser realizado em até 48 horas.
Nessa série de notas, irei documentar os conteúdos e plataformas que utilizarei para estudo da minha trilha em pentest, focando na certificação mas não se limitando a ela. Não levem tudo o que for explicado nessas notas como 100% correto, visto que erros podem ocorrer e estarei explicando os conceitos da forma que eu melhor entendo.
Então, vamos à nota de hoje!
Introdução ao Pentest
Testes de penetração, ou simplesmente pentest, é uma forma de realizar testes de segurança em uma corporação, seja nas suas aplicações expostas para a internet ou internas ou na sua infraestrutura, através da aplicação de metodologias e ferramentas de segurança ofensiva.
O valor de um pentest está na descoberta de um caminho de ataque, tendo como meta atingir um objetivo em especifico. Esse objetivo pode ser atingir um servidor em específico, realizar a extração do banco de dados, roubar informações ou escalar para o privilégio mais alto disponível no ambiente.
Tal objetivo é, por vezes, informado direta ou indiretamente pelo cliente, através de uma proposta comercial. Nessa proposta, o cliente irá decidir pelo tipo de pentest (tópico que veremos à frente), informações/acessos (se necessário), e o escopo. O profissional deverá se atentar ao escopo da operação, pois é o escopo que irá traçar limites para a atuação de um pentester. Por exemplo, no escopo será informado se testes DDoS e de engenharia social poderão ser aplicados, se dumps de determinados bancos podem ser feitos, quais sistemas não constam na lista de alvos, entre outras informações.
Seguir o escopo é uma obrigação legal e desrespeitá-lo pode resultar em quebra de contrato ou ações criminais.
Diferenças entre atividades de Pentest e Red Team
Por muitas vezes, as atividades de times de Pentest e Red Team são confundidas entre si, pois diversas vezes os times são os mesmos. Mas vamos listar algumas diferenças sobre eles:
Pentest | Red Team |
---|---|
O pentest geralmente é contratado em períodos específicos, de curta duração (40h, 80h) | Exercícios de red team são realizados em um período de longa duração (meses) |
O objetivo do pentest é encontrar falhas ou configurações errôneas que permitam a exploração | O red team realiza campanhas a fim de explorar mas também testar a capacidade dos times de resposta a incidentes (IR) |
Um pentest, dependendo do tipo, se apresenta como a visão que um adversário externo teria sobre as plataformas da contratante | O Red Team emula adversários e atores maliciosos e mostra uma visão mais profunda sobre os riscos internos |
Em resumo, quando se fala de emulação de atores maliciosos e campanhas mais longas, focadas nas ações dos times de segurança, estamos tratando de exercícios de Red Team.
É necessário saber programação para ingressar na carreira?
A princípio, não é necessário saber programar para ingressar na área de pentest. Conhecimentos de sistemas operacionais e redes são os requisitos necessários - afinal, lidar com shell reversas e firewalls necessita de certa habilidade com o terminal e entendimento de fragmentação de pacotes.
Entretanto, o conhecimento de programação torna-se necessário ao longo da carreira, visto que uma evolução possível do pentester é a de criar suas próprias ferramentas e malwares. Não há outra forma de entender e conseguir construir tais artefatos senão pela programação. Saber programar também traz vantangens pois o pentester compreenderá muito mais facilmente conceitos mais profundos sobre os sistemas que ele ataca.
Qualquer linguagem de programação, a princípio, pode ser utilizada para criar malwares e ferramentas ofensivas. Como recomendação, as linguagens C/C++ e Python são um bom começo para um pentester de sucesso.
Tipos de Pentest
Há três variantes de pentest:
Black-box
Um teste de caixa preta não fornece informações ou acessos ao profissional de pentest, apenas o nome da empresa ou website publicado. Isso faz com que o teste possa não ser tão profundo dado o tempo e ao nível de acesso, mas permite uma visão de um atacante externo que não tem acesso privilegiado dentro do ambiente.
Gray-box
Testes de caixa cinza são como testes blackbox só que com algum nível de acesso ou informação, como IPs, domínios ou credenciais de usuários não privilegiados no sistema. O teste terá a visão de alguém com certo nível de privilégio, mas que não é administrador, como no caso de um sistema estudantil, em que apenas alunos e funcionários podem logar, mas os alunos têm um nível menor de privilégios.
White-box
Para analisar mais profundamente o ambiente ou o aplicativo, um teste de caixa branca pode ser requisitado. Nele, são dadas todas as informações e acessos necessários ao profissional, resultando em uma visão de um insider dentro da corporação.
Fases de pentest
As fases de um penetration test são regidas por metodologias e padrões, como o NIST e a OWASP. Para mais informações sobre, esse artigo da IBM explica mais sobre esses padrões. Mas em geral, todas elas seguem algo semelhante com as fases abaixo:
- Pré-teste: na primeira etapa serão realizados os contratos, mapeamento do escopo, assinatura do Non-Disclosure Agreement (NDA) e reuniões de alinhamento, se necessário.
- Reconhecimento: essa é a primeira fase técnica, na qual o pentester irá buscar por todo tipo de informação disponível sobre a contratada. Intervalos de IP, domínios, pessoas, e-mails, setores, softwares, vagas de emprego e muitas outras informações que podem ser utilizadas nas fases posteriores são obtidas aqui, através de pesquisa em fontes abertas (OSINT). Essa é uma das fases mais importantes e longas, pois o sucesso do pentest depende das informações obtidas aqui. Note que aqui ainda não há interação ativa entre o pentester e o ambiente da empresa contratante, caracterizando como busca de informações de forma passiva.
Ferramentas e conceitos que podem ser utilizados: Maltego, Google Dorks, OSINT.
- Scanning e Enumeração: após obter IPs, hosts e domínios, é hora de realizar um scanning, de forma a entender quais serviços estão expostos e suas versões, configurações, entre outras coisas. Nessa etapa, a busca de informações é feita de forma ativa. Lembre-se que firewalls, WAFs e outros sistemas de defesa podem bloquear suas requisições.
Ferramentas e conceitos que podem ser utilizados: nmap, masscan, Banner Grabbing, fragmentação de pacotes.
- Busca de vulnerabilidades: com o resultado da fase anterior, é hora de procurar por alguma vulnerabilidade conhecida ou configuração incorreta realizada nos sistemas, que permita realizar execução de código - ou várias vulnerabilidades em conjunto que permitam realizar uma execução.
Ferramentas e conceitos que podem ser utilizados: nessus, openvas, exploitdb.
- Exploração: ao encontrar uma vulnerabilidade, é hora de atacar! Para isso, o pentester irá enviar o exploit, código que permite subverter um sistema e executar um código, tomando controle da máquina (dependendo do grau da vulnerabilidade). Com isso, já é possível ter acesso à rede interna do cliente!
Ferramentas e conceitos que podem ser utilizados: shell reversa, metasploit framework, bind shell, meterpreter.
- Pós-exploração e Pivoting: só entrar na rede não é suficiente, talvez a vulnerabilidade esteja em um servidor não crítico para a corporação e o objetivo esteja bem mais guardado, dentro de um ambiente cheio de firewalls, IDS/IPS e monitoramento de times de defesa. É aqui que começa a pós exploração, com foco em escalação de privilégios e movimentação lateral. O pivoting é uma técnica que permite que o atacante adicione uma rota para acesso à rede interna passando através do servidor comprometido, permitindo que seus ataques sejam realizados do seu sistema operacional (kali, parrot) e disfarçando o tráfego como se a origem fosse aquele servidor.
Ferramentas e conceitos que podem ser utilizados: exploração em Active Directory, winpeas, migração de shellcode, instalação de backdoor, scanning na intranet.
- Relatório: o relatório deve ser construído com evidências de execução e vulnerabilidades e mapeado nas fases acima. Esse é o produto que deve ser entregue ao cliente, contando com sumário executivo, sumário técnico e se possível com base em frameworks e bases de conhecimento, como o MITRE ATT&CK, CAPEC, entre outros.
Plataformas de aprendizado
Segurança ofensiva não é só teoria; um profissional deverá aplicar na prática seus conceitos. Para isso, há plataformas legais que permitem que indivíduos realizem ações maliciosas/ofensivas dentro de uma VPN segura. Algumas delas são:
Conclusão
Esse foi a primeira de várias futuras outras notas que um estudante de offensive security gostaria de repassar para a comunidade :)
Fiquem atentos ao blog que logo mais sairão novos artigos!