Passive Information Gathering
WHOIS
WHOIS es un protocolo que utiliza el puerto 43 TCP para realizar consultas a una base de datos que contiene información de dominios, IP o sistemas autónomos.
Podemos consumir este servicio mediante múltiples sitios web, como whois.domaintools.com:

En caso de querer usar whois en sistemas Windows, este se debe descargar desde Sysinternals WHOIS.
Para ejecutar consultas desde sistemas Linux, podemos usar los siguientes comandos:
export TARGET="target.com"
whois $TARGETEn Windows, el comando sería como el siguiente:
whois.exe target.coRegistros DNS
Para mayor información, revisar el siguiente enlace.
# Records del tipo A para un dominio
export TARGET="target.com"
nslookup $TARGET
dig $TARGET @1.1.1.1
# Records del tipo A para un subdominio
nslookup -query=A $TARGET
dig a $TARGET @1.1.1.1nslookup -query=PTR 1.1.1.1
dig -x 1.1.1.1 @1.1.1.1export TARGET="target.com"
nslookup -query=ANY $TARGET
dig any $TARGET @8.8.8.8export TARGET="target.com"
nslookup -query=TXT $TARGET
dig txt $TARGET @1.1.1.1export TARGET="target.com"
nslookup -query=MX $TARGET
dig mx $TARGET @1.1.1.1Enumeración pasiva de subdominios
Obtener información de los subdominios a través de servicios de terceros.
VirusTotal
Podemos obtener información relacionada con un dominio cuando lo analizamos. En la pestaña RELATIONS podemos obtener registros DNS:

Certificados
Es posible obtener subdominios mediante los certificados SSL/TLS. Esto se puede mediante el Certificate Transparency (CT).


Esto lo podemos consumir desde la CLI mediante un cURL:
export TARGET="facebook.com"
curl -s "https://crt.sh/?q=${TARGET}&output=json" | jq -r '.[] | "\(.name_value)\n\(.common_name)"' | sort -u > "${TARGET}_crt.sh.txt"curl -srealiza un cURL especificando que muestre lo menos posible en el outputhttps://crt.sh/?q=${TARGET}&output=jsonse indica que buscaremos el dominio definido en la variableTARGETen un formato jsonjq -r '.[]' "\(.name_value)\n\(.common_name)"'procesar la salida en formato json e imprime el valorname valueycommon namesort -uordenar la salida de forma alfabética y remueve los duplicados
En caso de usar HTTPS, la comunicación se debe realizar mediante OpenSSL:
export TARGET="facebook.com"
export PORT="443"
openssl s_client -ign_eof 2>/dev/null <<<$'HEAD / HTTP/1.0\r\n\r' -connect "${TARGET}:${PORT}" | openssl x509 -noout -text -in - | grep 'DNS' | sed -e 's|DNS:|\n|g' -e 's|^\*.*||g' | tr -d ',' | sort -uGoogle Dorks
site:google.com -inurl:www
site:google.com -site:www.google.comPara no incluir un subdominio, podemos usar el operador
-
Automatización de enumeración pasiva de subdominios
Esto se puede automatizar utilizando múltiples herramientas, como theHarvester.
Esta herramienta recolecta:
Emails
Nombres
Subdominios
Direcciones IP
URL
Utiliza múltiples origenes para recolectar la información:
Baidu: buscador Baidu
Bufferoverun: usa datos desde el Rapid7's Project Sonar
Crtsh: búsqueda de certificados
Hackertarget: escáner de vulnerabilidades online y network intelligence para ayudar a organizaciones
Rapiddns: herramienta de consulta de DNS, que facilita la consulta de subdominios o sitios que utilizan la misma IP
Sublist3r: herramienta rápida de enumeración de subdominios
Threatcrowd: herramienta open source de threat intelligence
[Threatmine]: minería de datos para threat intelligence
Trello: busca en Trello boards (utiliza google)
Urlscan: un sandbox para la web que es un escáner de URL y sitios web
vhost: buscar virtual hosts
VirusTotal: buscador de dominio
Zoomeye: shodan versión chino
Lo primero es crear un archivo source.txt para agrupar todos estos orígenes:
baidu
bufferoverun
crtsh
hackertarget
otx
projecdiscovery
rapiddns
sublist3r
threatcrowd
trello
urlscan
vhost
virustotal
zoomeyeEjecutamos theHarvester usando el siguiente comando:
export TARGET="facebook.com"
cat sources.txt | while read source; do theHarvester -d "${TARGET}" -b $source -f "${source}_${TARGET}";donePara extraer todos los subdominios, se utiliza el siguiente comando:
cat *.json | jq -r '.hosts[]' 2>/dev/null | cut -d':' -f 1 | sort -u > "${TARGET}_theHarvester.txt"Identificación pasiva de infraestructura
Netcraft
Con Netcraft podemos obtener información del servidor sin tener que interactuar con él directamente:

Wayback Machine
Internet Archive posee la opción Wayback Machine, con la cual, podemos encontrar versiones anteriores de un sitio web:

Podemos usar Wayback Machine mediante la herramienta waybackurls. Para poder instalar esta herramienta, podemos usar el siguiente comando:
go install github.com/tomnomnom/waybackurls@latestPara poder usarla, podemos usar los siguientes comandos:
waybackurls -dates https://facebook.com > waybackurls.txt
cat domains.txt | waybackurls > urlsLast updated