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 output
- https://crt.sh/?q=${TARGET}&output=jsonse indica que buscaremos el dominio definido en la variable- TARGETen un formato json
- jq -r '.[]' "\(.name_value)\n\(.common_name)"'procesar la salida en formato json e imprime el valor- name valuey- common name
- sort -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.com- Para 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