Teste de penetração (pentest): em que consiste
Com os chamados testes de penetração (também conhecidos como pentests), é possível determinar a vulnerabilidade da rede, de cada um dos sistemas envolvidos ou de uma única aplicação. Mas como é que estes testes são realizados e o que representam exatamente para a rede?
O que é um teste de penetração?
No contexto da informática, o teste de penetração refere-se a uma metodologia que consiste em planear um ataque a uma rede, independentemente da sua dimensão, ou a equipamentos individuais, com o objetivo de revelar vulnerabilidades no objeto em teste. Para tal, simulam-se vários padrões de ataque utilizando ferramentas criadas com base em métodos de ataque conhecidos. Os componentes típicos de um teste de penetração são:
- Elementos de ligação à rede, tais como routers, switches ou portas
- Portas de segurança, tais como firewalls de hardware e software, filtros de pacotes ou programas antivírus, balanceadores de carga, IDS e IPS, etc.
- Servidores web, servidores de bases de dados, servidores de ficheiros, etc.
- Equipamentos de telecomunicações
- Qualquer tipo de aplicações web
- Instalações de infraestrutura, como, por exemplo, mecanismos de controlo de acesso
- Redes sem fios envolvidas, tais como redes WLAN ou Bluetooth
Em geral, os testes de penetração são classificados em três tipos: testes de caixa preta, testes de caixa branca e testes de caixa cinzenta. Nos testes de caixa preta, os pentesters têm apenas à sua disposição o endereço de rede (sistema de destino). Nos testes de caixa branca, parte-se de um amplo conhecimento dos sistemas a testar, incluindo o seu endereço IP, o software utilizado e os seus componentes de hardware. Por último, os testes de caixa cinzenta, o tipo de teste mais utilizado, combinam as características dos testes de caixa preta com as dos de caixa branca. Nestes, são analisados cenários que não podem ser considerados pelos testes de caixa preta, como, por exemplo, um ataque lançado por alguém da própria empresa com informação suficiente sobre a rede. Nos testes de caixa cinzenta, é necessário conhecer a infraestrutura informática, o que implica, por exemplo, ter informações sobre a utilização que é feita dos sistemas e das suas principais características.
Como realizar um teste de penetração
Como tirar o máximo partido dos testes de penetração? A seguir, apresentamos os aspetos mais importantes para que possas realizar o teu teste de penetração.
Requisitos dos testes de penetração
Para realizar um teste de penetração de forma adequada, é necessário definir um plano claro. Determine os componentes a testar, a duração de cada teste ou da análise completa da rede e verifique se dispõe de todas as ferramentas necessárias.
Esta fase de preparação assume ainda maior importância se for uma entidade externa a realizar o teste de penetração através de um teste de caixa aberta. Neste caso, é necessário que forneça informações sobre a rede e os sistemas envolvidos, bem como a documentação disponível. No caso dos testes de caixa fechada, o procedimento é diferente, pois só terá de indicar o endereço de destino dos alvos do teste.
As melhores ferramentas para um teste de penetração
A diversidade de tipos de ataques a uma rede implica que os pentesters tenham à sua disposição um vasto leque de ferramentas. Entre as mais importantes, encontram-se, por exemplo:
- Verificação de portas: na verificação de portas, são utilizadas ferramentas especiais para identificar portas abertas num sistema informático.
- Scanner de vulnerabilidades: os scanners de vulnerabilidades verificam os sistemas em busca de falhas de segurança existentes, configurações incorretas e políticas de senhas e utilizadores insuficientes.
- Sniffer: um sniffer pode ser utilizado para analisar o tráfego de dados de uma rede. Quanto melhor for a encriptação, menor será a informação obtida.
- Geradores de pacotes: os geradores de pacotes são ferramentas que permitem gerar ou simular o tráfego de dados da rede. Desta forma, imita-se o tráfego de dados real da rede como parte de um teste de penetração.
- Descriptografadores de senhas: com os descriptografadores de senhas, os pentesters tentam obter senhas inseguras.
Muitas das ferramentas são desenvolvidas especificamente para testes de segurança em redes e limitam-se a uma área de teste muito específica. Embora a maioria seja de código aberto, também existem algumas aplicações de segurança comerciais disponíveis. Estas últimas costumam ter uma documentação mais detalhada e oferecem um suporte mais abrangente.
Processo de um teste de penetração
O procedimento dos testes de penetração pode ser dividido em:
Verificação do conceito de rede
Já na fase de preparação, um teste de penetração identifica inconsistências ou vulnerabilidades específicas na conceção da rede ou dos seus componentes individuais. O facto de, por exemplo, as aplicações terem sido configuradas com direitos de acesso diferentes irá gerar complicações rapidamente e representar um risco de segurança para toda a rede, mesmo que esta e os programas individuais alojados estejam devidamente protegidos. Alguns destes casos podem ser esclarecidos preliminarmente, enquanto outros só são verificáveis através de um teste prático.
Teste das medidas de fortificação
O pilar de uma rede informática corporativa segura é que os sistemas envolvidos estejam o mais bem protegidos possível. Em parte, o teste de penetração também consiste em verificar a eficácia das medidas de reforço de segurança aplicadas. Isto implica que tanto o software instalado como o sistema operativo, os serviços do sistema e as aplicações utilizadas pelo utilizador devem ser atualizados continuamente. Caso sejam utilizadas versões antigas para algumas aplicações por questões de compatibilidade, será necessário recorrer a outros meios de proteção.
Além disso, os requisitos de acesso e autenticação desempenham um papel importante nos sistemas e programas individuais. Neste caso, o teste de penetração aborda temas como:
- os direitos de acesso
- a utilização de palavras-passe e a encriptação
- a utilização das interfaces existentes e das portas abertas
- a utilização de instrumentos reguladores, como, por exemplo, o firewall
Pesquisa de vulnerabilidades conhecidas
Em geral, identificar as vulnerabilidades de um software não demora muito tempo, uma vez que, na maioria dos casos, os pentesters estão familiarizados com os pontos fracos dos sistemas em teste. Estes conseguem identificar rapidamente quais as aplicações que representam um risco para a segurança, graças às suas análises sobre o nível de fortificação dos componentes das redes e sobre o estado das suas atualizações e versões. Caso seja necessário examinar muitos sistemas num curto período de tempo, vale a pena utilizar scanners de vulnerabilidades, embora, por vezes, estes possam apresentar resultados imprecisos.
O uso seletivo de exploits
A certeza de que as vulnerabilidades encontradas também podem ser exploradas só é alcançada se o pentester utilizar o exploit adequado. Os exploits são sequências de comandos que, geralmente, provêm de diferentes fontes na Internet e nem sempre são programados de forma segura. Assim, se for executado um destes exploits inseguros, corre-se o risco de bloquear as aplicações ou o sistema testados e, na pior das hipóteses, podem até ser sobrescritas áreas importantes da memória. Neste caso, devem ser utilizados apenas scripts provenientes de fontes fiáveis para os testes de penetração ou deve-se abster-se completamente de testar essas vulnerabilidades.
Todas as etapas e resultados dos testes de penetração devem ser registados por escrito. Desta forma, criam-se as bases ideais para o acompanhamento de cada etapa e para a avaliação final dos resultados. Em geral, pode utilizar listas de prioridades para otimizar, passo a passo, a proteção do seu sistema.
As vantagens e desvantagens dos testes de segurança complexos
As estruturas homogéneas dos grandes computadores pertencem ao passado. As atuais estruturas informáticas descentralizadas apresentam novas vulnerabilidades e falhas de funcionamento que são corrigidas, com maior ou menor rapidez, pelos fabricantes de software. Os testes de penetração oferecem, neste contexto, as seguintes vantagens:
- Analisa os sistemas com maior rigor do que uma verificação de segurança comum
- O objetivo fundamental de um teste deste tipo é verificar a interação entre os componentes individuais
- Se recorrer a um pentester externo, obterá um ponto de vista adicional e uma perspetiva diferente sobre o conceito de segurança subjacente
- Os pentesters profissionais têm formação específica e agem de forma semelhante à de um atacante
No entanto, o teste de penetração, associado especialmente à colaboração com um auditor externo, também apresenta algumas desvantagens:
- O testador externo terá acesso à sua rede interna durante a execução do teste
- Existe sempre a possibilidade de o teste de penetração causar danos irreparáveis
- Os testes de penetração fornecem apenas uma imagem instantânea dos seus sistemas de rede e, por isso, nunca devem ser utilizados como substituto das medidas de segurança habituais
A chamada «engenharia social» não faz parte dos riscos que um teste de penetração clássico iria verificar. No entanto, muitos prestadores de serviços oferecem, como opção, a verificação das vulnerabilidades humanas nas empresas, incluindo formação especializada.