theHarvester: reconocimiento OSINT desde Kali Linux
En una auditoría de seguridad, la primera etapa suele consistir en comprender qué información sobre una organización se encuentra expuesta públicamente. Antes de analizar aplicaciones, puertos o servicios, un auditor necesita conocer la superficie externa del objetivo: dominios, subdominios, direcciones IP, correos electrónicos y otros activos relacionados.
Una de las herramientas más conocidas para realizar esta tarea desde Kali Linux es theHarvester.
theHarvester está diseñada para la fase de reconocimiento de auditorías, ejercicios de red team y pruebas de penetración. Utiliza diferentes fuentes públicas para recopilar nombres, direcciones de correo electrónico, direcciones IP, subdominios y URL relacionadas con un dominio.
En este artículo aprenderemos qué hace theHarvester, cómo instalarla, cuáles son sus parámetros principales y cómo utilizarla mediante ejemplos de consola.
Los ejemplos deben ejecutarse únicamente sobre dominios propios, laboratorios controlados o sistemas para los que se disponga de autorización expresa.
¿Qué es OSINT?
OSINT significa Open Source Intelligence, traducido como inteligencia de fuentes abiertas.
Consiste en recopilar, relacionar y analizar información disponible públicamente. Estas fuentes pueden incluir:
- Motores de búsqueda.
- Registros DNS.
- Certificados TLS.
- Repositorios públicos.
- Bases de datos de inteligencia de amenazas.
- Registros históricos de dominios.
- Plataformas de análisis de infraestructura.
- Servicios de búsqueda de activos expuestos.
El hecho de que una información sea pública no significa que carezca de valor. Un subdominio olvidado, una dirección de correo publicada o un nombre de host antiguo pueden ayudar a una organización a descubrir activos que debería revisar.
theHarvester automatiza una parte de este proceso y presenta los resultados desde una única interfaz de consola.
¿Qué información puede obtener theHarvester?
Dependiendo de la fuente seleccionada y de las credenciales API disponibles, theHarvester puede encontrar:
- Direcciones de correo electrónico.
- Subdominios.
- Nombres de host.
- Direcciones IP.
- URL relacionadas.
- Hosts virtuales.
- Puertos y banners obtenidos mediante servicios externos.
- Información publicada en diferentes fuentes OSINT.
La documentación de Kali describe el paquete como una herramienta destinada a recopilar cuentas de correo electrónico, subdominios, hosts virtuales, puertos, banners y nombres desde fuentes públicas.
Los resultados no deben considerarse automáticamente correctos. Pueden contener:
- Activos antiguos.
- Dominios que ya no pertenecen a la organización.
- Direcciones IP compartidas.
- Registros históricos.
- Falsos positivos.
- Información duplicada.
Por esta razón, todo resultado debe verificarse antes de incorporarlo a un informe profesional.
Instalar theHarvester en Kali Linux
En una instalación actualizada de Kali Linux, theHarvester puede instalarse desde los repositorios oficiales:
sudo apt update
sudo apt install theharvesterDespués de la instalación, podemos comprobar que la herramienta esté disponible:
theHarvester -hLa documentación actual utiliza el comando theHarvester, respetando la letra mayúscula de su nombre. El alias completamente en minúsculas está marcado como obsoleto en el paquete de Kali.
Para localizar el ejecutable:
which theHarvesterPara consultar la versión del paquete instalado:
apt show theharvesterTambién podemos comprobar si existe alguna actualización pendiente:
sudo apt update
apt list --upgradable 2>/dev/null | grep -i harvesterSintaxis básica
La estructura principal del comando es:
theHarvester -d DOMINIO -b FUENTELos dos parámetros fundamentales son:
-d Dominio o nombre de organización que se desea investigar.
-b Fuente pública que se utilizará para realizar la búsqueda.Por ejemplo:
theHarvester -d empresa-ejemplo.com -b duckduckgoEn este caso:
-d empresa-ejemplo.comdefine el dominio.-b duckduckgoselecciona DuckDuckGo como fuente.
La salida puede contener diferentes secciones:
[*] Target: empresa-ejemplo.com
[*] Searching Duckduckgo
[*] Emails found:
-------------------
[*] Hosts found:
----------------
portal.empresa-ejemplo.com
correo.empresa-ejemplo.com
soporte.empresa-ejemplo.comLa información anterior es solamente una representación ilustrativa. Los resultados reales dependerán de lo publicado sobre el dominio y de la respuesta proporcionada por la fuente seleccionada.
Consultar la ayuda
Antes de utilizar una herramienta de seguridad conviene revisar su ayuda local:
theHarvester -hEntre las opciones principales se encuentran:
-d Dominio o empresa que se desea buscar.
-l Límite de resultados.
-S Número de resultado desde el que comienza la búsqueda.
-b Fuente utilizada.
-f Nombre del archivo de salida.
-n Realizar consultas DNS.
-r Resolver los subdominios encontrados.
-s Consultar en Shodan los hosts descubiertos.
-c Ejecutar enumeración DNS mediante diccionario.
-e Especificar un servidor DNS.
-p Utilizar proxies configurados.
-q Ocultar advertencias sobre claves API faltantes.Las opciones disponibles pueden cambiar entre versiones. La ayuda que devuelve la instalación local debe considerarse la referencia principal.
Limitar la cantidad de resultados
La opción -l establece un límite para los resultados solicitados a la fuente:
theHarvester \
-d empresa-ejemplo.com \
-l 100 \
-b duckduckgoUna búsqueda más pequeña puede ser suficiente durante una primera revisión.
Para ampliar el límite:
theHarvester \
-d empresa-ejemplo.com \
-l 500 \
-b duckduckgoEl límite no garantiza que se obtenga esa cantidad exacta de resultados. La fuente puede devolver menos información, aplicar restricciones o no encontrar elementos relacionados.
Usar registros de certificados TLS
Los registros de transparencia de certificados pueden revelar subdominios que estuvieron asociados con certificados TLS públicos.
theHarvester incluye fuentes relacionadas con certificados, como crtsh y certspotter.
Ejemplo:
theHarvester \
-d empresa-ejemplo.com \
-b crtshUna salida hipotética podría incluir:
www.empresa-ejemplo.com
api.empresa-ejemplo.com
vpn.empresa-ejemplo.com
clientes.empresa-ejemplo.com
desarrollo.empresa-ejemplo.comLa aparición de un subdominio en un certificado no confirma que continúe activo. Puede tratarse de un registro antiguo.
Podemos comprobar manualmente si un nombre resuelve mediante DNS:
dig api.empresa-ejemplo.comTambién podemos solicitar únicamente la respuesta breve:
dig +short api.empresa-ejemplo.comOtra alternativa es utilizar host:
host api.empresa-ejemplo.comResolver los subdominios encontrados
La opción -r permite realizar resolución DNS sobre los subdominios descubiertos:
theHarvester \
-d empresa-ejemplo.com \
-b crtsh \
-rTambién se puede activar la búsqueda DNS con:
theHarvester \
-d empresa-ejemplo.com \
-b duckduckgo \
-nEstas opciones ayudan a diferenciar entre nombres históricos y hosts que todavía poseen registros DNS.
Sin embargo, que un dominio resuelva no significa necesariamente que el servicio esté operativo o que pertenezca exclusivamente a la organización. La IP podría corresponder a:
- Un proveedor de alojamiento.
- Una red de distribución de contenido.
- Un servicio en la nube.
- Un proxy inverso.
- Una infraestructura compartida.
Especificar un servidor DNS
La opción -e permite seleccionar el servidor DNS que se utilizará para las consultas:
theHarvester \
-d empresa-ejemplo.com \
-b crtsh \
-e 1.1.1.1 \
-rTambién podría utilizarse el servidor DNS de un laboratorio:
theHarvester \
-d laboratorio.test \
-b crtsh \
-e 192.168.56.1 \
-rAntes de utilizar un servidor determinado, debemos confirmar que su uso esté permitido y que pertenezca al entorno correspondiente.
Guardar los resultados
La opción -f permite guardar los resultados utilizando un nombre base:
mkdir -p resultados
cd resultados
theHarvester \
-d empresa-ejemplo.com \
-b crtsh \
-f reconocimiento_inicialLa versión actual de Kali indica que esta opción genera resultados en formatos XML y JSON.
Podemos listar los archivos generados:
ls -lahUna salida posible sería:
reconocimiento_inicial.json
reconocimiento_inicial.xmlPara comprobar el tipo de archivo:
file reconocimiento_inicial.*Para visualizar el JSON:
cat reconocimiento_inicial.jsonSi tenemos jq instalado, podemos formatearlo:
jq . reconocimiento_inicial.jsonPara guardar una copia de la salida de consola:
theHarvester \
-d empresa-ejemplo.com \
-b duckduckgo \
| tee salida_terminal.txtEl comando tee muestra los resultados en pantalla y los guarda simultáneamente en un archivo.
Extraer subdominios desde la salida
Podemos combinar theHarvester con herramientas tradicionales de Linux.
Primero guardamos la salida:
theHarvester \
-d empresa-ejemplo.com \
-b crtsh \
| tee harvester.txtDespués buscamos líneas que contengan el dominio:
grep -i "empresa-ejemplo.com" harvester.txtPara eliminar resultados duplicados:
grep -oiE '([a-zA-Z0-9-]+\.)+empresa-ejemplo\.com' harvester.txt \
| sort -uPodemos guardar el resultado limpio:
grep -oiE '([a-zA-Z0-9-]+\.)+empresa-ejemplo\.com' harvester.txt \
| sort -u \
> subdominios.txtFinalmente, comprobamos cuántos elementos únicos fueron encontrados:
wc -l subdominios.txtResolver una lista de subdominios
Una vez obtenida una lista de activos autorizados, podemos realizar una validación DNS básica:
while read -r host; do
ip=$(dig +short "$host" | head -n 1)
printf '%-45s %s\n' "$host" "${ip:-SIN_RESOLUCION}"
done < subdominios.txtUna salida posible sería:
api.empresa-ejemplo.com 192.0.2.10
correo.empresa-ejemplo.com 192.0.2.20
desarrollo.empresa-ejemplo.com SIN_RESOLUCIONEste ejemplo no realiza un escaneo de puertos. Solamente consulta registros DNS.
Comparar resultados de diferentes fuentes
Una metodología razonable consiste en ejecutar búsquedas separadas y comparar sus resultados.
Primera fuente:
theHarvester \
-d empresa-ejemplo.com \
-b duckduckgo \
| tee duckduckgo.txtSegunda fuente:
theHarvester \
-d empresa-ejemplo.com \
-b crtsh \
| tee crtsh.txtExtraemos los dominios:
grep -oiE '([a-zA-Z0-9-]+\.)+empresa-ejemplo\.com' duckduckgo.txt \
| sort -u \
> hosts_duckduckgo.txtgrep -oiE '([a-zA-Z0-9-]+\.)+empresa-ejemplo\.com' crtsh.txt \
| sort -u \
> hosts_crtsh.txtPodemos ver los nombres que aparecen en ambas listas:
comm -12 hosts_duckduckgo.txt hosts_crtsh.txtPara mostrar todos los hosts únicos:
cat hosts_duckduckgo.txt hosts_crtsh.txt \
| sort -u \
> todos_los_hosts.txtEste procedimiento ayuda a correlacionar resultados en lugar de depender de una única fuente.
Fuentes que requieren claves API
theHarvester admite numerosos proveedores. Algunos pueden utilizarse directamente, mientras que otros necesitan una clave API o una cuenta específica.
Entre las fuentes compatibles se encuentran servicios relacionados con:
- Búsqueda web.
- Certificados TLS.
- Registros DNS.
- Inteligencia de amenazas.
- Repositorios de código.
- Análisis de infraestructura.
- Descubrimiento de activos.
- Historial de URL.
El proyecto oficial incluye proveedores como Brave, Censys, Shodan, VirusTotal, SecurityTrails, Hunter, URLScan y ZoomEye, entre muchos otros. Varios requieren credenciales API y pueden aplicar cuotas o límites de consultas.
Por ejemplo, una consulta mediante una fuente configurada podría tener esta estructura:
theHarvester \
-d empresa-ejemplo.com \
-b virustotalSi la clave no está configurada, la herramienta puede mostrar una advertencia.
Nunca debemos escribir claves API directamente en:
- Capturas de pantalla.
- Publicaciones.
- Repositorios públicos.
- Historiales compartidos.
- Scripts subidos a GitHub.
- Informes destinados a terceros.
Consultar Shodan
La opción -s utiliza Shodan para consultar información sobre los hosts descubiertos:
theHarvester \
-d empresa-ejemplo.com \
-b crtsh \
-sEsta función puede aportar información sobre puertos y banners almacenados por Shodan, pero requiere una configuración válida del servicio. La documentación oficial indica que la integración de Shodan se utiliza sobre los hosts encontrados.
Es importante comprender que estos resultados pueden ser históricos. Un puerto registrado por una plataforma externa podría haber sido cerrado después de la observación.
No debe afirmarse que un servicio continúa expuesto sin realizar una validación autorizada y actual.
Tomar capturas de los dominios encontrados
theHarvester dispone de una opción para generar capturas de los dominios resueltos:
theHarvester \
-d empresa-ejemplo.com \
-b crtsh \
--screenshot capturasLa instalación desde el código fuente requiere un navegador Chromium compatible con Playwright para esta función.
Las capturas pueden servir para:
- Identificar paneles olvidados.
- Reconocer aplicaciones.
- Clasificar activos visualmente.
- Detectar páginas predeterminadas.
- Documentar la superficie pública.
- Preparar un inventario de servicios web.
Las imágenes pueden contener datos personales, tokens, nombres internos o información sensible. Deben conservarse de acuerdo con las normas del proyecto.
Enumeración DNS activa
La opción -c realiza enumeración DNS utilizando un diccionario:
theHarvester \
-d empresa-ejemplo.com \
-b crtsh \
-cA diferencia de una consulta realizada exclusivamente a fuentes de terceros, esta función genera consultas DNS relacionadas con posibles nombres del dominio. El proyecto clasifica la fuerza bruta DNS como un módulo activo.
Por esta razón, debe utilizarse solamente cuando:
- El dominio pertenece al auditor.
- La organización autorizó la prueba.
- La técnica se encuentra dentro del alcance.
- Se establecieron límites operativos.
- Se conoce el impacto potencial.
Comprobar posibles subdomain takeovers
La opción -t permite comprobar posibles condiciones de toma de subdominios:
theHarvester \
-d empresa-ejemplo.com \
-b crtsh \
-tUna posible toma de subdominio puede aparecer cuando un registro DNS apunta hacia un servicio externo que ya no está correctamente asignado.
Un resultado automático no confirma por sí mismo una vulnerabilidad. Es necesario comprobar:
- El registro DNS.
- El proveedor involucrado.
- El estado del recurso.
- La posibilidad real de reclamarlo.
- El impacto.
- La propiedad del dominio.
- Las reglas del programa de pruebas.
No se debe intentar registrar, reclamar o apropiarse de un recurso externo como prueba, salvo que el procedimiento haya sido autorizado expresamente.
Reconocimiento defensivo de un dominio propio
theHarvester también puede emplearse desde el punto de vista defensivo.
Una organización puede analizar su propio dominio para identificar:
- Subdominios desconocidos.
- Aplicaciones antiguas.
- Direcciones de correo demasiado expuestas.
- Infraestructura de pruebas visible.
- Registros DNS obsoletos.
- Sistemas pertenecientes a proveedores.
- Activos no incluidos en el inventario.
- Información publicada accidentalmente.
Un flujo defensivo básico podría ser:
mkdir -p auditoria-osint
cd auditoria-osintdate -Iseconds | tee fecha.txttheHarvester \
-d empresa-ejemplo.com \
-b crtsh \
-r \
-f certificadostheHarvester \
-d empresa-ejemplo.com \
-b duckduckgo \
-l 200 \
-f buscadorsha256sum * > hashes.sha256Los hashes permiten detectar cambios posteriores en los archivos guardados.
Cómo interpretar correctamente los resultados
theHarvester no es un escáner de vulnerabilidades. Encontrar un subdominio o una dirección de correo electrónico no significa haber encontrado una vulnerabilidad.
Los resultados pueden clasificarse en varias categorías.
Activo confirmado
El dominio resuelve, la organización reconoce su propiedad y el servicio continúa operativo.
Activo histórico
El nombre apareció en certificados, buscadores o registros antiguos, pero ya no se encuentra activo.
Activo de un proveedor
El subdominio apunta hacia un servicio externo contratado por la organización.
Falso positivo
El resultado contiene el nombre buscado, pero no pertenece realmente al objetivo.
Hallazgo que requiere validación
Existe información suficiente para investigar, pero no para afirmar que haya una exposición o vulnerabilidad.
Esta clasificación evita informes exagerados y ayuda a mantener una metodología profesional.
Ejemplo de informe
Un hallazgo podría documentarse así:
Activo:
portal-antiguo.empresa-ejemplo.com
Fuente inicial:
Registro público de certificado TLS.
Resolución DNS:
El nombre continúa resolviendo hacia una dirección IP pública.
Estado:
Pendiente de confirmación por parte del propietario.
Riesgo potencial:
El activo podría no estar incluido en el inventario actual.
Recomendación:
Verificar la propiedad, finalidad, responsable, estado de mantenimiento
y necesidad operativa del subdominio.No sería correcto escribir:
El dominio es vulnerable porque apareció en theHarvester.La presencia en una herramienta de reconocimiento no demuestra una vulnerabilidad.
Buenas prácticas
Al utilizar theHarvester conviene aplicar las siguientes medidas:
- Definir el dominio autorizado antes de comenzar.
- Revisar la ayuda de la versión instalada.
- Utilizar límites razonables.
- Separar búsquedas pasivas de pruebas activas.
- Documentar las fuentes consultadas.
- Guardar la fecha de cada búsqueda.
- Verificar manualmente los resultados.
- Eliminar duplicados.
- Proteger las claves API.
- No publicar direcciones de correo innecesariamente.
- Evitar atribuir activos sin evidencia.
- Respetar los términos de uso de cada proveedor.
- No presentar resultados históricos como exposiciones actuales.
- Proteger los archivos obtenidos durante la auditoría.
Diferencia entre reconocimiento pasivo y activo
El reconocimiento pasivo consulta información almacenada o publicada por terceros.
Ejemplos:
theHarvester -d empresa-ejemplo.com -b duckduckgotheHarvester -d empresa-ejemplo.com -b crtshEl reconocimiento activo genera solicitudes relacionadas directamente con la infraestructura estudiada.
Ejemplo:
theHarvester -d empresa-ejemplo.com -b crtsh -cLa diferencia es importante porque una prueba activa puede:
- Generar registros.
- Activar alertas.
- Consumir recursos.
- Violar el alcance acordado.
- Ser interpretada como una actividad hostil.
Siempre debemos saber qué modalidad estamos utilizando.
Conclusión
theHarvester es una herramienta útil para construir una primera imagen de la superficie pública de una organización. Desde una única interfaz permite consultar fuentes OSINT y organizar información relacionada con dominios, subdominios, direcciones IP, correos electrónicos y otros activos externos.
Su principal valor no está en ejecutar un comando y copiar todos los resultados, sino en aplicar un proceso ordenado:
- Definir el alcance.
- Seleccionar fuentes adecuadas.
- Ejecutar búsquedas controladas.
- Guardar la evidencia.
- Eliminar duplicados.
- Correlacionar los resultados.
- Validar cada activo.
- Documentar solamente información confirmada.
En ciberseguridad, una buena fase de reconocimiento puede revelar problemas de inventario, sistemas olvidados y exposiciones innecesarias antes de que sean aprovechados por un atacante.
Utilizada de forma ética, theHarvester puede ayudar tanto a pentesters como a equipos defensivos a comprender y reducir la huella digital pública de una organización.
Comentarios
Publicar un comentario