Pentest: A melhor forma de identificar vulnerabilidades de segurança
Pentest: A melhor forma de identificar vulnerabilidades de segurança
Você já parou para pensar como anda a segurança do seu negócio? Faz ideia de quais informações sigilosas da sua empresa podem ser acessadas via uma simples aplicação Web vulnerável e exposta para a internet? Infelizmente isso é uma realidade e pode estar acontecendo agora.
Há uma forma de descobrir se as informações da sua organização estão vulneráveis em um ambiente, em uma rede ou determinada aplicação, bem como a extensão em que as mesmas podem ser exploradas por indivíduos maliciosos. É o chamado Teste de Vulnerabilidades (do inglês “Penetration Testing” ou “Pentest”), também traduzido como “Teste de Penetração”.
O Pentest funciona como um ataque real, mas controlado, ou seja, não prejudica serviços, sistemas ou servidores daquele ambiente. São utilizados para identificar vulnerabilidades que possibilitam a um atacante externo (internet) ou interno (imagine nesse caso um funcionário mal-intencionado) invadirem o seu ambiente, bem como o grau de dificuldade para tanto.
Mas quem realiza os Pentest?
Esses testes são realizados por profissionais denominados “Ethical Hackers”, que são profissionais com altíssimos conhecimentos em TI e que possuem habilidades específicas em alguma “classe” dentro dessa área, como programação e segurança. Para a realização desse trabalho são utilizadas um conjunto de técnicas e ferramentas, podendo ser ferramentas comerciais e ferramentas desenvolvidas pelos próprios profissionais, para auxilia-los no dia-a-dia. Alguns exemplos: http://sectools.org/tag/vuln-scanners/ e http://sectools.org/tag/web-scanners/.
O Pentest é ideal para determinar a postura de segurança adotada pela empresa e para identificar de forma objetiva e segura os potenciais problemas em processos e ativos críticos de negócios, além das falhas de um determinado sistema. A empresa deve participar de todo o processo, sendo informada sobre as etapas, metodologia e parâmetros utilizados para identificação das vulnerabilidades e também receber os entregáveis após a realização do Pentest, como relatórios técnicos detalhados das vulnerabilidades encontradas, qual a criticidade de cada uma, o impacto que ela causa e um plano de ação para corrigi-las, baseando-se em fatos.
Pentest na prática
Como qualquer outro serviço, foram criados (por motivos comerciais) diversos tipos de pentest, seguem alguns exemplos:
- Pentest de aplicação Web;
- Pentest de Wifi;
- Pentest para Mobile;
- Pentest para redes, servidores e por aí vai…
Dentro de casa, prefiro dividir os pentest em 3 frentes já que acredito que realmente os esforços e perfis profissionais são diferentes para cada um, sendo:
- Pentest Externo
- Englobando aplicações Web (PHP, .Net, Asp simples, Java e etc), serviços (protocolos) e servidores acessíveis pela internet;
- Pentest Interno
- Tudo aquilo dentro de uma rede (servers, protocolos, dispositivos de wifi e etc), com o intuito de se passar por um funcionário mal-intencionado com o objetivo de escalar privilégios laterais ou horizontais.
- Pentest Mobile
- Com as fintechs cada vez mais presentes no nosso dia-a-dia, exploração de vulnerabilidades através de aplicativos mobile se tornou algo corriqueiro.
E para esses pentest são utilizadas metodologias, de acordo com a necessidade de cada cliente. Entre as mais conhecidas estão:
- Open Source Security Testing Methodology Manual (“OSSTMM”)
- The National Institute of Standards and Technology (“NIST”) Special Publication 800-115
- OWASP Testing Guide
- Penetration Testing Execution Standard
- Penetration Testing Framework
E por último a forma de “reconhecimento” do alvo, sendo:
- Blackbox
- Neste caso a equipe de pentest não possui nenhum tipo de conhecimento sobre o alvo em si, no máximo tem informações sobre o endereço da URL que será testada ou o range de IP. Muito recomendado para entender quais informações da sua empresa podem ser obtidas via internet, qual a reação do seu time quando o ataque iniciar e também medir o nível de capacidade da empresa contratada.
- Whitebox
- Todas as informações necessárias para a realização do trabalho são enviadas à equipe de pentesters, desde uma listagem de arquivos e pastas da aplicação até as credenciais de acesso para uma possível tentativa de escalação de privilégios. Geralmente esse trabalho é recomendado quando a empresa já conhece o ambiente e a ideia é garantir que nada passará em branco.
- Greybox
- Esse conceito está entre blackbox e whitebox, apenas algumas informações essenciais são passadas a equipe e outras para auxiliar o trabalho. Um exemplo seria a listagem de arquivos e diretórios de uma determinada aplicação para garantir que todo o ambiente será testado.
E o mais importante de um trabalho de pentest, na minha opinião, é a forma de apresentá-lo. Os relatórios entregues por empresas que realizam esse tipo de trabalho precisam se adequar a visão executiva e a visão técnica, um CFO ou CEO que tem a área de riscos e/ou TI embaixo da sua estrutura não precisam entender o que é um “SQL Injection”, eles precisam saber quais são os atuais riscos do seu negócio, possíveis impactos causados e forma de remediação.
Já o relatório técnico precisa ser extremamente detalhado, informando quais testes foram realizados, tempo de duração, quantidades de vulnerabilidades encontradas dividindo por níveis de criticidade (alto, médio, baixo e informativo), detalhar cada vulnerabilidade informando aonde ela foi encontrada, parâmetros utilizados para a exploração, nível de impacto, classificação de CVE e CVSS, evidências da exploração para evitar qualquer tipo de falso positivo e por fim um plano de ação de cada falha para mitigá-las.
Bom, espero ter clareado a mente daqueles que procuram por esse tipo de trabalho, mesmo que tenha sido através de uma forma resumida. Se ficou com alguma dúvida ou até comentários para acrescentar, estou à disposição.