Metodología de Reconocimiento Externo
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Descubrimiento de activos
Entonces te dijeron que todo lo perteneciente a alguna compañía está dentro del scope, y quieres averiguar qué posee realmente esa compañía.
El objetivo de esta fase es obtener todas las companies owned by the main company y luego todos los assets de esas compañías. Para ello vamos a:
- Encontrar las adquisiciones de la compañía principal; esto nos dará las companies inside the scope.
- Encontrar el ASN (si lo tiene) de cada compañía; esto nos dará los IP ranges owned by each company.
- Usar reverse whois lookups para buscar otras entradas (organisation names, domains…) relacionadas con la primera (esto puede hacerse de forma recursiva).
- Usar otras técnicas como shodan
organdsslfilters para buscar otros assets (elssltrick puede hacerse de forma recursiva).
Adquisiciones
Primero que nada, necesitamos saber qué other companies are owned by the main company.
Una opción es visitar https://www.crunchbase.com/, search por la main company, y click en “acquisitions”. Allí verás otras compañías adquiridas por la principal.
Otra opción es visitar la página de Wikipedia de la compañía principal y buscar acquisitions.
Para compañías públicas, revisa SEC/EDGAR filings, las páginas de investor relations, o los registros corporativos locales (p. ej., Companies House en el Reino Unido).
Para árboles corporativos globales y subsidiarias, prueba OpenCorporates (https://opencorporates.com/) y la base de datos GLEIF LEI (https://www.gleif.org/).
Ok, en este punto deberías conocer todas las compañías dentro del scope. Vamos a averiguar cómo encontrar sus assets.
ASNs
An autonomous system number (ASN) es un número único asignado a un autonomous system (AS) por la Internet Assigned Numbers Authority (IANA).
Un AS consiste en bloques de IP addresses que tienen una política claramente definida para acceder a redes externas y son administrados por una única organización, aunque pueden estar compuestos por varios operadores.
Conviene averiguar si la company have assigned any ASN para encontrar sus IP ranges. Será interesante realizar una vulnerability test contra todos los hosts dentro del scope y buscar dominios dentro de esas IPs.
Puedes search por el company name, por IP o por domain en https://bgp.he.net/, https://bgpview.io/ u https://ipinfo.io/.
Dependiendo de la región de la compañía estos links podrían ser útiles para recopilar más datos: AFRINIC (Africa), Arin(North America), APNIC (Asia), LACNIC (Latin America), RIPE NCC (Europe). De todos modos, probablemente toda la useful information (IP ranges and Whois) ya aparezca en el primer link.
#You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla
amass intel -asn 8911,50313,394161
Además, la enumeración de BBOT’s agrega y resume automáticamente los ASNs al final del escaneo.
bbot -t tesla.com -f subdomain-enum
...
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
[INFO] bbot.modules.asn: | AS394161 | 8.244.131.0/24 | 5 | TESLA | Tesla Motors, Inc. | US |
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
[INFO] bbot.modules.asn: | AS16509 | 54.148.0.0/15 | 4 | AMAZON-02 | Amazon.com, Inc. | US |
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
[INFO] bbot.modules.asn: | AS394161 | 8.45.124.0/24 | 3 | TESLA | Tesla Motors, Inc. | US |
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
[INFO] bbot.modules.asn: | AS3356 | 8.32.0.0/12 | 1 | LEVEL3 | Level 3 Parent, LLC | US |
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
[INFO] bbot.modules.asn: | AS3356 | 8.0.0.0/9 | 1 | LEVEL3 | Level 3 Parent, LLC | US |
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
Puedes encontrar los rangos de IP de una organización también usando http://asnlookup.com/ (it has free API).
Puedes encontrar la IP y el ASN de un dominio usando http://ipv4info.com/.
Looking for vulnerabilities
En este punto conocemos todos los assets dentro del scope, así que si tienes permiso podrías lanzar algún vulnerability scanner (Nessus, OpenVAS, Nuclei) sobre todos los hosts.
También podrías lanzar algunos port scans o usar servicios como Shodan, Censys, o ZoomEye para encontrar puertos abiertos y dependiendo de lo que encuentres deberías consultar en este libro cómo pentestear varios servicios posibles que estén corriendo.
Además, puede valer la pena mencionar que también puedes preparar algunas listas de default username y passwords y probar a bruteforce servicios con https://github.com/x90skysn3k/brutespray.
Dominios
Conocemos todas las empresas dentro del scope y sus assets, es hora de encontrar los dominios dentro del scope.
Por favor, ten en cuenta que en las siguientes técnicas propuestas también puedes encontrar subdomains y que esa información no debe ser infravalorada.
Antes que nada deberías buscar el main domain(s) de cada empresa. Por ejemplo, para Tesla Inc. va a ser tesla.com.
Reverse DNS
Como ya has encontrado todos los IP ranges de los dominios podrías intentar realizar reverse dns lookups sobre esas IPs para encontrar más dominios dentro del scope. Intenta usar algún dns server de la víctima o algún dns server conocido (1.1.1.1, 8.8.8.8)
dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns
dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
Para que esto funcione, el administrador tiene que habilitar manualmente el PTR.
También puedes usar una herramienta online para esta información: http://ptrarchive.com/.
Para rangos grandes, herramientas como massdns y dnsx son útiles para automatizar búsquedas reversas y el enriquecimiento de datos.
Reverse Whois (loop)
Dentro de un whois puedes encontrar mucha información interesante como nombre de la organización, dirección, correos electrónicos, números de teléfono… Pero aún más interesante es que puedes encontrar más assets relacionados con la empresa si realizas reverse whois lookups por cualquiera de esos campos (por ejemplo otros registros whois donde aparece el mismo correo).
Puedes usar herramientas online como:
- https://viewdns.info/reversewhois/ - Gratis
- https://domaineye.com/reverse-whois - Gratis
- https://www.reversewhois.io/ - Gratis
- https://www.whoxy.com/ - Gratis web, API de pago.
- http://reversewhois.domaintools.com/ - De pago
- https://drs.whoisxmlapi.com/reverse-whois-search - De pago (solo 100 gratis búsquedas)
- https://www.domainiq.com/ - De pago
- https://securitytrails.com/ - De pago (API)
- https://whoisfreaks.com/ - De pago (API)
Puedes automatizar esta tarea usando DomLink (requiere una API key de whoxy).
También puedes realizar cierto descubrimiento automático de reverse whois con amass: amass intel -d tesla.com -whois
Ten en cuenta que puedes usar esta técnica para descubrir más nombres de dominio cada vez que encuentres un nuevo dominio.
Rastreadores
Si encuentras el mismo ID del mismo rastreador en 2 páginas diferentes puedes suponer que ambas páginas son gestionadas por el mismo equipo.
Por ejemplo, si ves el mismo Google Analytics ID o el mismo Adsense ID en varias páginas.
Hay algunas páginas y herramientas que te permiten buscar por estos trackers y más:
- Udon
- BuiltWith
- Sitesleuth
- Publicwww
- SpyOnWeb
- Webscout (encuentra sitios relacionados por analytics/trackers compartidos)
Favicon
¿Sabías que podemos encontrar dominios y subdominios relacionados con nuestro objetivo buscando el mismo hash del favicon? Esto es exactamente lo que hace la herramienta favihash.py creada por @m4ll0k2. Aquí se muestra cómo usarla:
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s

En pocas palabras, favihash nos permitirá descubrir dominios que tengan el mismo hash del favicon que nuestro objetivo.
Además, también puedes buscar tecnologías usando el favicon hash como se explica en this blog post. Eso significa que si conoces el hash del favicon de una versión vulnerable de una tecnología web puedes buscarlo en shodan y encontrar más lugares vulnerables:
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
Así es como puedes calculate the favicon hash de un sitio web:
import mmh3
import requests
import codecs
def fav_hash(url):
response = requests.get(url)
favicon = codecs.encode(response.content,"base64")
fhash = mmh3.hash(favicon)
print(f"{url} : {fhash}")
return fhash
También puedes obtener hashes de favicon a gran escala con httpx (httpx -l targets.txt -favicon) y luego pivotar en Shodan/Censys.
Copyright / Cadena única
Busca dentro de las páginas web cadenas que podrían compartirse entre diferentes webs de la misma organización. La cadena de copyright podría ser un buen ejemplo. Luego busca esa cadena en google, en otros navegadores o incluso en shodan: shodan search http.html:"Copyright string"
CRT Time
Es común tener un cron job such as
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
para renovar todos los certificados de dominio en el servidor. Esto significa que, incluso si la CA usada para esto no establece la hora en que fue generado en el Validity time, es posible find domains belonging to the same company in the certificate transparency logs.
Check out this writeup for more information.
Also use certificate transparency logs directly:
- https://crt.sh/
- https://certspotter.com/
- https://search.censys.io/
- https://chaos.projectdiscovery.io/ + chaos-client
Información DMARC de correo
Puedes usar un sitio web como https://dmarc.live/info/google.com o una herramienta como https://github.com/Tedixx/dmarc-subdomains para encontrar dominios y subdominios que comparten la misma información DMARC.
Otras herramientas útiles son spoofcheck y dmarcian.
Passive Takeover
Aparentemente es común que la gente asigne subdominios a IPs que pertenecen a cloud providers y en algún momento pierdan esa IP pero olviden eliminar el registro DNS. Por lo tanto, simplemente spawning a VM en un cloud (como Digital Ocean) en realidad estarás taking over some subdomains(s).
This post explica una historia al respecto y propone un script que spawns a VM in DigitalOcean, gets la IPv4 de la nueva máquina, y searches in Virustotal for subdomain records apuntando a ella.
Otras formas
Ten en cuenta que puedes usar esta técnica para descubrir más nombres de dominio cada vez que encuentres un dominio nuevo.
Shodan
Como ya conoces el nombre de la organización propietaria del espacio IP, puedes buscar por ese dato en shodan usando: org:"Tesla, Inc." Revisa los hosts encontrados por nuevos dominios inesperados en el certificado TLS.
Podrías acceder al TLS certificate de la página principal, obtener el Organisation name y luego buscar ese nombre dentro de los TLS certificates de todas las páginas web conocidas por shodan con el filtro: ssl:"Tesla Motors" o usar una herramienta como sslsearch.
Assetfinder
Assetfinder es una herramienta que busca dominios relacionados con un dominio principal y sus subdominios, bastante impresionante.
Passive DNS / Historical DNS
Los datos de Passive DNS son excelentes para encontrar registros antiguos y olvidados que todavía resuelven o que pueden ser tomados. Consulta:
- https://securitytrails.com/
- https://community.riskiq.com/ (PassiveTotal)
- https://www.domaintools.com/products/iris/
- https://www.farsightsecurity.com/solutions/dnsdb/
Looking for vulnerabilities
Revisa por algún domain takeover. Quizás alguna empresa está usando algún dominio pero perdió la propiedad. Simplemente regístralo (si es lo suficientemente barato) y avisa a la empresa.
Si encuentras algún dominio con una IP distinta de las que ya encontraste en el descubrimiento de assets, deberías realizar un escaneo básico de vulnerabilidades (usando Nessus u OpenVAS) y algunos port scan (using nmap/masscan/shodan) y port scan con nmap/masscan/shodan. Dependiendo de qué servicios estén corriendo, puedes encontrar en este libro algunos trucos para “atacarlos”.
Note que a veces el dominio está alojado en una IP que no es controlada por el cliente, así que no está dentro del scope, ten cuidado.
Subdomains
We know all the companies inside the scope, all the assets of each company and all the domains related to the companies.
Es hora de encontrar todos los posibles subdominios de cada dominio encontrado.
Tip
Ten en cuenta que algunas de las herramientas y técnicas para encontrar dominios también pueden ayudar a encontrar subdominios
DNS
Intentemos obtener subdomains desde los registros DNS. También deberíamos intentar un Zone Transfer (si es vulnerable, deberías reportarlo).
dnsrecon -a -d tesla.com
OSINT
La forma más rápida de obtener muchos subdominios es buscar en fuentes externas. Las tools más usadas son las siguientes (para mejores resultados, configura las API keys):
# subdomains
bbot -t tesla.com -f subdomain-enum
# subdomains (passive only)
bbot -t tesla.com -f subdomain-enum -rf passive
# subdomains + port scan + web screenshots
bbot -t tesla.com -f subdomain-enum -m naabu gowitness -n my_scan -o .
amass enum [-active] [-ip] -d tesla.com
amass enum -d tesla.com | grep tesla.com # To just list subdomains
# Subfinder, use -silent to only have subdomains in the output
./subfinder-linux-amd64 -d tesla.com [-silent]
# findomain, use -silent to only have subdomains in the output
./findomain-linux -t tesla.com [--quiet]
python3 oneforall.py --target tesla.com [--dns False] [--req False] [--brute False] run
assetfinder --subs-only <domain>
# It requires that you create a sudomy.api file with API keys
sudomy -d tesla.com
vita -d tesla.com
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
Hay otras herramientas/APIs interesantes que, aunque no estén directamente especializadas en encontrar subdomains, podrían ser útiles para encontrar subdomains, como:
- Crobat: Utiliza la API https://sonar.omnisint.io para obtener subdomains
# Get list of subdomains in output from the API
## This is the API the crobat tool will use
curl https://sonar.omnisint.io/subdomains/tesla.com | jq -r ".[]"
curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]"
- RapidDNS API gratuita
# Get Domains from rapiddns free API
rapiddns(){
curl -s "https://rapiddns.io/subdomain/$1?full=1" \
| grep -oE "[\.a-zA-Z0-9-]+\.$1" \
| sort -u
}
rapiddns tesla.com
# Get Domains from crt free API
crt(){
curl -s "https://crt.sh/?q=%25.$1" \
| grep -oE "[\.a-zA-Z0-9-]+\.$1" \
| sort -u
}
crt tesla.com
- gau: obtiene URLs conocidas de AlienVault’s Open Threat Exchange, la Wayback Machine y Common Crawl para cualquier dominio dado.
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
- SubDomainizer y subscraper: Rastrean la web buscando archivos JS y extraen subdomains desde ahí.
# Get only subdomains from SubDomainizer
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com
# Get only subdomains from subscraper, this already perform recursion over the found results
python subscraper.py -u tesla.com | grep tesla.com | cut -d " " -f
# Get info about the domain
shodan domain <domain>
# Get other pages with links to subdomains
shodan search "http.html:help.domain.com"
export CENSYS_API_ID=...
export CENSYS_API_SECRET=...
python3 censys-subdomain-finder.py tesla.com
python3 DomainTrail.py -d example.com
- securitytrails.com tiene una API gratuita para buscar subdomains e IP history
- chaos.projectdiscovery.io
Este proyecto ofrece de forma gratuita todos los subdomains relacionados con bug-bounty programs. Puedes acceder a estos datos también usando chaospy o incluso acceder al scope usado por este proyecto https://github.com/projectdiscovery/chaos-public-program-list
Puedes encontrar una comparación de muchas de estas herramientas aquí: https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off
DNS Brute force
Intentemos encontrar nuevos subdomains haciendo brute-force a DNS servers usando posibles nombres de subdominio.
Para esta acción necesitarás algunas common subdomains wordlists como:
- https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056
- https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt
- https://localdomain.pw/subdomain-bruteforce-list/all.txt.zip
- https://github.com/pentester-io/commonspeak
- https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS
Y también IPs de buenos DNS resolvers. Para generar una lista de DNS resolvers de confianza puedes descargar los resolvers de https://public-dns.info/nameservers-all.txt y usar dnsvalidator para filtrarlos. O puedes usar: https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt
Las herramientas más recomendadas para DNS brute-force son:
- massdns: Esta fue la primera herramienta que realizó un DNS brute-force efectivo. Es muy rápida, sin embargo es propensa a false positives.
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
- gobuster: Creo que este solo usa 1 resolver
gobuster dns -d mysite.com -t 50 -w subdomains.txt
- shuffledns es un wrapper alrededor de
massdns, escrito en go, que te permite enumerar subdominios válidos usando active bruteforce, así como resolver subdominios con wildcard handling y soporte sencillo de entrada/salida.
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
- puredns: También usa
massdns.
puredns bruteforce all.txt domain.com
- aiodnsbrute usa asyncio para realizar brute force sobre nombres de dominio de forma asíncrona.
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
Segunda ronda de brute-force DNS
Después de haber encontrado subdominios usando fuentes abiertas y brute-forcing, podrías generar alteraciones de los subdominios encontrados para intentar encontrar aún más. Varias herramientas son útiles para este propósito:
- dnsgen: Toma los dominios y subdominios y genera permutaciones.
cat subdomains.txt | dnsgen -
- goaltdns: Genera permutaciones a partir de los dominios y subdominios.
- Puedes obtener la wordlist de permutaciones de goaltdns en here.
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
- gotator: Genera permutaciones a partir de dominios y subdominios. Si no se indica un archivo de permutaciones, gotator usará el suyo.
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
- altdns: Además de generar permutaciones de subdomains, también puede intentar resolverlas (pero es mejor usar las herramientas comentadas anteriormente).
- Puedes obtener la wordlist de permutaciones de altdns en here.
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
- dmut: Otra herramienta para realizar permutaciones, mutaciones y alteraciones de subdominios. Esta herramienta hará brute force del resultado (no soporta dns wild card).
- Puedes obtener la wordlist de permutaciones de dmut en here.
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
- alterx: Basado en un dominio, genera nuevos nombres potenciales de subdomains según patrones indicados para intentar descubrir más subdomains.
Generación inteligente de permutaciones
- regulator: Para más info, lee esta entrada, pero básicamente obtendrá las partes principales de los subdomains descubiertos y las mezclará para encontrar más subdomains.
python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid
- subzuf: subzuf es un subdomain brute-force fuzzer acoplado a un algoritmo DNS response-guided inmensamente simple pero efectivo. Utiliza un conjunto proporcionado de datos de entrada, como una wordlist personalizada o registros históricos DNS/TLS, para sintetizar con precisión más nombres de dominio correspondientes y expandirlos aún más en un bucle basado en la información recopilada durante el escaneo DNS.
echo www | subzuf facebook.com
Subdomain Discovery Workflow
Consulta este blog que escribí sobre cómo automate the subdomain discovery desde un dominio usando Trickest workflows para no tener que lanzar manualmente un montón de herramientas en mi equipo:
https://trickest.com/blog/full-subdomain-discovery-using-workflow/
https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/
VHosts / Virtual Hosts
Si encuentras una dirección IP que contiene una o varias páginas web pertenecientes a subdominios, podrías intentar find other subdomains with webs in that IP buscando en fuentes OSINT dominios asociados a esa IP o mediante brute-forcing VHost domain names in that IP.
OSINT
Puedes encontrar algunos VHosts en IPs usando HostHunter u otras APIs.
Brute Force
Si sospechas que algún subdominio puede estar oculto en un servidor web, podrías intentar hacer brute force:
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
gobuster vhost -u https://mysite.com -t 50 -w subdomains.txt
wfuzz -c -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-20000.txt --hc 400,404,403 -H "Host: FUZZ.example.com" -u http://example.com -t 100
#From https://github.com/allyshka/vhostbrute
vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com" --vhosts="vhosts_full.list"
#https://github.com/codingo/VHostScan
VHostScan -t example.com
Tip
Con esta técnica incluso podrías acceder a endpoints internos/ocultos.
CORS Brute Force
A veces encontrarás páginas que solo devuelven la cabecera Access-Control-Allow-Origin cuando un dominio/subdomain válido está establecido en la cabecera Origin. En esos casos, puedes abusar de este comportamiento para descubrir nuevos subdomains.
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
Buckets Brute Force
Mientras buscas subdomains estate atento para ver si está pointing a algún tipo de bucket, y en ese caso check the permissions.
También, como en este punto conocerás todos los dominios dentro del scope, intenta brute force possible bucket names and check the permissions.
Monitorización
Puedes monitor si se crean new subdomains de un dominio monitorizando los Logs de Certificate Transparency como lo hace sublert .
Buscando vulnerabilidades
Revisa posibles subdomain takeovers.
Si el subdomain está pointing a algún S3 bucket, check the permissions.
Si encuentras algún subdomain with an IP different de los que ya encontraste en el assets discovery, deberías realizar un basic vulnerability scan (usando Nessus u OpenVAS) y algunos port scan con nmap/masscan/shodan. Dependiendo de qué servicios estén corriendo, puedes encontrar en este libro algunos trucos para “atacarlos”.
Nota que a veces el subdomain está alojado en una IP que no es controlada por el cliente, por lo que no está en el scope; ten cuidado.
IPs
En los pasos iniciales quizá hayas encontrado algunos IP ranges, domains y subdomains.
Es hora de recopilar todas las IPs de esos ranges y de los domains/subdomains (DNS queries).
Usando servicios de las siguientes free apis también puedes encontrar previous IPs used by domains and subdomains. Estas IPs podrían seguir siendo propiedad del cliente (y podrían permitirte encontrar CloudFlare bypasses)
También puedes comprobar qué domains apuntan a una IP específica usando la herramienta hakip2host
Buscando vulnerabilidades
Port scan all the IPs that doesn’t belong to CDNs (ya que muy probablemente no encontrarás nada interesante allí). En los servicios en ejecución que descubras podrías poder encontrar vulnerabilidades.
Find a guide about how to scan hosts.
Búsqueda de servidores web
Hemos encontrado todas las empresas y sus assets y conocemos los IP ranges, domains y subdomains dentro del scope. Es hora de buscar servidores web.
En los pasos previos probablemente ya realizaste algo de recon of the IPs and domains discovered, por lo que puede que ya hayas already found all the possible web servers. Sin embargo, si no lo has hecho vamos a ver algunos fast tricks to search for web servers dentro del scope.
Por favor, ten en cuenta que esto estará oriented for web apps discovery, así que también deberías perform the vulnerability y port scanning (si está permitido por el scope).
Un fast method para descubrir ports open relacionados con servidores web usando masscan can be found here.
Otra herramienta amigable para buscar web servers es httprobe, fprobe y httpx. Simplemente pasas una lista de domains y tratará de conectarse al puerto 80 (http) y 443 (https). Adicionalmente, puedes indicar que pruebe otros puertos:
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
Capturas de pantalla
Ahora que has descubierto all the web servers presentes en el scope (entre las IPs de la empresa y todos los domains y subdomains) probablemente no sepas por dónde empezar. Así que simplifiquemos: comienza tomando screenshots de todos ellos. Con solo echar un vistazo a la main page puedes encontrar endpoints extraños que son más propensos a ser vulnerables.
Para llevar a cabo esta idea puedes usar EyeWitness, HttpScreenshot, Aquatone, Shutter, Gowitness o webscreenshot.
Además, podrías usar eyeballer para procesar todas las screenshots y decirte qué es probable que contenga vulnerabilidades, y qué no.
Activos Cloud Públicos
Para encontrar posibles activos cloud pertenecientes a una empresa deberías comenzar con una lista de keywords que identifiquen esa empresa. Por ejemplo, para una empresa crypto podrías usar palabras como: “crypto”, “wallet”, “dao”, “<domain_name>”, <“subdomain_names”>.
También necesitarás wordlists de palabras comunes usadas en buckets:
- https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt
- https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt
- https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt
Luego, con esas palabras deberías generar permutations (revisa Second Round DNS Brute-Force para más info).
Con las wordlists resultantes podrías usar herramientas como cloud_enum, CloudScraper, cloudlist o S3Scanner.
Recuerda que cuando busques Cloud Assets deberías buscar más que solo buckets en AWS.
Buscando vulnerabilidades
Si encuentras cosas como open buckets or cloud functions exposed deberías acceder a ellas e intentar ver qué te ofrecen y si puedes abusar de ellas.
Emails
Con los domains y subdomains dentro del scope básicamente tienes todo lo que necesitas para empezar a buscar emails. Estas son las APIs y herramientas que mejor me han funcionado para encontrar emails de una empresa:
- theHarvester - con APIs
- API de https://hunter.io/ (versión free)
- API de https://app.snov.io/ (versión free)
- API de https://minelead.io/ (versión free)
Buscando vulnerabilidades
Los emails serán útiles más tarde para brute-force de logins web y servicios de auth (como SSH). También son necesarios para phishings. Además, estas APIs te darán más info sobre la persona detrás del email, lo cual es útil para la campaña de phishing.
Credential Leaks
Con los domains, subdomains, y emails puedes empezar a buscar credenciales leaked en el pasado que pertenezcan a esos emails:
Buscando vulnerabilidades
Si encuentras credenciales leaked válidas, es una victoria muy sencilla.
Secrets Leaks
Los credential leaks están relacionados con hacks de empresas donde se filtró y vendió información sensible. Sin embargo, las empresas pueden verse afectadas por otros tipos de leaks cuya info no aparece en esas bases de datos:
Github Leaks
Credentials y API keys pueden estar leak en los public repositories de la company o de los users que trabajan para esa company.
Puedes usar la herramienta Leakos para download todos los public repos de una organization y de sus developers y ejecutar gitleaks sobre ellos automáticamente.
Leakos también puede usarse para ejecutar gitleaks contra todos los text proporcionados en URLs que le pases, ya que a veces las web pages también contienen secrets.
Github Dorks
Revisa también esta page para posibles github dorks que podrías buscar en la organización que estás atacando:
Pastes Leaks
A veces atacantes o incluso empleados publican contenido de la empresa en un paste site. Esto puede o no contener información sensible, pero es muy interesante buscarlo.
Puedes usar la herramienta Pastos para buscar en más de 80 paste sites a la vez.
Google Dorks
Los viejos pero efectivos google dorks siempre son útiles para encontrar info expuesta que no debería estar ahí. El problema es que la google-hacking-database contiene varios thousands de queries posibles que no puedes ejecutar manualmente. Así que puedes quedarte con tus 10 favoritas o usar una herramienta como Gorks para ejecutarlas todas.
Ten en cuenta que las herramientas que intentan ejecutar toda la database usando el navegador regular de Google nunca acabarán porque Google te bloqueará muy, muy pronto.
Buscando vulnerabilidades
Si encuentras credenciales o API tokens leaked válidos, es una victoria muy sencilla.
Public Code Vulnerabilities
Si descubres que la empresa tiene open-source code puedes analizarlo y buscar vulnerabilidades en él.
Dependiendo del lenguaje hay diferentes herramientas que puedes usar:
Source code Review / SAST Tools
También hay servicios gratuitos que permiten scan de repos public, como:
Pentesting Web Methodology
La mayoría de las vulnerabilidades encontradas por bug hunters reside dentro de web applications, así que en este punto me gustaría hablar de una web application testing methodology, y puedes find this information here.
También quiero mencionar especialmente la sección Web Automated Scanners open source tools, ya que, aunque no deberías esperar que encuentren vulnerabilidades muy sensibles, son útiles para integrarlas en workflows y obtener información web inicial.
Recapitulación
¡Congratulations! En este punto ya has realizado all the basic enumeration. Sí, es básico porque se puede hacer mucha más enumeración (veremos más trucos luego).
Así que ya has:
- Encontrado todas las companies dentro del scope
- Encontrado todos los assets pertenecientes a las companies (y realizado algún vuln scan si está in scope)
- Encontrado todos los domains pertenecientes a las companies
- Encontrado todos los subdomains de los domains (¿algún subdomain takeover?)
- Encontrado todas las IPs (de y not from CDNs) dentro del scope.
- Encontrado todos los web servers y tomado una screenshot de ellos (¿algo weird que merezca una revisión más profunda?)
- Encontrado todos los potential public cloud assets pertenecientes a la company.
- Emails, credentials leaks, y secret leaks que podrían darte una big win very easily.
- Pentesting all the webs you found
Full Recon Automatic Tools
Hay varias herramientas que realizarán parte de las acciones propuestas contra un scope dado.
- https://github.com/yogeshojha/rengine
- https://github.com/j3ssie/Osmedeus
- https://github.com/six2dez/reconftw
- https://github.com/hackerspider1/EchoPwn - Un poco viejo y sin actualizar
Referencias
- Todos los cursos free de @Jhaddix como The Bug Hunter’s Methodology v4.0 - Recon Edition
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


