In this article
Fundamentos do teste de caixa-preta
Simulando ataques em testes de segurança
Entenda o teste de caixa-preta
Criar aplicativos de alta qualidade e seguros é um dos maiores desafios do desenvolvimento de software. Os testes de segurança ajudam a enfrentar esse desafio ao identificar possíveis falhas e vulnerabilidades no software. O teste de caixa-preta é um bom ponto de partida, pois simula como um invasor exploraria falhas em um sistema para obter acesso.
Neste artigo, vamos apresentar tudo o que você precisa saber sobre testes de caixa-preta, incluindo tipos e técnicas.
O que é teste de caixa-preta?
O teste de caixa-preta é um método de teste de software que não exige conhecimento sobre como um aplicativo foi desenvolvido. Ele usa diversas técnicas de teste para identificar vulnerabilidades ou pontos fracos no produto, simulando como um invasor do mundo real procuraria brechas exploráveis no software.

4 tipos de teste de caixa-preta
Profissionais de segurança contam com diversas técnicas de teste de caixa-preta, manuais e automatizadas, para avaliar a segurança de um sistema. Vamos conhecer alguns dos tipos mais comuns de teste de caixa-preta.
1. Análise de vulnerabilidades
Para invadir um aplicativo, o invasor precisa primeiro entender como ele funciona. A análise de vulnerabilidades é uma maneira simples de hackers conhecerem um sistema e descobrirem falhas de segurança. Mas ela também é uma parte importante da segurança de aplicativos, pois permite que você assuma o papel de um hacker e evite esse tipo de ataque.
Softwares automatizados de teste de caixa-preta, como o ZAP, costumam detectar vulnerabilidades mais fáceis de encontrar. Profissionais de segurança mais experientes podem complementar essa análise com testes manuais para identificar vulnerabilidades que passaram despercebidas pela automação. Você também pode combinar várias ferramentas para procurar vulnerabilidades, como as ferramentas disponíveis no Kali Linux ou o Chrome DevTools, para inspecionar aplicativos web.
2. Teste de intrusão
O teste de intrusão simula cenários de ataque reais, nos quais hackers tentam acessar e coletar dados para realizar ações maliciosas e comprometer o sistema.
Em geral, o teste de intrusão é realizado manualmente, com base na experiência de quem conduz o teste. Por exemplo, ele pode ser usado para verificar a API que retorna os produtos disponíveis para compra. Nesse caso, você precisaria testá-la com diferentes entradas para detectar respostas anormais ou mensagens de erro com rastreamento da pilha.
O teste de intrusão também pode ser automatizado com ferramentas de código aberto, como o Powershell Suite.
3. Descoberta da topologia de rede
A descoberta da topologia de rede ajuda a entender a configuração atual da rede do seu sistema, incluindo as conexões entre os elementos e como eles interagem. Isso ajuda a identificar elementos potencialmente vulneráveis na rede e reduzir os riscos.
4. Avaliação de riscos
Esse tipo específico de teste de segurança exige pouco conhecimento técnico sobre o sistema e está mais relacionado aos aspectos de negócio: requisitos que podem representar riscos de segurança. A avaliação de riscos pode ser aplicada nas primeiras etapas do desenvolvimento do produto, desde a concepção até o planejamento de sprints da equipe de desenvolvimento. Assim, ela pode prevenir problemas de segurança desde o início do ciclo de vida de desenvolvimento de software (SDLC).
Comece a jogar Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.
Exemplo de teste de caixa-preta
Vamos ver um exemplo de teste de caixa-preta.
Primeiro, clone este repositório no seu ambiente local: https://github.com/appsecco/dvna. Isso iniciará o aplicativo de exemplo, que contém várias vulnerabilidades exploráveis:

Para configurar o exemplo rapidamente, execute o seguinte comando:
docker run --name dvna -p 9090:9090 -d appsecco/dvna:sqliteAnálise automatizada de vulnerabilidades com o ZAP
Vamos usar o ZAP para realizar testes de caixa-preta. Para isso, você precisa instalar o ZAP na sua máquina.
Primeiro, vamos executar análises automatizadas para verificar se o site tem vulnerabilidades. Quando a análise terminar, você verá uma lista de alertas, com a descrição de cada vulnerabilidade e uma sugestão de correção.

Injeção de SQL manual
Embora a análise automatizada seja simples de executar e um bom ponto de partida para os testes de segurança, alguns aspectos exigem testes manuais. A injeção de SQL é um exemplo. Vamos executar a expressão SQL simples ' or '1'='1 na busca do aplicativo:

Aqui, mostramos como isso afetou a interface exibida para todos os usuários do sistema. Isso poderia permitir que hackers coletassem dados dos usuários ou até vendessem dados de clientes a empresas concorrentes.
O processo de teste de caixa-preta
O teste de caixa-preta verifica se há problemas de segurança exploráveis nos sistemas, sem precisar acessar o código do produto de software nem entender em detalhes como o aplicativo está sendo desenvolvido. Ao final do teste, ele fornece uma lista de falhas de segurança para análise, priorização e correção.
As próximas etapas incluem:
A equipe de desenvolvimento fica responsável por encontrar soluções para cada problema de segurança.
Os analistas de segurança verificam se as falhas foram realmente corrigidas.
A equipe de desenvolvimento executa testes de regressão para garantir que tudo esteja funcionando bem e que a correção não tenha prejudicado nenhum recurso existente.
4 técnicas de teste de caixa-preta
Os testes de segurança podem ser considerados uma arte, especialmente quando se trata de testes de caixa-preta. A regra fundamental é usar a criatividade e pensar como um hacker. Existem várias técnicas de teste de caixa-preta que você pode aplicar.
1. Fuzzing
A técnica de fuzzing testa serviços de API ou interfaces web para verificar o comportamento do sistema com entradas aleatórias ou personalizadas. Se algum comportamento incomum for detectado, a equipe de desenvolvimento deve encontrar a causa raiz e definir uma solução.
2. Teste de sintaxe
O teste de sintaxe verifica entradas inválidas, como aquelas com sintaxe incorreta. Também verifica se o sistema exibe dados confidenciais de bancos de dados ou informações de clientes que hackers poderiam explorar.
3. Teste exploratório
O teste exploratório é uma técnica comum de análise de caixa-preta que ajuda analistas de segurança a conhecer melhor o sistema, procurando problemas de segurança ocultos durante todo o processo de teste. As falhas encontradas são relatadas ao longo do processo, com sugestões de correção.
4. Análise de dados
Os testes de análise de dados verificam logs e respostas de serviços de back-end de API ou interfaces web que possam ser ilícitos ou usados para atacar o sistema ou coletar dados de usuários. Para fazer esses testes de forma adequada e eficiente, é preciso ter um bom sistema de monitoramento e depuração para coletar logs e visualizar dados. Também pode ser necessário configurar regras de alerta de segurança para receber notificações imediatas quando surgirem problemas.
Teste de caixa-preta vs. caixa-branca
Em testes de segurança, há situações em que é necessário realizar tanto testes de caixa-preta quanto de caixa-branca. Vamos conhecer as diferenças entre dois dos métodos mais usados de teste de caixa-preta e caixa-branca: o teste dinâmico de segurança de aplicativos (DAST) e o teste estático de segurança de aplicativos (SAST).
Método de caixa-preta: teste dinâmico de segurança de aplicativos (DAST)
Testa o aplicativo em execução sem acessar nem analisar seu código-fonte.
Pode ser realizado manualmente (por especialistas em segurança) ou de forma automatizada.
O aplicativo é testado externamente, sem acesso à sua estrutura interna.
É difícil garantir que toda a base de código tenha sido testada.
Em geral, é mais caro, pois o aplicativo precisa ser implantado antes da realização dos testes.
Método de caixa-branca: teste estático de segurança de aplicativos (SAST)
O SAST é usado para analisar o código-fonte.
Em geral, é executado antes da compilação do código.
Costuma ser feito com ferramentas automatizadas de SAST.
Pode analisar 100% da base de código.
Corrigir problemas de segurança custa menos porque eles são identificados mais cedo no ciclo de desenvolvimento de software.
A escolha entre testes de caixa-preta, caixa-branca ou ambos depende do seu caso de uso.
Comece a jogar Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.
Conclusão
O teste de caixa-preta é uma parte importante da segurança de aplicativos. Sem conhecer a arquitetura interna do software, esse método oferece uma visão objetiva e realista do seu aplicativo. Embora não cubra toda a base de código, quando combinado com outros métodos de teste de segurança, ele fortalece as equipes de segurança e ajuda a entregar produtos de alta qualidade e mais seguros.
Com ferramentas pensadas para desenvolvedores e inteligência de segurança de ponta, a Snyk ajuda você a entregar produtos de qualidade com mais rapidez, mantendo seu código, bibliotecas de código aberto, contêineres e infraestrutura como código seguros. Agende uma demonstração hoje mesmo.