Quer entender melhor os diferentes tipos de pentests disponíveis no mercado?
Neste artigo vamos abordar cada tipo de teste de intrusão, e explicar em que omento e contexto eles são recomendados.
Prefere ouvir a versão em áudio deste artigo? Utilize o player abaixo:
O que precisamos ter em mente é que há sim diferenças e momentos mais indicados para cada um destes testes, e eles devem ser observados para termos um melhor retorno em seus resultados.
Se você tem dúvidas sobre o que vem a ser e quando usar cada um dos tipos de pentests, confira o guia que preparamos a seguir.
Um pouco de contexto sobre os diferentes tipos de pentests
Para começarmos a falar sobre os tipos de pentests, precisamos entender primeiro o contexto dos testes e onde eles se encaixam dentro de um processo de desenvolvimento seguro.
Quando falamos de desenvolvimento seguro, uma das principais características é que é preciso ter um foco em segurança de código em cada uma das etapas do ciclo de desenvolvimento — e não somente no final.
Ou seja, durante o processo de desenvolvimento, pensamos em validar a segurança da aplicação em várias etapas. Esse método tem como objetivo encontrar problemas no início de uma ação.
No entanto, em se tratando de tipos de pentests, o cenário já muda um pouco: ele tem seu momento específico para ser aplicado. Além disso, deve ser realizado com atenção para que seja realizado da forma correta e no momento certo.
Dentro do processo de desenvolvimento seguro, esperamos que os tipos de pentests sejam realizados em dois momento básicos. O primeiro momento é na fase de testes, onde buscamos identificar vulnerabilidades em tempo de execução.
E como ainda estamos dentro do processo de desenvolvimento, podemos dizer que esse teste pode ser um pouco mais controlado.
Podemos ainda realizar testes periódicos em nossas aplicações, que já estão ativas, buscando vulnerabilidades e tendo como foco a realização de um ataque mais próximo do real.
Embora os dois testes possam ser considerados muito parecidos, algumas coisas se diferenciam, como por exemplo o foco e a profundidade da análise. Vamos ver um pouco mais sobre isso a seguir.
Quais são as fases de um Teste de Intrusão
Por mais diferentes que sejam os tipos de pentests e seus objetivos, há algumas etapas que podem ser comuns a todos os testes.
Podemos colocar como sendo 5 etapas básicas, que vamos descrever um pouco melhor mais abaixo.
1. Reconhendo o alvo
A primeira fase é a de reconhecimento, onde o atacante busca descobrir informações que podem ser usadas para a realização do ataque ao alvo. Neste momento o atacante buscará entender e saber quais componentes são importantes e como eles podem ser explorados.
Nesta fase ainda não temos ações efetivas de ataques, sendo predominante a busca por informações relevantes que possam facilitar a intrusão. Por exemplo, se há alguma biblioteca de código aberto sendo usada, quais podem ser suas vulnerabilidades?
Portanto, esta fase é onde se entende o contexto geral do alvo.
2. Escaneando o alvo
Já nessa segunda fase, o atacante busca por mais conhecimento usando técnicas de scan e uso de uma série de ferramentas para conseguir tais informações.
Neste momento, ferramentas como nmap são amplamente usadas para mapear o alvo.
3. Acessando o alvo
Com as informações e mapeamento concluídos, é hora de buscar ganhar acesso ao alvo. E esta é a terceira etapa do processo de pentest.
Então, usando as informações que foram conseguidas nas fases anteriores, o atacante busca identificar formas de realizar o ataque e conseguir o seu acesso.
Estas tentativas de acesso podem ser por exemplo no envio de payloads para explorar alguma fragilidades que foi identificada anteriormente.
Para aqueles que não tem familiaridade com o termo, payload é conjunto de dados especialmente criado para explorar uma vulnerabilidade.
4. Mantendo o caminho livre
Na quarta etapa já temos o acesso, é hora de manter o acesso, pois cada sistema pode ter camadas de proteções que podem impedir ou mesmo bloquear a continuidade do acesso.
De forma geral, manter o acesso pode significar escolher comprometer um processo sendo executado que dificilmente será desligado, ou mesmo incluir no código da aplicação alguma porta que possa permitir o acesso sempre que for necessário.
Esta etapa pode ser realizada de diferentes maneiras em cada ataque, isso vai depender do momento e do tipo de aplicação que está sendo testada. E é por isso que não se deve manter apenas uma camada de proteção no software para garantir sua segurança.
5. Eliminando as pegadas
Na quinta e última etapa, precisamos encobrir nossos rastros. Portanto, nessa etapa o atacante vai buscar esconder de analistas e mesmo de ferramentas seu rastro dentro do sistema ou da aplicação.
Em um ataque real essa fase tem como objetivo retirar qualquer evidência que possa identificar que o sistema foi comprometido. E isso pode ser para afastar uma possível culpabilidade do atacante ou mesmo para manter e garantir o acesso ao sistema.
Existem várias metodologias para estruturar um teste de intrusão. Em nossa análise, uma das melhores é a entregue pela OWASP em seu OWASP – Web Application Penetration Test.
Se entendemos essas cinco etapas, que podem sofrer variações em decorrência dos tipos de testes, podemos seguir para compreender quais são esses tipos e quais as características básicas de cada um.
Mas antes de seguirmos com a descrição mais detalhada de cada um dos testes, precisamos nos lembrar que cada um deles possui um foco específico e que são muitas vezes realizados por equipes diferentes e com conhecimentos diferentes.
Teste de intrusão White Box
Um dos testes mais básicos que podem ser executados em uma aplicação, ou mesmo em uma estrutura de rede, é o teste chamado de White Box.
Um teste White Box realizado para uma aplicação geralmente é executado por uma equipe de desenvolvedores, e tem como objetivo identificar as vulnerabilidades que podem ser exploradas em caso de vazamento de informações.
Isso porque ao executarmos um ataque de intrusão do tipo White Box, todas as informações sobre o sistema são conhecidas, e isso torna o ataque bem mais profundo.
E como os ataques são realizados por desenvolvedores, e estes tem todas as informações possíveis sobre a aplicação, é de se esperar que a avaliação sobre a segurança da aplicação seja bem mais rigorosa.
De forma geral, este tipo de teste é realizado ainda com a aplicação sendo desenvolvida, mais precisamente na fase de testes da aplicação.
Teste de Intrusão como parte do Ciclo de Desenvolvimento
Dentro do processo de DevSecOps, como mostrado na imagem abaixo, a realização de testes de intrusão é um componente importante para garantir a segurança da aplicação.
Dentro deste fluxo de desenvolvimento teríamos a realização de um teste de intrusão: nesse caso, White Box, que acontece na fase de verificação (verify).
Como falamos, pelo fato de ter total informação sobre a estrutura interna da aplicação, os profissionais que realizam o teste podem buscar por fragilidades de um modo mais profundo.
Esta oportunidade permite aos profissionais a possibilidade de identificar e demonstrar bugs, falhas e vulnerabilidades da aplicação.
Caso opte por entregar este tipo de teste a uma empresa externa, um dos maiores pontos que poderá impactar no processo é a comunicação.
A empresa que realiza o teste deve ser confiável: não somente em questão de apropriação de conteúdos ou informação, mas confiável quanto ao conhecimento e a experiência de seus profissionais.
Como já vimos na imagem acima, esse tipo de teste é altamente integrável ao processo de SDLC (Software Development LifeCycle), e quando ele é de fato vinculado a esteira de desenvolvimento, oferece como produto final uma série de vantagens em segurança.
Teste de intrusão Gray Box
Um teste realizado com características de Gray Box é um teste onde o atacante pode ter acesso às informações de forma parcial, sendo necessário explorar a partir delas para conseguir mais dados e realizar o ataque.
Este tipo de teste fica entre os testes White Box e Black Box, portanto pode ser considerado um meio termo na execução dos testes.
Geralmente, o cliente fornece um escopo detalhado do que precisa ser testado, para garantir que os profissionais permaneçam nos limites do que ele deseja testar.
Testes de Gray Box são os testes mais comuns em aplicações Web, a grande maioria dos testes realizados hoje se enquadra nessa categoria.
Isso se dá pelo grau de comunicação existente entre a empresa que realiza o testes e a que contrata, pois em alguns casos há uma troca de informações para elucidar sobre uma dúvida de um processo no escopo do teste.
Para executar esse teste, os casos de teste podem ser projetados com base no algoritmo, conhecimento de arquiteturas, estados internos ou outras descrições avançadas do comportamento do programa.
Então, de forma geral, podemos dizer que o Gray Box é uma combinação entre os outros dois tipos de testes, e pode somar cada vez mais com a melhoria das proteções e dos controles de segurança da aplicação.
Teste de intrusão Black Box
Os testes de Black Box, como já podemos imaginar, são testes realizados quase sem informações. Isso porque neles, o atacante tem pouca ou nenhuma informação sobre o alvo, além do nome.
Por isso, esse tipo de teste é bem mais comum quando o objetivo é simular um ataque real feito por um atacante. Neste caso, o objetivo é realmente testar as medidas e controles de proteção.
Além disso, neste tipo de teste geralmente o atacante vai gastar muito mais tempo que nos tipos anteriores. Isso porque o tempo de preparo e planejamento devem ser maiores e mais cuidadosos.
Em um passado recente, os testes Black Box eram muito usados para mostrar às pessoas os riscos que as aplicações estavam expostas por não receberem os devidos cuidados.
Portanto, o escopo deve ser muito bem definido, e o tempo de execução deve ser acompanhado sempre pela empresa que contrata o teste. Afinal, sempre há riscos envolvidos tanto para a estrutura quanto para outras aplicações que podem não fazer parte do escopo inicial do teste.
“Black” box, mas com resultados bem visíveis
No entanto, por causa do termo “black”, algumas pessoas se confundem e atribuem ao termo uma visão mais limitada, onde acabam aparecendo poucas coisas no resultado final.
Mas isso não é verdade, pois este tipo de teste deve ser sempre feito por profissionais experientes e com profundo conhecimento de desenvolvimento. E, além disso, que possam usar de toda a sua criatividade para realizar testes.
Esse pode, inclusive, ser um dos testes mais informativos por qual uma aplicação pode passar.
Assim como os tipos anteriores, o teste de intrusão do tipo Black Box pode e deve ser inserido no processo de desenvolvimento e, como falamos, dentro do seu próprio momento. Ou seja, um pouco antes do real lançamento do produto final.
E caso sua aplicação já esteja em produção, também é possível realizar um teste Black Box — inclusive é até recomendável.
O que concluímos?
Depois de termos entendido os vários tipos de pentests, e em que situações os testes de intrusão devem ser realizados, podemos compreender que não há um teste mais importante que o outro.
Quando pensamos em diferentes tipos de pentests, temos que considerar quais são o objetivo, o cenário e os resultados que queremos demonstrar com os testes. Sendo assim, cada testes tem suas particularidades e importância.
Portanto, o segredo é perceber qual o melhor teste a ser executado em determinado momento. Essa percepção vem com a experiência e com o tempo de observação de maturidade de um processo de desenvolvimento.
Não há finalidade em usar um teste mais profundo em uma aplicação que sabidamente está vulnerável, assim como não há finalidade em realizar um teste mais superficial em uma aplicação crítica e que estará exposta a todos os riscos externos.
Então, o que importa quando se escolhe fazer cada um dos testes é que o responsável pela execução dele tenha a experiência necessária para obter um bom resultado. Temos que ter claro em nosso objetivo que, ao realizarmos esses testes, buscamos a certeza da proteção de nossa aplicação.
Em poucas palavras: entregar uma Ferrari a quem não sabe dirigir não é uma boa escolha.
Portanto, temos que ter a percepção e o conhecimento necessários para adequar o teste ao momento, e nenhum pode inviabilizar a realização do outro.
Ou seja: cada um deles têm o seu momento!
O que mais posso fazer, além do Pentest?
Mas é importante lembrar que o Pentest em si não garante a segurança da Aplicação: ele é uma fotografia de como está a segurança hoje. Ou seja, se houver um deploy, ele já se encontra desatualizado. Então o Pentest é um dos procedimentos de segurança que se deve adotar para tornar a aplicação segura.
Têm sua importância também os testes do tipo SAST e DAST, Secure Code Review, além de treinamentos de segurança. Dessa forma, a sua poderá passar a construir código de forma cada vez mais segura, criando a cultura da segurança um hábito desde a raiz.
