Patrones de Subdominios y Permutaciones
Introducción
Una de las técnicas más efectivas en el reconocimiento de activos es entender y predecir los patrones de nomenclatura que las organizaciones utilizan para sus subdominios. Los equipos de desarrollo y operaciones (DevOps) suelen seguir convenciones lógicas para separar diferentes entornos (desarrollo, pruebas, producción), servicios (aplicación principal, API, panel de administración) y versiones.
Al identificar estos patrones, puedes generar listas de posibles subdominios (permutaciones) y descubrir activos "ocultos" que a menudo son menos seguros que los sistemas de producción principales.
Patrones Comunes por Entorno de Desarrollo
Las aplicaciones pasan por diferentes fases antes de llegar al usuario final. Cada fase suele tener su propio entorno y, por tanto, su propio subdominio.
Aplicación Base (Producción):
app.ejemplo.com
Este suele ser el punto de partida, la aplicación principal accesible al público.
Entornos de Desarrollo (
dev
):Son instancias para que los desarrolladores prueben nuevas funcionalidades. Suelen ser inestables y, a veces, contienen configuraciones de depuración o información sensible.
Patrón de Subdominio:
app.dev.ejemplo.com
Patrón con Guiones:
app-dev.ejemplo.com
Entornos de Pruebas (
staging
,qa
,uat
):staging
: Entorno de pre-producción, una réplica casi exacta de la producción para las pruebas finales.qa
: Quality Assurance, para el equipo de control de calidad.uat
: User Acceptance Testing, para que el cliente o usuarios finales validen las funcionalidades.Patrones:
app.staging.ejemplo.com
app-qa.ejemplo.com
api.uat.ejemplo.com
Entornos de Producción (
prod
):A veces, incluso el entorno de producción se designa explícitamente para diferenciarlo de otros, o para gestionar despliegues geográficos o por versiones (blue-green deployments, canary releases).
Patrones:
app.prod.ejemplo.com
app-prod.ejemplo.com
app.eu-west-1.prod.ejemplo.com
(designación geográfica)
Patrones Comunes por Tipo de Servicio
Además de los entornos, los subdominios suelen identificar el propósito del servicio que albergan.
Aplicación Frontend:
app.dev.ejemplo.com
app.prod.ejemplo.com
API Backend:
api.dev.ejemplo.com
api.prod.ejemplo.com
Panel de Administración:
admin.dev.ejemplo.com
admin.prod.ejemplo.com
Combinando Patrones: El Juego de las Permutaciones
La verdadera potencia viene de combinar estos patrones. Si descubres un subdominio, puedes empezar a generar permutaciones lógicas para encontrar otros.
Ejemplo de Patrón Complejo:
app-api-dev.ejemplo.com
Esto se puede desglosar como: La API para la aplicación app, en el entorno de desarrollo (
dev
).
Ejemplos de Versionado en APIs: El versionado también es un patrón común, especialmente en APIs.
APIs de Desarrollo:
api-dev-v1.ejemplo.com
api.dev.v2.ejemplo.com
APIs de Producción:
api-v1.ejemplo.com
api-v2.ejemplo.com
Estrategia Práctica para el Bug Hunter
La idea es pensar como el equipo de desarrollo o de DevOps. No te limites a la salida inicial de tus herramientas.
Analiza los Subdominios Encontrados: Ejecuta
subfinder
o una técnica similar para obtener una lista inicial de subdominios.Identifica los Patrones: Revisa la lista y busca patrones recurrentes:
¿Usan guiones (
app-dev
) o subdominios anidados (app.dev
)?¿Qué palabras clave de entorno usan (
dev
,staging
,test
,uat
,prod
)?¿Qué nombres de servicios usan (
api
,app
,admin
,internal
,vpn
, etc.)?¿Hay patrones geográficos (
eu
,us
,asia
) o de versión (v1
,v2
)?
Genera Permutaciones: Usa los patrones identificados para generar una nueva lista de posibles subdominios que aún no has encontrado.
Automatiza la Generación de Permutaciones:
Existen herramientas específicas para esto que toman una lista de subdominios conocidos y generan permutaciones inteligentes.
Herramientas recomendadas:
dnsgen
: Toma una lista de subdominios y genera permutaciones basadas en ellos.gotator
: Otra herramienta excelente para generar permutaciones de subdominios.
Flujo de Trabajo Conceptual en la Terminal:
# 1. Obtener una lista inicial de subdominios
subfinder -d ejemplo.com -silent > subs_iniciales.txt
# 2. Generar permutaciones a partir de la lista inicial
cat subs_iniciales.txt | dnsgen - > subs_permutaciones.txt
# 3. Combinar ambas listas, eliminar duplicados y resolverlos
cat subs_iniciales.txt subs_permutaciones.txt | sort -u | massdns -r resolvers.txt -t A -o J > subs_resueltos.json
Este flujo te permite expandir enormemente tu lista inicial de objetivos.
Última actualización