Pentest Automatizado x Manual

Foto de Júlia Valim

Júlia Valim

Pentest Automatizado x Manual: qual é a diferença?

O que é um Pentest Automatizado?

Um “pentest automatizado”, na verdade, não é um pentest, mas uma ferramenta de scan de vulnerabilidade configurada com o alvo definido. Essa ferramenta irá, basicamente, enviar diversas requisições ao alvo, buscando detectar vulnerabilidades presentes, ou seja, irá fazer port scanning, requisições com métodos diferentes, simular exploits, entre outros tipos de testes.

Esse comportamento geralmente deixa o tráfego mais pesado e pode até acionar gatilhos de segurança como firewalls.

As soluções mais utilizadas atualmente são:

  • Nessus – Comercial, porém com versão grátis com funções limitadas
  • OpenVAS – OpenSource
  • InsightVM – Comercial, porém com 30 dias de avaliação gratuita

Para aplicações web são comumente utilizados:

  • Burp Suite – Possui a versão Community (free) e Pro (paga)
  • Acunetix – Comercial, porém com versão grátis com funções limitadas
  • Akto – Comercial, porém com 14 dias de avaliação gratuita
  • Invicti – Comercial
  • Qualys – Comercial

Esse tipo de abordagem é bem conhecido no tópico de segurança, podendo trazer uma falsa impressão de que a empresa está segura, porém, mais a frente, iremos entender por que ela não consegue medir a real maturidade de segurança de sua empresa.

 

O que é Pentest Manual?

Quando falamos do pentest propriamente, estamos falando de um trabalho manual, aliado a algumas ferramentas automatizadas de apoio. Ou seja, um trabalho de busca de informações sobre o alvo, entendimento do funcionamento e lógica da aplicação, ser mais stealth, identificação de tecnologias, busca por vulnerabilidades, exploração, pós-exploração e mais outros passos que podem variar conforme o alvo.

Estamos falando de um serviço que envolve muito mais do que apenas rodar um scan de vulnerabilidades ou apenas de ferramentas automatizadas que fazem essas buscas.

 

Pentest Automatizado x Pentest Manual

Figura: Cyber Kill Chain | Fonte: Lockheed Martin.

 

Qual é a diferença entre Pentest Automatizado e Pentest Manual (Scan)?

É claro que é necessário o uso de algumas ferramentas automatizadas para teste específicos, como injeção de comandos SQL (SQL Injection), busca por portas abertas, brute force, entre outros. Porém, o pentester não se prende somente a isso, visto que essas ferramentas têm o intuito de economizar tempo e facilitar as explorações, a fim de permitir a ele dedicar mais tempo para a identificação ou exploração de outros tipos de falhas presentes.

Apesar disso, o pentest automatizado, realizado por ferramentas de scan automáticas, pulam diversas etapas de um pentest, trazendo diversos falsos positivos ao cliente, não validando as vulnerabilidades através da tentativa de exploração, deixando o trafégo mais pesado, além dos diversos ruídos causados a aplicação.

Outro quesito importante que acaba passando por fora dos testes automáticos são falhas lógicas, estas vulnerabilidades são encontradas apenas em pentests manuais, devido que apenas a expertise do pentester pode identificar isto, scans automatizados possuem parâmetros, endpoints e sequências definidas, impossibilitando de ir além do que é programado para fazer.

Nos dias de hoje, não há como realizar um bom pentest sem o uso de algumas ferramentas automatizadas, como Nmap, sqlmap, GoBuster, etc.

Como citado anteriormente, a escalabilidade, velocidade e tempo que proporcionam permitem o teste de mais itens em menos tempo, porém para o máximo aproveitamento, deve-se sempre contar com a expertise de um pentester.

A criação ou customização de ferramentas é muito válida nesse contexto, pois cada alvo tem suas particularidades, considerando que nem sempre uma ferramenta já criada terá o mesmo desempenho em pentests diferentes. Em alguns casos, é possível extrair mais da ferramenta, sendo necessário até a criação de uma, a fim de testar de maneira mais rápida e adequada às singularidades daquele alvo.

 

Ferramenta sqlmap

Figura: Ferramenta sqlmap

 

Para demonstrar a real diferença entre eles, a seguir é possível visualizar a diferença de vulnerabilidades encontradas entre ambos em um cenário real de pentest realizado pela Vantico.

Inicialmente, o pentest automatizado (scan) se mostrou ser bem mais rápido em encontrar vulnerabilidades, porém também retornou diversas “possíveis” vulnerabilidades que deveriam ser validadas antes. Em sua maioria representavam falsos positivos, como pode ser visto abaixo:

 

Scan Burp Suite

Figura: Scan Burp Suite

 

Vulnerabilidades encontradas

 

Vulnerabilidades encontradas

Figura: Vulnerabilidades encontradas

 

Podemos observar que a vulnerabilidade de maior severidade encontrada foi média, sendo a fraqueza de certificado não confiável. Também é possível visualizar que foram identificadas várias informativas e baixas, como ausência de cabeçalho, potencial clickjacking, método TRACE habilitado, e-mails divulgados na resposta, listagem de diretórios, entre outras.

Partindo para o pentest manual, foi possível identificar e validar as mesmas vulnerabilidades, porém levando mais tempo até serem descobertas.

Nesse pentest, foram encontrados ao total 31 vulnerabilidades, sendo 4 críticas, 2 altas, 12 médias, 5 baixas e 8 informativas. As principais falhas encontradas foram: “Account Takeover via inspeção de código-fonte”, “Possibilidade de manipular comandos SQL na aplicação possibilita execução remota de código (RCE)”, “Inclusão de arquivos locais (LFI)”, “Ausência de política de senhas“, ”Divulgação de dados pessoais via listagem de diretórios”, entre outras.

 

Porcentagem de vulnerabilidades

 

Um ponto interessante foi que a falha crítica de Local File Inclusion (LFI) não havia sido identificada anteriormente, sendo que agora foi identificada e explorada. Além disso, essa falha permitiu que o pentester fosse mais além, identificando informações sensíveis, enumeração total do host da aplicação, leitura de código-fonte. Ou seja, foi gerado um valor atribuído maior a fragilidade. Sendo assim, mesmo que o scan automatizado identificasse o LFI, ele seria incapaz de ir além da identificação, agregando menos valor a vulnerabilidade.

A seguir, podemos visualizar a vulnerabilidade, descoberta por meio da tentativa de chamada de arquivos presente no host em uma função vulnerável a LFI.

 

Inclusão de arquivos locais (LFI)

 

Função vulnerável identificada

Figura: Função vulnerável identificada

 

Vulnerabilidade confirmada

Figura: Vulnerabilidade confirmada

 

Exposição de credenciais

Figura: Exposição de credenciais

 

A seguir, confira as evidências sobre algumas das vulnerabilidades identificadas.

 

Ausência de política de senhas

 

Ausência de política de vulnerabilidades

Figura: Vulnerabilidade “Ausência de política de senhas”

 

Essa vulnerabilidade foi identificada por meio de um campo de registro, validando que não havia uma política de senhas, sendo possível inscrever-se com senhas de 1 caractere. Dessa forma, o trabalho de password spraying ficou mais simples, pois sem essa política os usuários tendem a usar senhas mais frágeis. Realizando o password spraying, diversas contas com senhas fracas foram identificadas, como na evidência acima, com várias contas com a senha definida como “12456”.

 

Account Takeover via inspeção de código-fonte

 

Vulnerabilidade “Account Takeover via inspeção de código fonte”

Figura: Vulnerabilidade “Account Takeover via inspeção de código-fonte”

 

Nessa vulnerabilidade, foi identificado em um endpoint da aplicação que, ao inspecionar o código-fonte, continha diversas URLs conectadas à conta dos usuários em questão. Entretanto, ao acessar, o painel do usuário era exibido, mas com permissões limitadas. Para burlar isso, o campo de alterar senha estava exposto, permitindo alterar a senha ao acessar uma conta e, dessa maneira, obter controle total.

 

Divulgação de dados pessoais por listagem de diretórios

 

Vulnerabilidade “Divulgação de dados pessoais por listagem de diretórios”

Figura: Vulnerabilidade “Divulgação de dados pessoais por listagem de diretórios”

 

Essa falha havia sido identificada primeiramente pela ferramenta de scan. Entretanto, somente alguns endpoints foram identificados. Ao se aprofundar mais na vulnerabilidade, outros pontos da aplicação com informações pessoais de usuários sendo listadas foram identificados. A evidência acima demonstra um diretório com imagens de todos os usuários presentes, exposta publicamente na internet.

 

Conclusão

Dessa maneira, podemos concluir que o pentest manual, apesar de levar mais tempo, traz resultados mais assertivos sobre a maturidade de segurança da empresa, testando falhas lógicas que não são validadas em um pentest automatizado (scan), confirmando ainda mais a eficiência e assertividade do pentest manual.

Para um pentest eficiente, com resultados concretos e confiáveis, conte com a Vantico, pioneira em Pentest as a Service no Brasil. Nossos testers são altamente experientes e especializados, executando cada teste de forma 100% manual, com o apoio das melhores ferramentas. Além disso, nossa plataforma permite que você acompanhe os resultados em tempo real, exportando relatórios quando desejar e solicitando novos testes a qualquer momento, com total autonomia.

Clique aqui para conhecer nosso trabalho.

Clique e siga nossas redes sociais.

 

Créditos

Arthur Martins

 

Referências

Manual Pentesting Versus automated penetration testing Explained | Breachlock

Manual Versus Automated Penetration Testing | Cobalt

Cyber Kill Chain | Lockheed Martin

Nmap.org

SQLMap

Vulnerability Management | Rapid7

OpenVAS

Burp Suite’s web vulnerability scanner | PortSwigger

veja também

Outros conteúdos sobre Segurança Cibernética

plugins premium WordPress