Técnicas para Identificar a Exposição de Segredos em Pentests

Técnicas para Identificar a Exposição de Segredos em Pentests

compartilhar artigo

Identificando Segredos em Pentests

Segredos expostos acidentalmente em aplicações e repositórios são frequentemente encontrados em Pentests.

A exposição de dados tão sensíveis, como senhas, chaves de API ou tokens de sessão, pode trazer graves consequências, permitindo que ataques cibernéticos aconteçam com maior facilidade.

Neste artigo, falaremos sobre as principais técnicas e ferramentas para encontrar esses segredos durante a execução de um Pentest, com exemplos de exploração, ferramentas especializadas e práticas de remediação.

O que são “segredos”?

Na segurança ofensiva, os “segredos” (“secrets”, em inglês) são dados sensíveis e privados, que permitem acesso a diferentes partes de um sistema. Alguns exemplos são:

  • Tokens de autenticação
  • Chaves de API
  • Credenciais hardcoded
  • Certificados e chaves privadas
  • Strings de configuração
  • URLs privadas com parâmetros de acesso embutidos

Técnicas para Identificar a Exposição de Segredos em Pentests - Exemplo de Segredo

Imagem: exemplo de segredo.

Principais pontos de exposição de segredos

Alguns lugares frequentes em que os segredos costumam estar expostos:

  • Em código frontend (JavaScript/TypeScript)
  • Em builds mobile (APK/IPA)
  • Em arquivos de configuração versionados (.env, settings.py, config.php incluídos por engano no Git)
  • Em histórico de Git (comando git log -p, mesmo após a remoção)

Como encontrar Segredos em Pentests: Técnicas e Ferramentas

A partir de agora, falaremos sobre como e onde você pode identificar e contextualizar segredos.

Agregadores de vazamento de dados

Existem serviços com APIs de monitoramento de vazamento de dados, como o BreachLeaks e leak-lookup.com, que permitem buscar por domínios, e-mails e strings específicos, para verificar se já houve vazamentos públicos com segredos.

Eles procuram por:

  • Vazamentos causados por terceiros
  • Dados vendidos ou expostos na dark web
  • Dados originados de infostealers
  • Entre outros.

Ao identificar esses incidentes, o pentester pode verificar mais profundamente a situação e testar seu possível impacto.

Técnicas para Identificar a Exposição de Segredos em Pentests - Exemplo de Serviço de Monitoramento

Imagem: exemplo de serviço de monitoramento.

Mecanismos de buscas e Dorks

Também é possível utilizar buscas estruturadas para encontrar segredos por meio da indexação de arquivos de configuração, logs e scripts na internet.

Com essas ferramentas, conseguimos encontrar .env files e certificados SSL privados em repositórios públicos.

O GitHub Dorks pode ajudar nessa busca.

Exemplos de dorks:

site:github.com “AWS_SECRET_ACCESS_KEY”

inurl:.env filetype:env

inurl:”config.json” “apiKey”

intext:”—–BEGIN PRIVATE KEY—–”

Técnicas para Identificar a Exposição de Segredos em Pentests - Exemplo de segredo encontrado

Imagem: exemplo de segredo encontrado.

GitHub

Os repositórios públicos do GitHub, tanto de funcionários quanto de empresas, também devem ser analisados.

Para isso, a própria API do GitHub (ou o GitHub CLI) pode ajudar, encontrando segredos de colaboradores, forks ou projetos antigos da empresa.

Técnicas para Identificar a Exposição de Segredos em Pentests - Exemplo de segredo encontrado 2

Imagem: exemplo de segredo encontrado.

Pastes públicos

Sites de compartilhamento de texto simples também podem ser utilizados para debug ou snippets de códigos temporários, por isso, não é incomum que eles contenham segredos sem intenção de exposição.

É possível monitorar ambientes como esses, com ferramentas como Snitch ou LeakLooker.

Técnicas para Identificar a Exposição de Segredos em Pentests - Exemplo de segredo encontrado em paste público

Imagem: exemplo de segredo encontrado.

IA e Machine Learning

Ferramentas de IA e Machine Learning também têm sido utilizadas mais recentemente para detectar segredos de forma automatizada.

Os modelos são treinados para encontrar padrões e sequências ligados a dados sensíveis.

Técnicas para Identificar a Exposição de Segredos em Pentests - Exemplo de segredo encontrado em IA/LLM

Imagem: exemplo de segredo encontrado por IA/LLM.

Busca no código-fonte

Segredos também podem, acidentalmente, estarem expostos no código-fonte da aplicação, o que pode ser perigoso no caso de ameaças de origem interna ou outras vulnerabilidades.

Nesse caso, use as ferramentas do GitHub ou procure diretamente no código, com o ‘grep’, buscando por termos como:

  • access_key
  • app_secret
  • admin_key
  • private_key
  • API key
  • password
  • secret
  • token
  • Entre outros.

Técnicas para Identificar a Exposição de Segredos em Pentests - Exemplo de segredo encontrado em código-fonte

Imagem: exemplo de segredo encontrado.

Análise de apps mobile

Segredos podem estar embutidos diretamente em aplicativos móveis, principalmente se não são usados cofres de segredos no backend.

Ferramentas como APKTool e MobSF podem ajudar, assim como strings + grep para buscas manuais, e jadx para análise Java reversa.

Técnicas para Identificar a Exposição de Segredos em Pentests - Exemplo de segredo encontrado em app mobile

Imagem: exemplo de segredo encontrado em app mobile.

Respostas vindas do servidor

Os segredos também podem estar em códigos HTML, JavaScript ou páginas CSS, principalmente nos comentários.

Para identificá-los:

  • Utilize ferramentas como Burp Suite,
  • Acesse a opção ‘Target’ e, depois, ‘Engagement tools’. Use as funções ‘Find comments’ e ‘Find scripts’ para exportar os comentários e scripts.
  • Use a funcionalidade ‘BChecks’ para verificar as respostas vindas do servidor, garantindo que segredos não estão sendo expostos.

Credenciais padrão

O uso de credenciais padrão é uma ameaça severa a diversas aplicações, e pode ser usada para diferentes tipos de ataque.

Ao implementar uma ferramenta ou API sem trocar as credenciais enviadas by default pelo fornecedor, assim como outras configurações, um atacante pode se infiltrar facilmente na rede.

Alguns exemplos clássicos:

  • admin:admin
  • root:toor
  • tomcat:s3cret
  • cisco:cisco
  • ubnt:ubnt

Técnicas para Identificar a Exposição de Segredos em Pentests - Exemplo de segredo encontrado em credenciais padrão

Imagem: exemplo de credenciais padrão.

Redes internas

Simulações de ataques man in the middle são comuns em Pentests, o que pode ajudar a identificar possíveis segredos vazados em arquivos, hashes, entre outros.

Técnicas para Identificar a Exposição de Segredos em Pentests - Exemplo de segredo encontrado 3

Imagem: exemplo de segredo encontrado.

Contextualize os Segredos

É importante entender os segredos expostos, classificando-os conforme a severidade da exposição, o possível impacto e os próximos passos necessários, inclusive na priorização para mitigação.

Considere, principalmente, os seguintes itens:

  • Sensibilidade: quão crítico esse segredo é para a empresa?
  • Potencial de impacto: onde o segredo foi exposto? Na Dark Web ou nos sistemas da empresa? Qual é o potencial de exploração e impacto?
  • Causa: o que levou à exposição?

Boas práticas de hardening contra exposição de segredos

Para evitar a exposição de segredos, algumas práticas de hardening podem ajudar, como:

  • Usar secret managers, como AWS Secrets Manager, HashiCorp Vault e Azure Key Vault.
  • Utilizar scanners, como o plugin do Gitleaks ou do TruffleHog, em pipelines CI/CD.
  • Trocar todos os segredos vazados ou encontrados imediatamente.
  • Não utilizar segredos reais em ambientes de staging e dev.

Referências

Burp Suite

MobSF

APKTool

Leak Lookup

GitHub Dorks

Secrets Management Cheat Sheet | OWASP

HashiCorp Vault

Azure Key Vault

AWS Secrets Manager

TruffleHog

Cracking the Code: A Comprehensive Guide to Secrets Detection | Cycode

Exposed Secrets are Everywhere. Here’s How to Tackle Them | The Hacker News

How to Detect Secrets? Tools and Techniques | Vaadata

Gostou deste artigo?

Divulgue!

Foto de Júlia Valim

Júlia Valim

Sumário
plugins premium WordPress