Reconocimiento pasivo de dominios desde terminal
Documentación de apoyo: Reconocimiento de dominios por terminal y scripting
1. Introducción
Una organización ficticia llamada Atlas Digital está revisando la información que su infraestructura publica en Internet. Durante los últimos años ha creado páginas web, aplicaciones, servicios de correo y entornos de pruebas, pero no dispone de un inventario actualizado.
El equipo de seguridad necesita conocer su superficie externa visible mediante fuentes públicas antes de realizar una auditoría más profunda.
Tu misión será actuar como analista OSINT. Utilizarás la terminal de Linux para descubrir subdominios, resolver direcciones IP, consultar información pública sobre esas direcciones y automatizar parte del proceso mediante un script en Bash.
El objetivo no consiste únicamente en ejecutar comandos. Tendrás que interpretar, relacionar y documentar los resultados.
2. Objetivos de aprendizaje
Al finalizar el reto deberás ser capaz de:
- Explicar qué es el reconocimiento OSINT pasivo.
- Utilizar herramientas desde una terminal Linux.
- Enumerar subdominios con Amass y Subfinder.
- guardar, ordenar, combinar y filtrar resultados.
- Resolver nombres de dominio y obtener sus direcciones IP.
- Consultar información WHOIS y datos aproximados de geolocalización.
- Procesar respuestas JSON con
curlyjq. - Crear un script Bash sencillo para automatizar el análisis.
- Diferenciar entre un dato, una evidencia y una conclusión.
- Elaborar un informe técnico reproducible.
3. Normas y alcance autorizado
Esta actividad es exclusivamente de reconocimiento pasivo.
Está permitido
- Consultar fuentes públicas.
- Utilizar Amass en modo
-passive. - Utilizar Subfinder con sus fuentes OSINT.
- Resolver registros DNS.
- Consultar WHOIS y servicios públicos de información de IP.
- Trabajar únicamente con el dominio indicado por el profesor.
No está permitido
- Escanear puertos con Nmap u otras herramientas.
- Buscar vulnerabilidades o ejecutar exploits.
- Realizar fuerza bruta de subdominios, directorios o credenciales.
- Acceder a paneles, cuentas o zonas privadas.
- Enviar tráfico masivo o intentar evadir límites.
- Investigar dominios distintos de los autorizados.
Encontrar un servicio visible no autoriza a entrar en él. Si descubres algo que parezca sensible, registra únicamente el nombre y comunícalo al profesor.
4. Material necesario
- Ubuntu, Debian, Kali Linux o una máquina virtual Linux.
- Conexión a Internet.
- Un dominio autorizado por el profesor.
- Terminal y editor de texto.
- Herramientas:
amass,subfinder,dnsutils,whois,curl,jqy, opcionalmente,geoip-bin.
El profesor proporcionará el objetivo:
DOMINIO_AUTORIZADO=____________________________
No sustituyas esta variable por el dominio de una empresa elegida al azar.
5. Preparación del entorno
Paso 1. Crear la estructura de trabajo
mkdir -p operacion-atlas/{capturas,resultados,script}
cd operacion-atlas
Comprueba la estructura:
find . -maxdepth 2 -type d
Paso 2. Instalar las herramientas
En una distribución basada en Ubuntu o Debian:
sudo apt update
sudo apt install amass dnsutils whois curl jq geoip-bin
Si Subfinder no está disponible en los repositorios de tu distribución, sigue la opción de instalación explicada en la documentación del curso. Por ejemplo, si tienes Snap:
sudo snap install subfinder
Paso 3. Comprobar la instalación
amass version
subfinder -version
host -V
whois --version
curl --version
jq --version
Evidencia 1: incluye una captura o salida de terminal que demuestre que las herramientas están disponibles. Si alguna no se puede instalar, explica el problema y continúa con las que funcionen.
6. Fase 1: reconocimiento inicial
Antes de ejecutar herramientas, completa una pequeña ficha:
| Campo | Respuesta |
|---|---|
| Dominio autorizado | |
| Fecha y hora de inicio | |
| Sistema operativo | |
| Hipótesis inicial | |
| ¿Qué información esperas encontrar? |
Formula al menos dos hipótesis. Por ejemplo:
- El dominio puede utilizar varios subdominios para separar servicios.
- Parte de la infraestructura puede estar alojada en un proveedor cloud.
No importa si después resultan incorrectas: deberán contrastarse con evidencias.
7. Fase 2: enumeración pasiva con Amass
Paso 1. Ejecutar Amass en modo pasivo
Sustituye dominio-autorizado.example por el objetivo indicado por el profesor:
amass enum -passive -d dominio-autorizado.example \
-o resultados/amass.txt
El parámetro -passive es obligatorio en este reto.
Paso 2. Revisar los resultados
cat resultados/amass.txt
Cuenta los resultados:
wc -l resultados/amass.txt
Ordénalos y elimina duplicados:
sort -u resultados/amass.txt -o resultados/amass_limpio.txt
Paso 3. Interpretar
Responde:
- ¿Cuántos subdominios distintos encontró Amass?
- ¿Qué nombres parecen corresponder a servicios web, correo, API, desarrollo o administración?
- ¿Un nombre como
dev,testostagingdemuestra que existe un entorno vulnerable? Justifica la respuesta. - ¿Por qué el resultado de una fuente OSINT puede estar desactualizado?
Evidencia 2: incluye el comando, el número de resultados y una selección razonada de hasta diez subdominios. No llenes el informe con capturas repetitivas.
8. Fase 3: enumeración con Subfinder
Paso 1. Ejecutar la segunda herramienta
subfinder -d dominio-autorizado.example \
-o resultados/subfinder.txt
Paso 2. Limpiar la salida
sort -u resultados/subfinder.txt -o resultados/subfinder_limpio.txt
Paso 3. Comparar las herramientas
Subdominios encontrados por ambas:
comm -12 resultados/amass_limpio.txt resultados/subfinder_limpio.txt \
> resultados/coincidencias.txt
Encontrados solamente por Amass:
comm -23 resultados/amass_limpio.txt resultados/subfinder_limpio.txt \
> resultados/solo_amass.txt
Encontrados solamente por Subfinder:
comm -13 resultados/amass_limpio.txt resultados/subfinder_limpio.txt \
> resultados/solo_subfinder.txt
Combina todos los resultados:
sort -u resultados/amass_limpio.txt resultados/subfinder_limpio.txt \
> resultados/subdominios_finales.txt
Obtén los recuentos:
wc -l resultados/amass_limpio.txt \
resultados/subfinder_limpio.txt \
resultados/coincidencias.txt \
resultados/subdominios_finales.txt
Completa la tabla:
| Resultado | Cantidad |
|---|---|
| Amass | |
| Subfinder | |
| Coincidencias | |
| Total único |
Preguntas:
- ¿Qué herramienta ha encontrado más resultados?
- ¿Por qué dos herramientas OSINT pueden devolver resultados diferentes?
- ¿Por qué una coincidencia entre ambas fuentes aumenta la confianza, pero no confirma por sí sola que el servicio esté activo?
Evidencia 3: tabla comparativa y explicación de las diferencias.
9. Fase 4: resolución DNS
Ahora comprobarás qué nombres de la lista pueden resolverse actualmente.
Paso 1. Probar manualmente un subdominio
host subdominio.dominio-autorizado.example
También puedes consultar registros concretos:
dig +short A subdominio.dominio-autorizado.example
dig +short AAAA subdominio.dominio-autorizado.example
dig +short CNAME subdominio.dominio-autorizado.example
Paso 2. Automatizar la resolución de la lista
while IFS= read -r subdominio; do
echo "### $subdominio"
host "$subdominio"
done < resultados/subdominios_finales.txt \
| tee resultados/resolucion_dns.txt
Paso 3. Crear una lista única de IPv4
while IFS= read -r subdominio; do
dig +short A "$subdominio"
done < resultados/subdominios_finales.txt \
| grep -E '^[0-9]+(\.[0-9]+){3}$' \
| sort -u \
> resultados/ips.txt
Revisa el resultado:
cat resultados/ips.txt
wc -l resultados/ips.txt
Paso 4. Analizar
Responde:
- ¿Todos los nombres encontrados mediante OSINT resuelven actualmente?
- ¿Hay varios subdominios que apunten a la misma IP?
- ¿Has encontrado registros CNAME?
- ¿Qué puede significar que varios servicios compartan dirección IP?
- ¿Qué diferencia existe entre no resolver un nombre y demostrar que nunca existió?
Evidencia 4: presenta una tabla con una muestra de entre cinco y diez resultados.
| Subdominio | Tipo de registro | IP o destino | ¿Resuelve? | Observación |
|---|---|---|---|---|
10. Fase 5: contexto de las direcciones IP
Selecciona un máximo de cinco IP públicas distintas. No es necesario consultar todas si la lista es muy grande.
Paso 1. Consulta WHOIS
whois DIRECCION_IP
Busca datos como:
- Organización o propietario del rango.
- ASN, si aparece.
- País de registro.
- Rango o bloque de red.
- Contactos de abuso, sin utilizarlos ni recopilar datos innecesarios.
El país registrado en WHOIS no tiene por qué coincidir con la ubicación física exacta del servidor.
Paso 2. Consulta GeoIP local
geoiplookup DIRECCION_IP
Paso 3. Consulta una API desde terminal
curl -s "https://ipinfo.io/DIRECCION_IP/json" | jq
Extrae solamente algunos campos:
curl -s "https://ipinfo.io/DIRECCION_IP/json" \
| jq '{ip, city, region, country, org, loc}'
Respeta los límites del servicio: una consulta por cada IP seleccionada es suficiente.
Paso 4. Correlacionar
Completa la tabla:
| IP | Subdominios asociados | Organización/ASN | País aproximado | Posible proveedor | Confianza |
|---|---|---|---|---|---|
| Alta/Media/Baja |
Responde:
- ¿Parece infraestructura propia, alojamiento compartido, CDN o proveedor cloud?
- ¿Coinciden WHOIS, GeoIP y la API?
- ¿Qué campos son hechos observados y cuáles son inferencias?
- ¿Por qué no debemos presentar una geolocalización de IP como una ubicación exacta?
Evidencia 5: tabla completada y una conclusión prudente sobre la infraestructura.
11. Fase 6: construir el script atlas.sh
Debes crear un script que automatice el proceso básico.
Requisitos mínimos
El script deberá:
- Recibir un dominio como argumento.
- Comprobar que se ha indicado dicho argumento.
- Crear un directorio de resultados.
- Ejecutar Amass en modo pasivo.
- Ejecutar Subfinder.
- Combinar y eliminar duplicados.
- Resolver las direcciones IPv4.
- Guardar los resultados en archivos.
- Mostrar un resumen final.
Plantilla orientativa
Guárdala como script/atlas.sh y completa las partes marcadas:
#!/usr/bin/env bash
set -u
if [ "$#" -ne 1 ]; then
echo "Uso: $0 dominio-autorizado.example"
exit 1
fi
DOMINIO="$1"
FECHA="$(date +%Y%m%d_%H%M%S)"
SALIDA="resultados_${DOMINIO}_${FECHA}"
mkdir -p "$SALIDA"
echo "[+] Iniciando reconocimiento pasivo de: $DOMINIO"
# 1. Comprobar que las herramientas necesarias existen.
# PISTA: command -v nombre_herramienta
# 2. Ejecutar Amass exclusivamente en modo pasivo.
# 3. Ejecutar Subfinder.
# 4. Ordenar, combinar y eliminar duplicados.
# 5. Resolver las direcciones IPv4 con dig.
# 6. Mostrar el número de subdominios e IP únicas.
echo "[+] Proceso finalizado. Resultados guardados en: $SALIDA"
Da permiso de ejecución:
chmod +x script/atlas.sh
Ejecútalo únicamente con el dominio autorizado:
./script/atlas.sh dominio-autorizado.example
Validaciones que debe incorporar
Como mínimo, comprueba la presencia de cada herramienta:
if ! command -v amass >/dev/null 2>&1; then
echo "Error: Amass no está instalado."
exit 1
fi
Repite o adapta la validación para las demás herramientas.
Pruebas obligatorias
Documenta qué ocurre cuando:
- Se ejecuta sin argumentos.
- Se ejecuta con el dominio autorizado.
- Falta una herramienta necesaria.
- Una de las herramientas no devuelve resultados.
Evidencia 6: código completo del script, capturas o salidas de las pruebas y explicación de su funcionamiento.
12. Fase 7: análisis final
Redacta una conclusión que responda a estas preguntas:
- ¿Cuál es la superficie externa observada?
- ¿Cuántos subdominios únicos se han identificado?
- ¿Cuántos resolvían en el momento del análisis?
- ¿Qué proveedores o redes parecen alojarlos?
- ¿Existen indicios de servicios de desarrollo, pruebas, API o correo?
- ¿Qué resultados tienen una confianza alta, media o baja?
- ¿Qué limitaciones ha tenido la investigación?
- ¿Se confirmaron las hipótesis iniciales?
- ¿Qué recomendarías revisar al responsable del dominio?
Las recomendaciones deben ser defensivas. Por ejemplo:
- Mantener un inventario de subdominios.
- Eliminar registros DNS abandonados.
- Revisar nombres que revelen información innecesaria.
- Comprobar que los entornos de prueba no estén publicados accidentalmente.
- Repetir periódicamente el inventario pasivo.
No afirmes que existe una vulnerabilidad si no dispones de evidencia suficiente.
13. Entrega
Entrega un archivo ZIP con esta estructura:
operacion-atlas/
├── README.md
├── capturas/
│ ├── 01_herramientas.png
│ ├── 02_amass.png
│ ├── 03_subfinder.png
│ └── ...
├── resultados/
│ ├── amass.txt
│ ├── subfinder.txt
│ ├── coincidencias.txt
│ ├── subdominios_finales.txt
│ ├── resolucion_dns.txt
│ └── ips.txt
└── script/
└── atlas.sh
El archivo README.md será el informe principal y deberá contener:
- Portada e identificación del alumno o equipo.
- Objetivo y alcance autorizado.
- Entorno y herramientas.
- Hipótesis iniciales.
- Procedimiento reproducible.
- Evidencias seleccionadas.
- Tablas de resultados.
- Explicación del script.
- Conclusiones y recomendaciones.
- Limitaciones y fuentes consultadas.
No se valorará mejor un informe por tener más capturas. Se valorará que cada evidencia sea legible, necesaria y esté interpretada.
14. Rúbrica de evaluación
| Criterio | Puntuación |
|---|---|
| Preparación, alcance ético y organización | 1 punto |
| Enumeración pasiva con Amass y Subfinder | 2 puntos |
| Limpieza, comparación y combinación de resultados | 1,5 puntos |
| Resolución DNS y análisis de IP | 1,5 puntos |
| Script Bash, validaciones y pruebas | 2 puntos |
| Interpretación, correlación y conclusiones | 1,5 puntos |
| Calidad del README y evidencias | 0,5 puntos |
| Total | 10 puntos |
Penalizaciones importantes
- Uso de técnicas activas no autorizadas: la práctica podrá considerarse no superada.
- Investigación de dominios fuera del alcance: la práctica podrá considerarse no superada.
- Script que no se explica o no se prueba: no se considerará completamente válido.
- Capturas sin interpretación: tendrán poco valor como evidencia.
- Resultados o conclusiones inventados: penalización grave.
15. Nivel avanzado opcional: inteligencia reproducible
Quienes terminen antes pueden incorporar estas mejoras:
Mejora A. Archivo CSV
Genera un archivo con el formato:
subdominio,ip
www.dominio.example,203.0.113.10
api.dominio.example,203.0.113.20
Mejora B. Parámetros adicionales
Permite utilizar:
./script/atlas.sh -d dominio-autorizado.example -o informe
Mejora C. Registro de ejecución
Guarda fecha, herramienta, versión y comando ejecutado en un archivo log.txt.
Mejora D. Manejo de errores
Haz que el script continúe de forma controlada si Amass o Subfinder falla, indicando qué fuente no estuvo disponible.
Mejora E. Comparación temporal
Ejecuta el análisis en dos momentos autorizados distintos y compara las listas:
comm -13 resultado_anterior.txt resultado_actual.txt
Explica qué nombres son nuevos, cuáles han desaparecido y por qué eso no basta para asegurar que se haya producido un cambio real en la infraestructura.
16. Pregunta de cierre
Si todas las herramientas utilizadas consultan fuentes públicas, ¿por qué sigue siendo necesario definir un alcance, aplicar límites y tratar los resultados con responsabilidad?





![Practica [OSINT]- SEÑALES DE VIDA (O ALGO PEOR) EN LA RED 1f54e2931cc4aadf02b212bde85114a8](https://laaventuradeaprender.com/wp-content/uploads/2025/12/1f54e2931cc4aadf02b212bde85114a8.png)
