Carreira de Pentester na prática - parte 1
Trabalho como Analista de Segurança da Informação há pouco mais de dois anos, dos quais a maior parte do tempo como Pentester em empresas de consultoria. Durante a minha carreira, sempre encontrei vulnerabilidades durante as análises que realizei, além de vulnerabilidades de impacto crítico ou alto. Em vista desse cenário, se eu como “Hacker do Bem” tive certa facilidade em encontrar tais falhas, quais barreiras um cibercriminoso teria além da moral?
Por isso, a importância do investimento em segurança da informação é primordial para qualquer organização a fim de manter os três pilares da segurança, que são: Disponibilidade, Integridade e Confidencialidade. E, a partir deste panorama, foram criados “Frameworks" e guias como o NIST e o CIS para que as organizações elevem o seu grau de maturidade em segurança da informação. De todos os tópicos abordados pelos Frameworks e guias, o Pentest é o tema que será abordado neste artigo
O que é um Pentest?
Pentest ou Penetration Testing (Teste de Intrusão/Invasão/Penetração), cria um cenário ideal onde, através de um contrato, profissionais atacam intencionalmente uma aplicação ou rede para verificar suas condições gerais de segurança de forma realista.
Por quê fazer um Pentest?
Esses profissionais usam sua experiência, juntamente com ferramentas especializadas, para sondar as defesas em busca de vulnerabilidades, configurações incorretas e outras fraquezas. Dessa forma, existem certos benefícios vindos da realização de um Pentest, dentre eles estão:
- A descoberta de vulnerabilidades dos mais variados níveis de criticidade, demonstradas através de uma Provas de Conceito (PoC) que elas de fato existem e como são exploradas, indo além de teorias, falsos positivos e scans de vulnerabilidade;
- A prevenção de futuros ataques, sugerindo a implementação de controles de segurança atualizados em virtude das vulnerabilidades encontradas;
- A avaliação do desempenho das defesas do sistema ao enfrentar o pentest em si;
- A promoção de um cenário realista, simulando com exatidão como um cibercriminoso procederia;
- A obtenção de um mapeamento da visão de um cibercriminoso para um cenário realista de invasão.
Vale ressaltar que a realização destes Pentests devem ser de forma contínua, pois, a todo momento novas vulnerabilidades e atualizações de softwares surgem, expondo assim as aplicações e estruturas a novos riscos e vetores de ataque para cibercriminosos.
Informações necessárias para começar um Pentest
Dependendo do objetivo da análise de segurança, a pessoa Pentester recebe um determinado nível de informações ou acesso ao sistema alvo. Em alguns casos, adota-se uma mesma abordagem do início ao fim, em outros, evolui-se a estratégia à medida que a percepção do sistema aumenta durante a análise. Existem três níveis de acesso às informações de um Pentest:
Black-Box (Caixa Fechada)
Não se tem nenhuma informação sobre o sistema além do nome da empresa ou Host alvo. Esse é o cenário mais realista para a simulação de um ciberataque autêntico, onde o atacante geralmente começa sem nenhuma informação sobre o alvo. Entretanto, o fator tempo para o black-box é importante visto que um atacante real dispõe de todo o tempo necessário já um pessoa pentester não.
Gray-Box (Caixa Cinza)
Neste cenário, é garantido um conjunto de informações sobre a estrutura a ser testada, tais como: credenciais, hosts sensíveis, fluxos de negócio e ou documentações, tudo isso fornece à pessoa pentester o mínimo de informação sobre o sistema, tendo assim mais chances de encontrar um maior número de vulnerabilidades graças a esse nível de acesso concedido.
White-Box (Caixa Aberta)
A pessoa Pentester tem acesso às informações mais confidenciais do sistema, como códigos-fonte, binários, e, às vezes, até acesso a servidores administrativos. Essa abordagem fornece o mais alto nível de confiança entre as partes, para aumentar as chances de encontrar vulnerabilidades no menor período de tempo.
Tipos de tecnologias testadas em um Pentest
Existem uma infinidade de situações onde ciberataques são possíveis, como em: Sistemas Embarcados/IoT (Internet of Things), Docker, Cloud, Wi-Fi, BlockChain, Engenharia Social, etc. Todos eles poderiam ser categorizados em três grandes categorias: hardware, software e humano. Porém, aqui iremos dar visibilidade aos mais comuns pelo menos no mercado de trabalho atualmente. São eles:
Pentest em Aplicação Web
Sendo o tipo de Pentest mais contratado em empresas de consultoria, este processo busca examinar a eficácia dos controles de segurança, buscando por vulnerabilidades ocultas, padrões de ataque e quaisquer outras possíveis má configurações de segurança que possam levar ao comprometimento de um aplicativo da Web.
Um grande aliado nesta categoria é o OWASP Top 10, o mais confiável documento sobre as principais vulnerabilidades Web. Abaixo vemos uma vulnerabilidade de LFI(Local File Include), indevidamente mostrando arquivos de registro de acesso do servidor(Ambiente de teste):
Pentest em Aplicativos Mobile (Android/iOS)
Nesta abordagem, o objetivo é encontrar vulnerabilidades utilizando-se de três importantes passos:
Análise do código-fonte e binário decompilado
Via de regra, em todo pentest de aplicativo mobile será disponibilizado um arquivo binário referente à aplicação, e nele é feita engenharia reversa, onde podemos ver um suposto código fonte, a depender da existência de ofuscação do código. As principais ferramentas de descompilação são:
- IDA Pro: O mais completo Disassembler e Debugger do mercado;
- apktool: Ótima ferramenta de decompilação de aplicativos para Android;
- Radare2: Um rebuscado Framework de engenharia reversa;
- Ghidra: Ferramenta open-source de engenharia reversa desenvolvida pela National Security Agency (NSA), uma ótima opção para quem não pode comprar o IDA. Imagem comum do Ghidra fazendo o dissassembler de uma lib.so:
E, para a análise do binário, uma das ferramentas mais utilizadas é o Mobile Security Framework (MobSF), um software open-source que faz uma análise completa de forma automatizada. Além disso, caso o Pentest seja White-Box, também é realizada uma análise do código-fonte disponibilizado. Resumo do relatório gerado pelo MobSF:
Análise da segurança do aplicativo no dispositivo
Antes da realização dessa etapa, é necessário verificar a existência de proteções Anti-Root ou Certificate Pinning, e, caso existam, é preciso então realizar o Bypass, que sempre depende de como a aplicação foi feita.
Após a verificação, então é feita a análise de segurança, que se baseia em investigar se o dispositivo guarda indevidamente informações do aplicativo, como dados financeiros, dados pessoais, endereço e outras informações sensíveis.
Busca de vulnerabilidades nas requisições
Neste processo, a pessoa Pentester irá interceptar o tráfego de rede do aparelho e realizará testes de vulnerabilidades nas requisições do aplicativo. Um detalhe desta etapa é que, na maioria das vezes, é feita concomitante a análise do código-fonte, para comprovar o comportamento da aplicação.
Pentest em APIs
Esta abordagem é muito similar à de Aplicação Web, mas sem nenhuma interface gráfica. Geralmente é dada uma documentação estilo Swagger, como uma coleção do Postman, para que, no cenário ideal, a pessoa Pentester tenha em mãos todos os Endpoints da aplicação CRUD/REST.
Vale ressaltar que, quando o Pentest é Black-Box, a principal estratégia a ser feita é a enumeração dos diretórios com brute-force, utilizando alguma ferramenta automatizada, como o Ffuf. Adicionalmente é sugerida a leitura do seguinte artigo que aborda exatamente esse contexto: Dicas e truques para Pentest em API.
Assim como um Pentest Web, o Pentest de API também tem como objetivo cobrir a lista do OWASP API Security Top 10, Exemplo de execução do Ffuf:
Pentest em Rede Interna
Este tipo de análise pode ser realizada tanto presencialmente quanto remotamente através de uma VPN/VPS. Nesta abordagem há uma abrangência muito maior de itens a serem validados, principalmente pela variedade de serviços diferentes que podem estar nos hosts a serem testados, tais como Impressoras, câmeras de segurança, pontos eletrônicos, ou quaisquer outros itens que estejam conectados na rede que possam conter informações sensíveis.
Para dar início, é essencial o mapeamento da rede, e, para isso, a principal ferramenta é o Nmap. Com ela é possível descobrir todos os hosts e portas de todo o sistema, inclusive informações adicionais para cada serviço.
Muitos sistemas possuem integração com o Active Directory (plataforma administrativa), e o seu comprometimento torna-se o ponto mais crítico nessa análise. Uma sugestão para fazer essa varredura de serviços integrados é utilizar o Guia de pentest em AD (HackTricks), onde são enumeradas as melhores dicas do que pode ser feito em cada protocolo e serviço/porta, como SMB, LDAP, Kerberos, RDP, SSH, FTP, etc.
A escalação de privilégios nesse tipo de pentest é muito presente, pois em muitos casos é possível obter o acesso a um usuário/host comum e tentar conseguir um acesso administrativo, contando com ferramentas como:
- BloodHound: Mapeamento de AD;
- WinPEAS: Ferramenta completa e automatizada para escalação de privilégios em Windows;
- LinPEAS: Ferramenta completa e automatizada para escalação de privilégios em Linux. Imagem da execução do script:
Pentest em Rede Externa
É o tipo mais comum de Pentests Black-Box, onde, basicamente, há o nome da empresa ou uma lista de IPs. É similar ao de Rede Interna, com o diferencial de que sempre é iniciado de fora da rede. A maior característica desta abordagem é a grande diversidade e liberdade que a pessoa analista tem, pois são tantas as quantidades de verificações, que o resultado do Pentest varia muito de acordo com a criatividade de cada profissional.
Vale lembrar que uma das principais etapas nessa análise é a de reconhecimento, que será descrita na próxima parte deste artigo.
Parte 2: Clique Aqui.
Autora: Kali Nathalie