Penetration test: O que é teste de intrusão?
Penetration test, também conhecido como pentest ou teste de intrusão, é realizado para avaliar possibilidades de ataque a uma rede, a sistemas e até mesmo a uma única aplicação. Entenda como esse tipo de teste é executado e como ele pode influenciar as medidas de proteção adotadas.
O que é penetration test?
No contexto de tecnologia da informação, um teste de intrusão é um ataque planejado a uma rede de qualquer tamanho ou a computadores individuais, com o objetivo de descobrir as vulnerabilidades do objeto em teste. Várias ferramentas podem ser usadas para simular diferentes padrões e métodos de ataque conhecidos. Geralmente, os seguintes componentes são submetidos a um pentest:
- Elementos de agrupamento de rede, como roteadores, switchesegateways..
- Gateways de segurança, como firewalls de hardware e software, filtros de pacotes, verificadores de vírus, balanceadores de cargas, IDS, IPS etc.
- Servidores, como servidores web, servidores de banco de dados, servidores de arquivos etc.
- Sistemas de telecomunicações.
- Quaisquer tipos de aplicações web.
- Instalações de infraestrutura, como mecanismos de controle de acesso.
- Redes sem fio, como WLANs e Bluetooth.
Testes costumam ser classificados como blackbox,whiteboxegreybox. Em testesblackbox(caixa-preta), somente informações sobre o endereço da rede ou do sistema são disponibilizados àqueles que estão executando openetration test. Em pentestswhitebox(caixa-branca), por sua vez, executores obtêm amplo conhecimento sobre o sistema a ser testado, inclusive sobre endereços IP e componentes de software e hardware utilizados. Testesgreybox (caixa-cinza), os mais frequentes, combinam os dois métodos já descritos: executores recebem informações sobre a infraestrutura de TI correspondente e sobre as funções do sistema em teste.
Como fazer penetration test?
Você sabe como um pentest pode ser útil? Confira, nas seções abaixo, as principais funções de um teste de intrusão realizado em uma rede, sistema ou computador individual.
Preparação para o pentest
Para ser bem-sucedido em um penetration test, primeiramente você deve esboçar o seu plano. Defina os componentes a serem testados, o período de duração do teste e tire um tempo para realizar uma revisão completa do seu sistema ou rede. Ainda, certifique-se de possuir todas as ferramentas necessárias para completar a missão.
Respeitar a fase de preparação é ainda mais importante se você contratar executores externos para verificar a segurança do seu sistema ou rede, principalmente se seu objetivo é realizar um teste whitebox, que demanda variados tipos de informações e documentos importantes. Testes blackbox exigem um pouco menos, uma vez que você só precisará compartilhar o endereço dos objetos a serem testados.
Órgãos de governo de diferentes países, como da Alemanha, recomendam que uma equipe de pentest seja composta por pelo menos duas pessoas, para garantir que o princípio dos quatro olhos seja mantido. Sugere-se, ainda, que executores de testes de intrusão sejam profissionais capacitados nas seguintes áreas: administração de sistemas, protocolos de rede, linguagens de programação, produtos de segurança em TI, sistemas de aplicações e componentes de rede.
Ferramentas para pentest
A multiplicidade de ataques a redes e sistemas reflete a variedade de ferramentas disponíveis no mercado para a realização de testes de intrusão. Entre as mais interessantes, destacamos:
- Scanners de portas: Ferramentas de port scanning são especializadas em identificar portas abertas em um sistema computacional.
- Scanners de vulnerabilidades: Realizam varreduras em sistemas, em busca de falhas de segurança existentes, configurações incorretas e políticas de usuário e senha inadequadas.
- Sniffers de pacotes: Também chamados de analisadores ou farejadores de pacotes, eles analisam o tráfego de dados de uma rede. Quanto melhor a criptografia adotada, menos informações os sniffers conseguirão obter.
- Geradores de pacotes: Essas ferramentas são utilizadas para gerar ou imitar o tráfego de dados de uma rede, para que este sirva de base para o pentest.
- Craqueadores de senhas: Essas ferramentas são especializadas em quebrar senhas, identificando combinações fracas ou inseguras.
Muitas das ferramentas acima mencionadas foram especialmente desenvolvidas para testar a segurança de redes, sendo, portanto, totalmente adaptadas a penetration tests. Embora a maioria delas seja de código aberto, aplicações comerciais também podem ser encontradas. Estas costumam oferecer uma documentação mais abrangente, assim como suporte especializado.
Ao navegar pela internet, você poderá encontrar inúmeros conjuntos de ferramentas para a realização de testes de intrusão, organizados por especialistas no assunto. Estas são geralmente direcionadas a distribuições estáveis do Linux, em especial ao sistema operacional Kali Linux, publicado em 2007.
Procedimentos de penetration test
Basicamente, testes de intrusão podem ser divididos em quatro principais etapas, que serão mais bem exploradas nas seções abaixo.
Verificar conceito de rede
Mesmo quando ainda em fase de preparação, um pentest consegue revelar inconsistências ou pontos fracos da estrutura de uma rede ou de componentes individuais de um sistema. Por exemplo, se várias aplicações forem configuradas com diferentes direitos de acesso, essa variedade poderá acarretar complicações generalizadas, mesmo que a rede e/ou o sistema, assim como seus programas, estejam adequadamente protegidos. Situações como essa podem ser identificadas e resolvidas ainda na discussão preliminar. Outras questões, por sua vez, emergem somente durante a fase de testes práticos.
Testar medidas de proteção
Independentemente de qualquer coisa, redes empresariais devem proteger seus sistemas da melhor forma possível. Por isso mesmo, testes de intrusão também costumam verificar a adoção e a execução de processos de segurança. Assim, eles analisam o respectivo sistema operacional, os softwares, os serviços e as aplicações instaladas, que devem estar plenamente atualizados. A utilização de versões desatualizadas, seja por motivo de compatibilidade ou outros, requer medidas de proteção adicionais. Também configuram medidas importantes a restrição de acessos e a adoção de processos de autenticação. Resumidamente, ações importantes que envolvem a segurança de uma rede ou sistema são:
- Gerenciamento de acessos
- Adoção de senhas e processos criptográficos
- Uso de interfaces existentes e de portas abertas
- Implementação de conjuntos definidos de regras (por exemplo, de firewalls)
Buscar vulnerabilidades conhecidas
Via de regra, novas falhas de segurança costumam ser identificadas com rapidez, tornando-se de conhecimento público. Familiarizados com os principais pontos de ataque e vulnerabilidades, executores de pentests realizam investigações bastante focadas. A versão e o status do patch permitem que estes profissionais descubram o grau de proteção de componentes de rede, identificando aplicações que oferecem riscos de segurança. Vale a pena contar com a ajuda de um scanner de vulnerabilidades em situações que demandam a análise de um grande número de sistemas em um curto espaço de tempo, apesar de eles nem sempre apresentarem resultados exatos.
Executar exploits com responsabilidade
Um executor de testes de intrusão só pode ter certeza das vulnerabilidades encontradas ao conseguir executar um exploit, com sucesso, na respectiva rede, sistema ou aplicação. Essa fase geralmente envolve scripts disponibilizados por terceiros na internet, que podem não ter sido programados com boas intenções. Exploits realizados por scripts de fontes inseguras podem travar ou danificar o sistema testado e piorar a situação. É importante que executores de pentests tomem cuidado ao adotar scripts de terceiros, certificando-se da idoneidade das fontes. Em caso de dúvida, opte por pular o passo do exploit.
Cada etapa e cada resultado de um penetration test deve ser devidamente registrado por escrito, para embasar as conclusões da avaliação. Documentar tudo que foi executado também ajuda na repetição de etapas em caso de necessidade e na possível realização de testes futuros, uma vez que estes são recomendados a cada dois ou três anos.
Vantagens e desvantagens de penetration test
Estruturas de mainframe homogêneas ficaram no passado. Juntamente com estruturas computacionais descentralizadas, novas vulnerabilidades de segurança e problemas de funcionamento surgem todos os dias. Algumas delas são identificas e corrigidas, com rapidez, pelos próprios fabricantes de softwares. Outras demoram um pouco mais a serem descobertas e combatidas. Em situações assim, testes de intrusão oferecem vantagens:
- Pentests são muito mais detalhados do que verificações de segurança padrão.
- Fundamentalmente, pentests verificam a interação de componentes individuais.
- Executores de testes externos apresentam novos olhares sobre o conceito de segurança adotado.
- Por serem profissionais especializados, executores de testes de intrusão procedem de forma semelhante a criminosos cibernéticos.
Penetration tests também apresentam desvantagens, principalmente quando envolvem executores de testes externos:
- Durante a execução um teste de intrusão, terceiros obtêm acesso a informações internas.
- Há sempre a possibilidade de um teste de intrusão causar danos à rede, ao sistema ou às aplicações.
- Um pentest reflete somente o momento em que a análise foi realizada, não devendo ser usados de forma generalizada e irrestrita para justificar o abandono ou a modificação de medidas de segurança padrão.
A chamada engenharia social não é um dos riscos verificados por pentests clássicos. De toda forma, diferentes provedores de serviços incluem análises de vulnerabilidades humanas em seus pacotes, além de oferecem aperfeiçoamento profissional.