WIKI / FIELD NOTE

Leaks y exposición de credenciales

Identificación responsable de filtraciones y credenciales expuestas relacionadas con el alcance.

Guía rápida para detectar filtraciones relacionadas con una organización y gestionar la evidencia de forma segura. Utiliza solo fuentes legales, públicas o proporcionadas expresamente para la operación. No pruebes credenciales ni descargues o redistribuyas datasets ilícitos.

Flujo rápido

  1. Definir dominios, marcas, filiales y repositorios incluidos en el alcance.
  2. Consultar servicios de notificación de brechas y fuentes OSINT autorizadas.
  3. Buscar correos, dominios, tokens y fragmentos de código expuestos públicamente.
  4. Clasificar cada hallazgo sin autenticar ni verificar el secreto contra servicios.
  5. Minimizar y redactar la evidencia.
  6. Correlacionar fuente, fecha, contexto y posible vigencia.
  7. Escalar inmediatamente credenciales o claves aparentemente activas.
Tipo | Identificador redactado | Fuente | Fecha filtración | Fecha hallazgo | Contexto | Vigencia | Confianza | Estado

Credential leaks

Una exposición puede incluir contraseñas, hashes, cookies, claves API, tokens OAuth, claves privadas o cadenas de conexión.

Clasificación recomendada:

  • Publicada: visible en una fuente pública legítima.
  • Notificada: comunicada por un proveedor de brechas.
  • Histórica: asociada a un incidente antiguo.
  • Posiblemente activa: formato y contexto coherentes, sin validación técnica.
  • Revocada por el propietario: confirmación recibida del equipo responsable.
  • Falso positivo: ejemplo, placeholder o dato ajeno al objetivo.

No marcar una credencial como válida mediante login, API, SMTP, VPN o recuperación de contraseña.

Password dumps

Los dumps pueden contener contraseñas en claro, hashes y datos personales de múltiples víctimas.

Tratamiento seguro:

  1. No buscar ni descargar dumps de procedencia ilícita.
  2. Trabajar solo con datasets autorizados y almacenados en un entorno controlado.
  3. Filtrar por dominios del alcance sin imprimir contraseñas.
  4. Conservar únicamente identificadores redactados o hashes de correlación.
  5. Eliminar copias temporales conforme al plan de manejo de datos.
# Sobre un dataset entregado legalmente: contar coincidencias sin mostrar líneas
rg -i -c '@example\.com' authorized-dataset.txt
 
# Extraer solo emails, omitiendo cualquier campo posterior
rg -io '[A-Z0-9._%+-]+@example\.com' authorized-dataset.txt \
  | tr '[:upper:]' '[:lower:]' | sort -u > affected-emails.txt

Evitar comandos que vuelquen líneas completas porque pueden incluir contraseñas o datos ajenos al alcance.

Combos

Las combo lists suelen mezclar pares usuario:contraseña procedentes de varias filtraciones, reutilización o datos inventados.

No deben utilizarse para autenticación. Si el cliente entrega una lista para análisis:

  • Aislarla y restringir permisos.
  • Extraer únicamente cuentas del dominio autorizado.
  • No conservar contraseñas en resultados.
  • Deduplicar por email y fuente.
  • Tratar la fecha y procedencia como no verificadas.
  • Recomendar rotación, revocación de sesiones y revisión de MFA según el contexto.

La aparición en una combo no demuestra que la contraseña pertenezca al servicio corporativo ni que siga vigente.

Paste sites

Los paste sites pueden contener logs, configuraciones, código, listas de usuarios y secretos.

Búsquedas pasivas:

"example.com" (paste OR dump OR leak)
"@example.com" site:pastebin.com
"api.example.com" site:pastebin.com
"Example Corp" ("BEGIN PRIVATE KEY" OR "client_secret")

Guardar URL, título, fecha, autor visible y un extracto redactado. No replicar el contenido completo ni acceder a enlaces que requieran credenciales o software no confiable.

Breach datasets

Priorizar servicios que proporcionan notificación o metadatos de brechas sin distribuir contraseñas.

Datos útiles:

  • Nombre y dominio de la brecha.
  • Fecha del incidente y fecha de publicación.
  • Tipos de datos afectados.
  • Número aproximado de cuentas.
  • Estado de verificación de la fuente.
  • Cuentas corporativas afectadas cuando el servicio lo permita legalmente.

Separar una brecha del proveedor corporativo de una cuenta de empleado expuesta en un servicio externo.

Emails comprometidos

Para cada email afectado registrar únicamente lo necesario:

Email | Empresa actual | Brecha | Fecha | Tipos de datos | Fuente | Confianza | Notificado | Estado

Normalizar mayúsculas, aliases y dominios históricos. Distinguir:

  • Buzón corporativo actual.
  • Cuenta histórica de un antiguo empleado.
  • Alias genérico.
  • Dirección inferida que no está confirmada.
  • Cuenta corporativa usada en un servicio externo.

No comprobar si la cuenta existe mediante portales de autenticación.

API keys

Buscar claves en código público, JavaScript, documentación, colecciones Postman y contenido indexado.

# Nombres de variables y cabeceras
rg -n -i 'api[_-]?key|apikey|x-api-key|subscription[_-]?key' .
 
# Escaneo local con redacción
gitleaks dir . --redact --report-format json --report-path gitleaks.json

Una API key puede ser un identificador público con restricciones. Clasificar proveedor, contexto y exposición sin invocar la API.

Tokens

rg -n -i 'access[_-]?token|refresh[_-]?token|auth[_-]?token|bearer|client[_-]?secret' .
 
# TruffleHog sin verificación activa
trufflehog filesystem . --no-verification --json > trufflehog.json

No decodificar ni publicar contenido sensible innecesario. En tokens estructurados, registrar solo tipo, emisor aparente y un fingerprint irreversible cuando sea suficiente.

# Fingerprint local para correlacionar sin conservar el valor en notas
printf '%s' 'REDACTED_SECRET_VALUE' | sha256sum

Sustituir el valor de ejemplo mediante entrada segura y evitar que el secreto quede en el historial del shell.

Source code leaks

Buscar copias públicas, mirrors, forks, archivos comprimidos, snippets y paquetes publicados.

"Example Corp" (source OR sourcecode OR repository)
"example.com" (github OR gitlab OR bitbucket)
"api.example.com" (filename:.env OR filename:config)
site:github.com "@example.com"
site:gitlab.com "example.com"

Indicadores:

  • Copyright, dominios y nombres de productos.
  • Historial Git y autores corporativos.
  • Configuración de CI/CD o infraestructura.
  • Hostnames internos y endpoints no documentados.
  • Secretos o ficheros excluidos normalmente del repositorio.

Confirmar propiedad antes de reportar y no ejecutar el código filtrado.

IntelX

Intelligence X indexa fuentes históricas, pastes, documentos y contenido de Internet.

Buscar por:

  • Dominio raíz y subdominios.
  • Emails corporativos confirmados.
  • Marca, razón social y nombres históricos.
  • IP, CIDR y ASN.
  • Hostnames o fragmentos técnicos distintivos.

Registrar el selector utilizado, el bucket o tipo de fuente, fecha y referencia. No descargar datasets completos cuando un metadato o extracto redactado sea suficiente.

Pastebin

Pastebin puede aparecer en búsquedas indexadas o servicios de monitorización.

site:pastebin.com "example.com"
site:pastebin.com "@example.com"
site:pastebin.com "api.example.com"
site:pastebin.com "Example Corp"

Comprobar fecha, contexto y si el paste es una copia de otra fuente. No asumir que el autor o el contenido son auténticos.

Have I Been Pwned

Have I Been Pwned permite consultar brechas conocidas. Las consultas de cuentas mediante API requieren una clave y deben respetar sus condiciones de uso.

# Metadatos públicos de todas las brechas
curl -s https://haveibeenpwned.com/api/v3/breaches \
  | jq '.[] | {Name,Domain,BreachDate,AddedDate,DataClasses,IsVerified}'
 
# Consultar una cuenta autorizada; no escribir la API key en el historial
read -rsp 'HIBP API key: ' HIBP_API_KEY
printf '\n'
curl -s \
  -H "hibp-api-key: $HIBP_API_KEY" \
  -H 'user-agent: authorized-security-assessment' \
  'https://haveibeenpwned.com/api/v3/breachedaccount/user%40example.com?truncateResponse=false'
unset HIBP_API_KEY

No realizar consultas masivas de empleados sin base legal, autorización y controles de tratamiento de datos.

GitHub

Utilizar búsquedas dirigidas por dominio, organización y repositorios confirmados.

gh search code '"example.com" (token OR secret OR password)' --limit 100
gh search code '"api.example.com"' --limit 100
gh search code '"@example.com"' --limit 100
gh search commits 'author-email:@example.com' --limit 100

Dorks habituales:

"example.com" filename:.env
"example.com" filename:.npmrc
"example.com" filename:.pypirc
"example.com" "client_secret"
"example.com" "BEGIN PRIVATE KEY"
"api.example.com" extension:json

Aplicar Gitleaks o TruffleHog sobre clones locales autorizados y mantener desactivada cualquier verificación de secretos.

PublicWWW e indexed content

PublicWWW busca fragmentos presentes en el código fuente indexado de sitios web.

Selectores útiles:

  • Dominios y endpoints exactos.
  • IDs de analítica o tag managers.
  • Identificadores de servicios de marketing.
  • Fragmentos JavaScript distintivos.
  • Nombres de buckets, tenants o proyectos.
  • Direcciones de correo corporativas.
"api.example.com"
"@example.com"
"example-assets.s3.amazonaws.com"
"GTM-XXXXXXX"

Los identificadores compartidos pueden relacionar sitios, pero no demuestran propiedad. Validar mediante DNS, contenido legal, certificados y fuentes corporativas.

Otros contenidos indexados útiles:

  • Cachés y archivos web históricos.
  • Documentos PDF, hojas de cálculo y ficheros de texto.
  • Documentación API y colecciones Postman.
  • Paquetes de npm, PyPI y otros registros.
  • Imágenes de contenedor y repositorios de artefactos públicos.

Triage de un hallazgo

PrioridadEjemploAcción inicial
CríticaClave privada o token aparentemente productivoEscalado inmediato y revocación por el propietario
AltaCredencial corporativa reciente con contextoNotificar, rotar y revisar sesiones/MFA
MediaDataset histórico o secreto de entorno de pruebasValidar propietario y exposición sin usarlo
BajaEmail público o placeholderRegistrar solo si aporta contexto

La prioridad final depende de vigencia, privilegios, entorno, controles adicionales y exposición real.

Manejo de evidencia

  • Cifrar los archivos y restringir acceso.
  • Redactar contraseñas, tokens, cookies y claves.
  • Evitar capturas con valores completos.
  • No copiar datos ajenos al alcance.
  • Registrar cadena de custodia y fuente.
  • Definir retención y borrado seguro con el cliente.
  • No enviar secretos por chat, email o tickets sin protección.

Plantilla de inventario

Hallazgo | Tipo | Cuenta/recurso redactado | Fuente | Fecha origen | Fecha hallazgo | Contexto | Posible vigencia | Prioridad | Estado | Responsable

Estados recomendados: nuevo, triage, notificado, revocado, histórico, falso positivo o cerrado.