A Evolução e a Importância dos Testes de Penetração
Em 1967, um grupo de especialistas em segurança da Rand Corporation, composto por Willis Ware, Rein Turn, Harold Petersen e Benard Peters, após uma conferência sobre informática, elaborou um relatório crucial. Este relatório revelava que as comunicações entre computadores eram suscetíveis a invasões.
Nessa época, surgiu o conceito da primeira incursão com o propósito de violar a segurança computacional. James P. Anderson, então, desenvolveu uma metodologia passo a passo, que se tornaria a base dos testes de penetração.
Essa estrutura inicial era simples: equipes de segurança percorreriam etapas que iam da identificação de uma vulnerabilidade até o desenvolvimento de medidas para neutralizá-la. Para saber mais, confira uma breve história dos testes de penetração.
Analisar a segurança de uma organização não é tarefa simples e exige tanto perícia quanto tempo. No entanto, a tecnologia atual facilita que invasores encontrem as brechas de segurança em uma empresa. Ataques de penetração buscam explorar os ativos de uma companhia que estão expostos na internet (como aplicativos web, websites, servidores de nomes de domínio (DNS) e emails) para obter acesso e extrair dados valiosos.
Através dos testes de penetração, sua empresa pode identificar e fortalecer as possíveis áreas de ataque antes que sejam exploradas por criminosos. Dados corroboram essa necessidade: cerca de 73% das violações bem-sucedidas ocorreram por meio de vulnerabilidades em aplicativos web.
Assim, torna-se cada vez mais crucial que as organizações validem a segurança de seus aplicativos, sistemas e redes. Realizar testes simulados é uma forma eficaz de verificar a robustez das medidas de segurança de um sistema. Essa não é uma atividade a ser feita apenas uma vez, mas sim de maneira regular. A frequência desses testes deve ser definida considerando a estrutura da sua empresa e os riscos identificados em avaliações.
A boa notícia é que os testes de penetração não são tão complicados. Capacitando suas equipes de TI com as habilidades apropriadas, sua organização pode implementar segurança de forma consistente, principalmente durante grandes atualizações de infraestrutura ou ao introduzir novos serviços e ativos digitais.
Tudo começa com a compreensão do processo.
O que é Teste de Penetração?
Antes de explorarmos o “como”, é fundamental responder “o que” e “por que”. Os testes de penetração, frequentemente abreviados como “pen tests”, são ataques cibernéticos planejados e executados contra empresas em um ambiente seguro e controlado.
Juntamente com auditorias de segurança, os testes de penetração visam identificar vulnerabilidades em um ambiente organizacional específico. De forma tática, esses testes seguem uma abordagem similar à de um hacker. Alguns dos principais motivos pelos quais sua empresa precisa de testes de penetração incluem:
- Identificar vulnerabilidades antes que invasores o façam.
- Fortalecer processos e estratégias de segurança.
- Diminuir os custos de correção e reduzir o tempo de exposição.
- Garantir conformidade com regulamentações de segurança/privacidade.
- Preservar a reputação da sua marca e a fidelidade dos clientes.
Os testes de penetração avaliam a saúde da sua empresa em termos de resiliência a ataques, demonstrando a facilidade com que hackers podem invadir seus sistemas. Além disso, os insights obtidos podem orientar investimentos em segurança cibernética, seguir padrões do setor e aperfeiçoar estratégias de defesa para proteger sua empresa contra ameaças. Tudo isso se torna possível através de ferramentas de teste automatizadas, conhecidas como ferramentas de penetração.
O que são Ferramentas de Teste de Caneta?
Um profissional de segurança cibernética usa ferramentas de pen test para avaliar a resiliência da infraestrutura computacional através da simulação de ataques reais. Com essas ferramentas, as equipes de segurança podem eliminar tarefas repetitivas, gerar relatórios de teste de forma mais rápida e reduzir custos.
Existem diversas categorias dessas ferramentas: de código aberto, para aplicativos web, para redes, aplicativos móveis, nuvem, manuais, automatizadas e testes de penetração como serviço. Ao escolher, é importante procurar por recursos essenciais, como relatórios acionáveis, integração CI/CD, suporte para correção e certificados de pen test (apenas algumas oferecem certificados publicamente disponíveis).
Com essa base, vamos analisar o processo de teste de penetração.
Estágios do Teste de Penetração
Um teste de penetração comum envolve diversas etapas. Embora o processo possa ser dividido de maneiras diferentes dependendo do recurso utilizado, a estrutura geral permanece a mesma. O processo inclui reconhecimento, varredura, avaliação de vulnerabilidades, exploração e relatórios.
Os melhores profissionais de teste estão familiarizados com várias ferramentas para usar a mais adequada em cada fase do teste. Cada etapa do processo pode ser compreendida da seguinte forma:
Coleta de Informações
Frequentemente negligenciada, esta fase ajuda sua organização a estabelecer uma base sólida com o profissional de pen test. Aqui são definidos o escopo do trabalho, as regras de engajamento, os cronogramas e a logística, com metas e objetivos claros.
Para que um pen test seja completo e útil, esta etapa auxilia na compreensão das áreas que precisam de teste e das melhores metodologias. É fundamental não ignorar essa fase inicial.
Antes de testar um sistema, a organização deve obter o consentimento do profissional de teste. Caso contrário, suas ações podem ser consideradas ilegais. As empresas estabelecem regras claras (em contrato) para garantir um fluxo de trabalho tranquilo durante a contratação de testadores. O contrato também deve especificar ativos críticos, objetivos do teste e precauções. Essa etapa influencia todas as ações posteriores e garante que os planos estejam alinhados com os resultados esperados do teste.
Reunião de Reconhecimento/OSINT
Nesta fase, os testadores coletam todas as informações disponíveis sobre o sistema. Os dados obtidos orientam os testes futuros, baseados nos resultados da primeira etapa. Desta forma, os testadores são mais precisos sobre os dados a serem coletados e as estratégias a serem implementadas. Em um reconhecimento ativo, o testador interage diretamente com os sistemas. Já em um reconhecimento passivo, as informações são obtidas de fontes públicas. Para uma análise completa, as duas técnicas podem ser utilizadas.
A coleta ativa de dados envolve interações com redes, sistemas operacionais, contas de usuários, nomes de domínio, servidores de email e aplicativos. A coleta passiva de dados emprega inteligência de código aberto (OSINT), usando mídias sociais, informações fiscais, websites e outras fontes de dados públicas.
Existem diversas ferramentas de OSINT úteis e fáceis de usar para coletar e relacionar informações na web. Usando uma estrutura OSINT, é possível criar uma lista de verificação completa para identificar pontos de entrada e vulnerabilidades. Esta etapa é crucial para testes de penetração internos e externos, mas não é utilizada em testes de aplicativos web, aplicativos móveis e APIs.
Digitalizando
A próxima etapa é uma análise técnica detalhada do sistema. Através de ferramentas de varredura, como scanners automatizados de vulnerabilidades e mapeadores de rede, é possível entender como o sistema alvo responde a diversas intrusões, portas abertas, tráfego de rede, entre outros aspectos.
Os componentes principais desta etapa são a varredura e a análise de ativos. É possível usar ferramentas como o Nmap para descobrir serviços e hosts de computador, enviar pacotes e analisar respostas. Ao final desta etapa, você terá informações sobre os ativos, incluindo sistemas operacionais, serviços em execução e portas abertas.
Ao analisar os resultados, você terá a base para planejar uma exploração, mapeando o cenário digital do sistema e localizando possíveis pontos de ataque. Análises estáticas e dinâmicas podem ser realizadas para entender a resposta do sistema a diferentes condições.
Na análise estática, o código das aplicações é inspecionado antes da execução. Já na análise dinâmica, o código é inspecionado durante a execução. As informações coletadas precisam ser precisas, pois delas depende o sucesso das fases seguintes.
Avaliação/Ganho de Acesso
Neste ponto, todos os dados coletados nas etapas anteriores auxiliam na identificação de vulnerabilidades e se elas podem ser exploradas. Esta etapa se torna mais poderosa quando conectada a outros processos de teste de penetração.
Para avaliar os riscos associados às vulnerabilidades encontradas, os testadores utilizam recursos como o Banco de Dados Nacional de Vulnerabilidades (NVD), que analisa vulnerabilidades de software publicadas em CVEs (Vulnerabilidades e Exposições Comuns).
Em seguida, são identificados os alvos e mapeados os vetores de ataque. As áreas-alvo incluem ativos de alto valor, como dados de funcionários, informações de clientes, parceiros/cadeias de fornecimento, fornecedores, portas, aplicativos e protocolos. Ataques a aplicativos web são lançados.
Os ataques mais comuns incluem injeção de SQL, scripts entre sites e backdoors. O sistema é explorado através do aumento de privilégios, interceptação de tráfego e roubo de dados para revelar o impacto dos danos. O testador deve trabalhar respeitando as restrições especificadas durante a coleta de informações.
Exploração
Também conhecida como etapa de manutenção de acesso, nesta fase o testador verifica se as vulnerabilidades podem ser utilizadas. Esta etapa envolve uma violação real e um teste de acesso ao sistema. Através de ferramentas como o Metasploit, o testador simula um ataque real.
À medida que esta fase avança, o testador é responsável pelos recursos da organização, garantindo que os sistemas não sejam comprometidos após as simulações.
O Metasploit é preferido por sua facilidade na exploração de vulnerabilidades. Esta etapa avalia os efeitos de uma violação. O testador pode tentar criptografar ou exfiltrar dados e simular ransomware e ataques de dia zero. Para um pen test bem-sucedido, é crucial encontrar o equilíbrio entre testar os limites do sistema e manter a integridade do mesmo.
É recomendável trabalhar com especialistas, que exploram vulnerabilidades que a automação não consegue detectar. Ao final desta fase, o testador deve ter tentado obter privilégios de alto nível no sistema, identificar informações da rede e os dados disponíveis. O hacker ético deve ainda apresentar os resultados das explorações de alvos de alto valor.
Análise e Recomendação de Riscos, Revisão, Relatórios
Após a fase de exploração, o testador gera um relatório detalhando as descobertas. O relatório deve ser usado para corrigir as vulnerabilidades descobertas.
Um bom relatório de pen test é um repositório de vulnerabilidades bem documentadas, apresentado de maneira que auxilie a organização a remediar os riscos de segurança. Ele deve incluir todas as vulnerabilidades descobertas, suas pontuações CVVS, resumos de riscos técnicos, possível impacto nos negócios, detalhamento da dificuldade de exploração e aconselhamento tático.
Além disso, os relatórios devem documentar todas as fases, modelos de teste, técnicas utilizadas e ativos direcionados. Se possível, o testador deve apresentar uma avaliação sobre se o teste atende às necessidades da estrutura utilizada. O relatório deve ser entregue com uma explicação geral e um guia técnico.
Depois da apresentação do relatório, a limpeza do sistema é crucial. Isso envolve reverter o sistema para o estado anterior ao teste, eliminando todos os executáveis, arquivos temporários, scripts, contas de usuário criadas para acessar o sistema e rootkits.
Por fim, a correção das vulnerabilidades fica a cargo da organização, que deve analisar os impactos potenciais e influenciar as estratégias de remediação com base nos relatórios de teste. O ideal é que todas as vulnerabilidades sejam corrigidas dentro de um prazo razoável. Esta fase pode levar algum tempo e exigir testes adicionais.
Aplicação Prática de Testes de Caneta: Um Guia Passo a Passo
Para este exemplo, optamos por usar o framework Metasploit. Você pode criar seu próprio fluxo de trabalho. Aqui está um exemplo para começar. Primeiro, instale a ferramenta.
Se você estiver usando Linux/macOS, use o comando:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \ chmod 755 msfinstall && \ ./msfinstall
Se você estiver no Windows, use o instalador mais recente do Windows ou execute o comando Shell:
[CmdletBinding()] Param( $DownloadURL = "https://windows.metasploit.com/metasploitframework-latest.msi", $DownloadLocation = "$env:APPDATA/Metasploit", $InstallLocation = "C:\Tools", $LogLocation = "$DownloadLocation/install.log" ) If(! (Test-Path $DownloadLocation) ){ New-Item -Path $DownloadLocation -ItemType Directory } If(! (Test-Path $InstallLocation) ){ New-Item -Path $InstallLocation -ItemType Directory } $Installer = "$DownloadLocation/metasploit.msi" Invoke-WebRequest -UseBasicParsing -Uri $DownloadURL -OutFile $Installer & $Installer /q /log $LogLocation INSTALLLOCATION="$InstallLocation"
E então…
Inicie um projeto – Este será seu espaço de trabalho e armazenamento de dados. Organizar o trabalho melhora a eficiência. Por exemplo, se você tiver um pen test para as equipes de TI e recursos humanos, você desejará gerar resultados separados.
Fonte da imagem – MetaSploit
Obtenha dados de destino – Adicione dados ao seu projeto por meio de uma varredura ou importando dados existentes. Faça a varredura de alvos para enumerar portas abertas e visualizar os serviços de uma rede. Use a opção de digitalização. Em seguida, insira os endereços IP com os quais você deseja trabalhar, cada um em uma linha separada. Você também pode importar dados de um arquivo local.
Fonte da imagem – MetaSploit
Visualizar/gerenciar dados do host – Você pode visualizar os dados do host ou do nível do projeto. Você pode alternar entre cada IP para ter uma visualização de host única.
Fonte da imagem – MetaSploit
Verificar vulnerabilidades – Inicie uma verificação de vulnerabilidades por meio das opções do Nexpose. Esta etapa usa bancos de dados de vulnerabilidades para encontrar correspondências.
Explorar vulnerabilidades – Você pode explorar vulnerabilidades por meio de um assistente de validação. Alternativamente, o Nexpose também pode ser usado.
Atividade pós-exploração – Colete dados da exploração na guia de sessão e clique em “coletar”.
Fonte da imagem – MetaSploit
Limpeza – Ao terminar a coleta de dados, use a opção “limpar” para encerrar a sessão e limpar o sistema.
Gerar relatórios – Ao final do pen test, o Metasploit gera diversos relatórios que servem como ponto de partida para consolidar dados e compilar resultados.
Um guia de início rápido detalhado sobre testes de penetração pode ser encontrado no Guia de Início Rápido do Metasploit.
Ferramentas Comuns de Teste de Caneta
Algumas ferramentas comuns incluem Sn1per, Metasploit e Commix.
#1. Sn1per
Sn1per é uma ferramenta de investigação de vulnerabilidades que valida o impacto de ataques do lado do cliente em instâncias de invasão. Ela pode simular ataques remotos e de usuários finais em um ambiente controlado. Sn1per possui 6 mil estrelas no GitHub e também atua como um meio de comunicação na ferramenta. Com Sn1per, você economiza tempo automatizando ferramentas comerciais e de código aberto para enumerar vulnerabilidades.
#2. Metasploit
Metasploit é uma plataforma de pen test desenvolvida por uma comunidade de código aberto. Possui 31,2 mil estrelas no GitHub, demonstrando um grande interesse na área. O Metasploit é fruto da colaboração de entusiastas da segurança, com o objetivo de identificar vulnerabilidades e aumentar a conscientização sobre segurança.
#3. Commix
Commix é uma ferramenta para exploração de injeção de comando no sistema operacional. Ela é especializada em vulnerabilidades de injeção de comando, fácil de usar, gratuita, de código aberto, compatível com várias plataformas, portátil e modularizada. O Commix alcançou 4 mil estrelas no GitHub e é gratuito e de código aberto.
Palavras Finais
Compreender as etapas dos testes de penetração é fundamental para que as empresas aumentem a resiliência de seus produtos digitais diante do aumento dos ataques cibernéticos. Em um cenário de ameaças em constante evolução, simular ataques reais através de testes de penetração é uma forma eficaz de navegar no panorama de segurança cibernética.
Ao adaptar o pen test às necessidades específicas da sua organização, você garante eficiência nas políticas de segurança. Percorrer todas as etapas do teste garante o melhor retorno sobre o investimento em segurança cibernética.
Para um pen test bem-sucedido, seja inteligente. Comece coletando informações sobre o teste e construa o conhecimento até o nível de reconhecimento. Um bom ponto de partida é definir os objetivos a serem testados no sistema.
Em seguida, faça uma varredura no sistema para ter um conhecimento profundo e identificar vulnerabilidades. Avance para lançar um ataque, tomando cuidado para não danificar o sistema. Em seguida, gere relatórios úteis que orientem as ações corretivas. Lembre-se de limpar e restaurar o sistema ao seu estado original.
Quando usados corretamente, os testes de penetração melhoram a postura de segurança da sua organização, identificando e corrigindo vulnerabilidades. À medida que mais organizações migram para a nuvem e adotam novas tecnologias, os testes de penetração estão se tornando essenciais na área de segurança da informação. Cerca de 75% das empresas usam testes de penetração para verificar a postura de segurança ou por motivos de conformidade. Ao dedicar atenção a cada etapa do teste, você sempre encontrará valor na execução de testes de penetração.
Para finalizar, confira algumas ferramentas gratuitas de teste de penetração online para testar a segurança de aplicativos.