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
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.
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—–”
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.
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.
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.
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.
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.
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
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.
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
Secrets Management Cheat Sheet | OWASP
Cracking the Code: A Comprehensive Guide to Secrets Detection | Cycode
Exposed Secrets are Everywhere. Here’s How to Tackle Them | The Hacker News