Antes de um teste de penetração começar, a equipe de teste e a empresa definem um escopo para o teste. O escopo descreve quais sistemas serão testados, quando o teste acontecerá e os métodos que os testadores de penetração podem usar. O escopo também determina quanta informação os testadores de penetração terão antecipadamente:
Em um teste de caixa-preta, os testadores de penetração não têm informações sobre o sistema-alvo. Eles devem confiar em suas próprias pesquisas para desenvolver um plano de ataque, como faria um hacker do mundo real.
Em um teste de caixa-branca, os testadores de penetração têm total transparência do sistema de destino. A empresa compartilha detalhes como diagramas de rede, códigos fonte, credenciais e muito mais.
Em um teste de caixa-cinza, os testadores de penetração obtêm algumas informações, mas não muitas. Por exemplo, a empresa pode compartilhar intervalos de IP para dispositivos de rede, mas os testadores de penetração precisam investigar esses intervalos de IP por conta própria em busca de vulnerabilidades.
Com um escopo definido, os testes começam. Os testadores podem seguir várias metodologias de testes de penetração. Entre as mais comuns estão as diretrizes de testes de segurança de aplicações do OWASP, o Penetration Testing Execution Standard (PTES) e o Instituto Nacional de Padrões e Tecnologia dos EUA (NIST) SP 800-115.
Independentemente da metodologia usada pela equipe de testes, o processo geralmente segue as mesmas etapas gerais.
1. Reconhecimento
A equipe de testes reúne informações sobre o sistema-alvo. Os testadores de penetração usam diferentes métodos de reconhecimento, dependendo do alvo. Por exemplo, se o alvo for um aplicativo, os testadores de penetração podem estudar seu código fonte. Se o alvo for uma rede inteira, os testadores de penetração podem usar um analisador de pacotes para inspecionar os fluxos de tráfego da rede.
Os testadores de penetração também costumam recorrer à inteligência de código aberto (OSINT). Ao ler documentação pública, artigos de notícias e até mesmo redes sociais e contas do GitHub dos funcionários, os testadores de penetração podem obter informações valiosas sobre seus alvos.
2. Descoberta e desenvolvimento de alvos
Os testadores de penetração usam o conhecimento adquirido na etapa de reconhecimento para identificar vulnerabilidades exploráveis no sistema. Por exemplo, os eles podem usar um scanner de portas como o Nmap para procurar portas abertas para onde possam enviar malware. Para um teste de penetração de engenharia social, a equipe de testes pode desenvolver uma história falsa, ou “pretexto”, que ela usa em um e-mail de phishing para roubar credenciais dos funcionários.
Como parte desta etapa, os testadores de penetração podem verificar como os recursos de segurança reagem às invasões. Por exemplo, eles podem enviar tráfego suspeito para o firewall da empresa para ver o que acontece. Os testadores de penetração usarão o que aprenderam para evitar a detecção durante o restante do teste.
3. Invasão
A equipe de testes inicia o ataque real. Os testadores de penetração podem tentar uma variedade de ataques, dependendo do sistema-alvo, das vulnerabilidades encontradas e do escopo do teste. Alguns dos ataques mais comumente testados incluem:
Injeções de SQL: os testadores de penetração tentam obter uma página da Web ou aplicativo para divulgar dados confidenciais inserindo códigos maliciosos nos campos de entrada.
Scripting entre sites: os testadores de penetração tentam plantar código malicioso no site da empresa.
Ataques de denial-of-service: os testadores de penetração tentam colocar servidores, aplicativos e outros recursos de rede offline, inundando-os com tráfego.
Engenharia social: os testadores de penetração usam phishing, baiting, pretexting ou outras táticas para induzir os funcionários a comprometer a segurança da rede.
Ataques de força bruta: os testadores de penetração tentam invadir um sistema executando scripts que geram e testam possíveis senhas até que uma funcione.
Ataques de intermediário: os testadores de penetração interceptam o tráfego entre dois dispositivos ou usuários para roubar informações confidenciais ou plantar malware.
4. Escalada
Depois que os testadores de penetração exploram uma vulnerabilidade para se estabelecer no sistema, eles tentam se movimentar e acessar ainda mais vulnerabilidade. Essa fase às vezes é chamada de "encadeamento de vulnerabilidades", porque os testadores de penetração passam de vulnerabilidade em vulnerabilidade para se aprofundar na rede. Por exemplo, eles podem começar plantando um keylogger no computador de um funcionário. Usando esse keylogger, eles podem capturar as credenciais do funcionário. Usando essas credenciais, eles podem acessar um banco de dados confidencial.
Nesse estágio, o objetivo do testador de penetração é manter o acesso e aumentar seus privilégios, evitando as medidas de segurança. Os testadores de penetração fazem tudo isso para imitar ameaças persistentes avançadas (APTs), que podem se esconder em um sistema por semanas, meses ou até anos antes de serem detectadas.
5. Limpeza e geração de relatórios
No final do ataque simulado, os testadores de penetração limpam quaisquer vestígios que tenham deixado para trás, como trojans de porta dos fundos que plantaram ou configurações que alteraram. Dessa forma, hackers do mundo real não podem usar as explorações dos testadores de penetração para violar a rede.
Em seguida, os testadores de penetração preparam um relatório sobre o ataque. O relatório normalmente descreve vulnerabilidades que eles encontraram, explorações que usaram, detalhes sobre como evitaram recursos de segurança e descrições do que fizeram enquanto estavam dentro do sistema. O relatório também pode incluir recomendações específicas sobre correção de vulnerabilidades. A equipe de segurança interna pode usar essas informações para fortalecer as defesas contra ataques do mundo real.