Metodologia de External Recon
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Descobertas de assets
Então foi dito que tudo pertencente a alguma empresa está dentro do escopo, e você quer descobrir o que essa empresa realmente possui.
O objetivo desta fase é obter todas as empresas pertencentes à empresa principal e então todos os assets dessas empresas. Para isso, vamos:
- Encontrar as aquisições da empresa principal; isso nos dará as empresas dentro do escopo.
- Encontrar o ASN (se houver) de cada empresa; isso nos dará os intervalos de IP pertencentes a cada empresa
- Usar reverse whois lookups para pesquisar por outras entradas (nomes de organização, domains…) relacionadas à primeira (isso pode ser feito recursivamente)
- Usar outras técnicas como shodan
organdsslfilters para buscar outros assets (ossltrick pode ser feito recursivamente).
Aquisições
Primeiro, precisamos saber quais outras empresas são propriedade da empresa principal.
Uma opção é visitar https://www.crunchbase.com/, procurar pela empresa principal, e clicar em “acquisitions”. Lá você verá outras empresas adquiridas pela principal.
Outra opção é visitar a página da Wikipedia da empresa principal e procurar por acquisitions.
Para empresas públicas, verifique SEC/EDGAR filings, páginas de investor relations, ou registros corporativos locais (por exemplo, Companies House no Reino Unido).
Para árvores corporativas globais e subsidiárias, tente OpenCorporates (https://opencorporates.com/) e o banco de dados GLEIF LEI (https://www.gleif.org/).
Ok, neste ponto você deveria conhecer todas as empresas dentro do escopo. Vamos descobrir como encontrar os assets delas.
ASNs
Um número de sistema autônomo (ASN) é um número único atribuído a um sistema autônomo (AS) pela Internet Assigned Numbers Authority (IANA).
Um AS consiste em blocos de endereços IP que têm uma política bem definida para acesso a redes externas e são administrados por uma única organização, mas podem ser compostos por vários operadores.
É interessante descobrir se a empresa atribuiu algum ASN para encontrar seus intervalos de IP. Será interessante realizar um vulnerability test contra todos os hosts dentro do scope e buscar domains dentro desses IPs.
Você pode pesquisar pelo nome da empresa, por IP ou por domain em https://bgp.he.net/, https://bgpview.io/ ou https://ipinfo.io/.
Dependendo da região da empresa, esses links podem ser úteis para coletar mais dados: AFRINIC (Africa), Arin(North America), APNIC (Asia), LACNIC (Latin America), RIPE NCC (Europe). De qualquer forma, provavelmente todas as informações úteis (intervalos de IP e Whois) já aparecem no primeiro link.
#You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla
amass intel -asn 8911,50313,394161
Além disso, a enumeração BBOT’s agrega e resume automaticamente os ASNs ao final do scan.
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: +----------+---------------------+--------------+----------------+----------------------------+-----------+
Você pode encontrar as faixas de IP de uma organização também usando http://asnlookup.com/ (tem API gratuita).
Você pode encontrar o IP e o ASN de um domínio usando http://ipv4info.com/.
Procurando vulnerabilidades
Neste ponto sabemos todos os ativos dentro do escopo, então se você tiver permissão pode executar alguns vulnerability scanner (Nessus, OpenVAS, Nuclei) em todos os hosts.
Além disso, você poderia executar alguns port scans ou usar serviços como Shodan, Censys, ou ZoomEye para encontrar portas abertas e dependendo do que você encontrar você deve consultar este livro sobre como pentest vários serviços possíveis em execução.
Também vale mencionar que você pode preparar algumas listas padrão de username e passwords e tentar bruteforce serviços com https://github.com/x90skysn3k/brutespray.
Domínios
Sabemos todas as empresas dentro do escopo e seus ativos, é hora de encontrar os domínios dentro do escopo.
Por favor, note que nas técnicas propostas a seguir você também pode encontrar subdomínios e essa informação não deve ser subestimada.
Primeiro de tudo você deve procurar os domínio(s) principal(is) de cada empresa. Por exemplo, para Tesla Inc. será tesla.com.
Reverse DNS
Como você encontrou todas as faixas de IP dos domínios, você pode tentar realizar reverse dns lookups nesses IPs para encontrar mais domínios dentro do escopo. Tente usar algum dns server da vítima ou algum dns server bem conhecido (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 isso funcionar, o administrador tem que habilitar manualmente o PTR.
Você também pode usar uma ferramenta online para essa informação: http://ptrarchive.com/.
Para grandes ranges, ferramentas como massdns e dnsx são úteis para automatizar reverse lookups e enrichment.
Reverse Whois (loop)
Dentro de um whois você pode encontrar muita informação interessante como nome da organização, endereço, emails, números de telefone… Mas o que é ainda mais interessante é que você pode encontrar mais assets relacionados à empresa se realizar reverse whois lookups por qualquer um desses campos (por exemplo outros registros whois onde o mesmo email aparece).
Você pode usar ferramentas online como:
- https://viewdns.info/reversewhois/ - Gratuito
- https://domaineye.com/reverse-whois - Gratuito
- https://www.reversewhois.io/ - Gratuito
- https://www.whoxy.com/ - Gratuito web, API não gratuito.
- http://reversewhois.domaintools.com/ - Não gratuito
- https://drs.whoisxmlapi.com/reverse-whois-search - Não gratuito (apenas 100 pesquisas gratuitas)
- https://www.domainiq.com/ - Não gratuito
- https://securitytrails.com/ - Não gratuito (API)
- https://whoisfreaks.com/ - Não gratuito (API)
Você pode automatizar essa tarefa usando DomLink (requer uma chave de API whoxy).
Você também pode realizar alguma descoberta automática de reverse whois com amass: amass intel -d tesla.com -whois
Note que você pode usar esta técnica para descobrir mais nomes de domínio toda vez que encontrar um novo domínio.
Trackers
Se encontrar o mesmo ID do mesmo tracker em 2 páginas diferentes você pode supor que ambas as páginas são gerenciadas pela mesma equipe.
Por exemplo, se você vê o mesmo Google Analytics ID ou o mesmo Adsense ID em várias páginas.
Existem algumas páginas e ferramentas que permitem buscar por esses trackers e mais:
- Udon
- BuiltWith
- Sitesleuth
- Publicwww
- SpyOnWeb
- Webscout (encontra sites relacionados por analytics/trackers compartilhados)
Favicon
Você sabia que podemos encontrar domínios e subdomínios relacionados ao nosso alvo procurando o mesmo hash do ícone favicon? É exatamente isso que a ferramenta favihash.py criada por @m4ll0k2 faz. Aqui está como usá-la:
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

Simplificando, favihash nos permitirá descobrir domínios que tenham o mesmo favicon icon hash que o nosso alvo.
Além disso, você também pode pesquisar tecnologias usando o favicon hash como explicado em this blog post. Isso significa que, se você souber o hash do favicon de uma versão vulnerável de uma tecnologia web, você pode procurá-lo no shodan e encontrar mais locais vulneráveis:
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
É assim que você pode calcular o favicon hash de um site:
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
Você também pode obter favicon hashes em larga escala com httpx (httpx -l targets.txt -favicon) e então pivotar no Shodan/Censys.
Copyright / Uniq string
Procure dentro das páginas web strings que possam ser compartilhadas entre diferentes sites da mesma organização. A copyright string pode ser um bom exemplo. Em seguida, pesquise por essa string no google, em outros browsers ou até no shodan: shodan search http.html:"Copyright string"
CRT Time
É comum ter um cron job such as
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
para renovar todos os certificados de domínio no servidor. Isso significa que, mesmo que a CA usada para isso não registre o tempo de geração no campo Validity, é possível encontrar domínios pertencentes à mesma empresa nos logs de certificate transparency.
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
Informações de DMARC de e-mail
Você pode usar um site como [https://dmarc.live/info/google.com] ou uma ferramenta como [https://github.com/Tedixx/dmarc-subdomains] para encontrar domínios e subdomínios que compartilham as mesmas informações de DMARC.
Outras ferramentas úteis são spoofcheck e dmarcian.
Passive Takeover
Aparentemente é comum que pessoas atribuam subdomínios a IPs que pertencem a provedores de nuvem e, em algum momento, perder esse endereço IP mas esquecer de remover o registro DNS. Portanto, simplesmente criar uma VM em uma nuvem (como Digital Ocean) fará com que você, na prática, assuma alguns subdomínios.
This post explica uma história sobre isso e propõe um script que cria uma VM no DigitalOcean, obtém o IPv4 da nova máquina, e procura no Virustotal por registros de subdomínio apontando para ela.
Outras maneiras
Observe que você pode usar esta técnica para descobrir mais nomes de domínio toda vez que encontrar um novo domínio.
Shodan
Como você já sabe o nome da organização dona do espaço de IP, você pode buscar por esses dados no shodan usando: org:"Tesla, Inc." Verifique os hosts encontrados para domínios novos e inesperados no certificado TLS.
You could access the TLS certificate of the main web page, obtain the Organisation name and then search for that name inside the TLS certificates of all the web pages known by shodan with the filter : ssl:"Tesla Motors" or use a tool like sslsearch.
Assetfinder é uma ferramenta que busca por domínios relacionados a um domínio principal e subdomínios dos mesmos, muito boa.
Passive DNS / Historical DNS
Dados de Passive DNS são excelentes para encontrar registros antigos e esquecidos que ainda resolvem ou que podem ser assumidos. Veja:
- https://securitytrails.com/
- https://community.riskiq.com/ (PassiveTotal)
- https://www.domaintools.com/products/iris/
- https://www.farsightsecurity.com/solutions/dnsdb/
Procurando por vulnerabilidades
Verifique por algum domain takeover. Talvez alguma empresa esteja usando algum domínio mas tenha perdido a propriedade. Basta registrá-lo (se for barato o suficiente) e avisar a empresa.
Se você encontrar qualquer domínio com um IP diferente daqueles que já encontrou na descoberta de ativos, você deve realizar um basic vulnerability scan (usando Nessus ou OpenVAS) e alguns port scan com nmap/masscan/shodan. Dependendo de quais serviços estejam ativos, você pode encontrar neste livro alguns truques para “atacar” eles.
Observe que às vezes o domínio está hospedado em um IP que não é controlado pelo cliente, portanto não está dentro do escopo — tenha cuidado.
dnsrecon -a -d tesla.com
OSINT
A maneira mais rápida de obter muitos subdomínios é pesquisar em fontes externas. As ferramentas mais usadas são as seguintes (para melhores resultados configure as chaves de API):
# 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"
Existem outras ferramentas/APIs interessantes que, mesmo não sendo especificamente voltadas para encontrar subdomínios, podem ser úteis para isso, por exemplo:
- Crobat: Usa a API https://sonar.omnisint.io para obter subdomínios
# 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: recupera URLs conhecidas do AlienVault’s Open Threat Exchange, do Wayback Machine e do Common Crawl para qualquer domínio.
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
- SubDomainizer & subscraper: Eles varrem a web procurando por arquivos JS e extraem subdomínios a partir daí.
# 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 possui uma API gratuita para pesquisar por subdomains e histórico de IPs
- chaos.projectdiscovery.io
Este projeto oferece gratuitamente todos os subdomains relacionados a programas de bug-bounty. Você também pode acessar esses dados usando chaospy ou até acessar o scope usado por este projeto https://github.com/projectdiscovery/chaos-public-program-list
Você pode encontrar uma comparação de muitas dessas ferramentas aqui: https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off
DNS Brute force
Vamos tentar encontrar novos subdomains brute-forcing servidores DNS usando nomes de subdomain possíveis.
Para esta ação você vai precisar de algumas wordlists comuns de subdomains, 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
E também os IPs de bons DNS resolvers. Para gerar uma lista de resolvers DNS confiáveis você pode baixar os resolvers de https://public-dns.info/nameservers-all.txt e usar dnsvalidator para filtrá-los. Ou você poderia usar: https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt
As ferramentas mais recomendadas para DNS brute-force são:
- massdns: Esta foi a primeira ferramenta que realizou um DNS brute-force efetivo. É muito rápida, porém propensa a falsos positivos.
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: Este, eu acho, usa apenas 1 resolver
gobuster dns -d mysite.com -t 50 -w subdomains.txt
- shuffledns é um wrapper em torno de
massdns, escrito em go, que permite enumerar subdomínios válidos usando bruteforce ativo, além de resolver subdomínios com tratamento de wildcard e suporte fácil de entrada/saída.
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
- puredns: Também usa
massdns.
puredns bruteforce all.txt domain.com
- aiodnsbrute usa asyncio para realizar brute force em nomes de domínio de forma assíncrona.
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
Segunda Rodada de Brute-Force DNS
Após encontrar subdomínios usando fontes abertas e brute-forcing, você pode gerar variações dos subdomínios encontrados para tentar localizar ainda mais. Várias ferramentas são úteis para esse propósito:
- dnsgen: Dados os domínios e subdomínios, gera permutações.
cat subdomains.txt | dnsgen -
- goaltdns: A partir de domínios e subdomínios, gera permutações.
- Você pode obter a wordlist de permutações do goaltdns em here.
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
- gotator: Gera permutações a partir dos domínios e subdomínios. Se nenhum arquivo de permutações for indicado, gotator usará seu próprio arquivo.
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
- altdns: Além de gerar permutações de subdomínios, também pode tentar resolvê-las (mas é melhor usar as ferramentas comentadas anteriormente).
- Você pode obter a wordlist de permutações do altdns em here.
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
- dmut: Outra ferramenta para realizar permutations, mutations e alteration de subdomains. Esta ferramenta irá brute force o resultado (não suporta dns wild card).
- Você pode obter a wordlist de permutations do dmut em here.
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
- alterx: Com base em um domain, ele gera novos nomes potenciais de subdomains com base em padrões indicados para tentar descobrir mais subdomains.
Geração inteligente de permutações
- regulator: Para mais informações leia este post mas ele basicamente vai obter as partes principais dos subdomains descobertos e irá misturá-las para encontrar mais 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 é um subdomain brute-force fuzzer acoplado a um algoritmo guiado por resposta DNS imensamente simples mas eficaz. Ele utiliza um conjunto fornecido de dados de entrada, como uma wordlist personalizada ou registros históricos DNS/TLS, para sintetizar com precisão mais nomes de domínio correspondentes e expandi-los ainda mais em um loop com base nas informações coletadas durante o DNS scan.
echo www | subzuf facebook.com
Fluxo de Descoberta de Subdomínios
Confira este post do blog que escrevi sobre como automatizar a descoberta de subdomínios de um domínio usando Trickest workflows, para que eu não precise executar manualmente várias ferramentas no meu computador:
https://trickest.com/blog/full-subdomain-discovery-using-workflow/
https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/
VHosts / Virtual Hosts
Se você encontrou um endereço IP contendo uma ou várias páginas web pertencentes a subdomínios, você pode tentar encontrar outros subdomínios com sites nesse IP procurando em fontes OSINT por domínios naquele IP ou fazendo brute-forcing de nomes de domínio VHost nesse IP.
OSINT
Você pode encontrar alguns VHosts em IPs usando HostHunter ou outras APIs.
Brute Force
Se você suspeita que algum subdomínio possa estar oculto em um servidor web, você pode tentar brute force:
Quando o IP redirects to a hostname (name-based vhosts), fuzz the Host header directly and let ffuf auto-calibrate to highlight responses that differ from the default vhost:
ffuf -u http://10.10.10.10 -H "Host: FUZZ.example.com" \
-w /opt/SecLists/Discovery/DNS/subdomains-top1million-20000.txt -ac
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
Com esta técnica você pode até conseguir acessar endpoints internos/ocultos.
CORS Brute Force
Às vezes você encontrará páginas que só retornam o header Access-Control-Allow-Origin quando um domain/subdomain válido estiver definido no header Origin. Nesses cenários, você pode abusar desse comportamento para descobrir novos 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
Ao procurar por subdomains fique atento para ver se está pointing para algum tipo de bucket, e, nesse caso, check the permissions.
Além disso, como neste ponto você já conhecerá todos os domínios dentro do escopo, tente brute force possible bucket names and check the permissions.
Monitorization
Você pode monitorar se new subdomains de um domínio são criados monitorando os Logs de Certificate Transparency que o sublert faz.
Looking for vulnerabilities
Verifique possíveis subdomain takeovers.
Se o subdomain estiver pointing para algum S3 bucket, check the permissions.
Se você encontrar qualquer subdomain with an IP different dos que já encontrou na discovery de assets, deve executar um basic vulnerability scan (usando Nessus ou OpenVAS) e alguns port scan com nmap/masscan/shodan. Dependendo de quais serviços estiverem rodando, você pode encontrar neste livro alguns truques para “attack” them.
Observe que às vezes o subdomain está hospedado em um IP que não é controlado pelo cliente, então não está no escopo — tenha cuidado.
IPs
Nos passos iniciais você pode ter encontrado alguns IP ranges, domains e subdomains.
É hora de recolher todos os IPs desses ranges e os relativos aos domains/subdomains (DNS queries).
Usando serviços das seguintes free apis você também pode encontrar previous IPs used by domains and subdomains. Esses IPs podem ainda ser de propriedade do cliente (e podem permitir que você encontre CloudFlare bypasses)
Você também pode checar por domains apontando para um IP específico usando a ferramenta hakip2host
Looking for vulnerabilities
Port scan all the IPs that doesn’t belong to CDNs (já que provavelmente você não encontrará nada de interesse lá). Nos serviços em execução que descobrir, você pode encontrar vulnerabilidades.
Find a guide about how to scan hosts.
Web servers hunting
Encontramos todas as empresas e seus assets e sabemos os IP ranges, domains e subdomains dentro do escopo. É hora de procurar por web servers.
Nos passos anteriores você provavelmente já realizou algum recon of the IPs and domains discovered, então pode ter already found all the possible web servers. Contudo, se não tiver, agora vamos ver alguns fast tricks to search for web servers dentro do escopo.
Por favor, note que isso será oriented for web apps discovery, então você deve perform the vulnerability e port scanning também (se permitido pelo escopo).
Um fast method para descobrir ports open relacionados a web servers usando masscan can be found here.
Outra ferramenta amigável para procurar web servers é httprobe, fprobe e httpx. Você só precisa passar uma lista de domains e ele tentará conectar na porta 80 (http) e 443 (https). Além disso, você pode indicar para testar outras portas:
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 Tela
Agora que você descobriu todos os servidores web presentes no escopo (entre os IPs da empresa e todos os domínios e subdomínios) você provavelmente não sabe por onde começar. Então, vamos simplificar e começar apenas tirando capturas de tela de todos eles. Apenas ao dar uma olhada na página principal você pode encontrar endpoints estranhos que são mais propensos a serem vulneráveis.
Para realizar a ideia proposta você pode usar EyeWitness, HttpScreenshot, Aquatone, Shutter, Gowitness ou webscreenshot.
Além disso, você pode usar eyeballer para analisar todas as capturas de tela e indicar o que provavelmente contém vulnerabilidades, e o que não contém.
Ativos de Cloud Públicos
Para encontrar potenciais assets em cloud pertencentes a uma empresa você deve começar com uma lista de palavras-chave que identifiquem essa empresa. Por exemplo, para uma empresa de crypto você pode usar palavras como: "crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">.
Você também precisará de wordlists de palavras comuns usadas em 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
Então, com essas palavras você deve gerar permutations (veja o Second Round DNS Brute-Force para mais info).
Com as wordlists resultantes você pode usar ferramentas como cloud_enum, CloudScraper, cloudlist ou S3Scanner.
Lembre-se que ao procurar por Cloud Assets você deve procurar por mais do que apenas buckets na AWS.
Procurando por vulnerabilidades
Se você encontrar coisas como open buckets or cloud functions exposed você deve acessá-las e tentar ver o que elas oferecem e se você pode abusar delas.
Emails
Com os domínios e subdomínios dentro do escopo você basicamente tem tudo o que é necessário para começar a buscar emails. Estas são as APIs e tools que funcionaram melhor para mim ao encontrar emails de uma empresa:
- theHarvester - with APIs
- API of https://hunter.io/ (free version)
- API of https://app.snov.io/ (free version)
- API of https://minelead.io/ (free version)
Procurando por vulnerabilidades
Emails serão úteis mais tarde para brute-force web logins and auth services (such as SSH). Além disso, eles são necessários para phishings. Ademais, essas APIs vão fornecer ainda mais info about the person por trás do email, o que é útil para a campanha de phishing.
Credential Leaks
Com os domínios, subdomínios, e emails você pode começar a procurar por credentials leaked no passado pertencentes àqueles emails:
Procurando por vulnerabilidades
Se você encontrar valid leaked credentials, isso é uma vitória muito fácil.
Secrets Leaks
Credential leaks estão relacionadas a hacks de empresas onde sensitive information was leaked and sold. Entretanto, empresas podem ser afetadas por outros leaks cujas informações não estão nessas bases de dados:
Github Leaks
Credentials e APIs podem ser leaked em repositórios públicos da empresa ou dos usuários que trabalham nessa organização do Github.
Você pode usar a tool Leakos para baixar todos os public repos de uma organization e de seus developers e rodar gitleaks sobre eles automaticamente.
Leakos também pode ser usado para rodar gitleaks contra todos os texto das URLs fornecidas a ele, pois às vezes web pages also contains secrets.
Github Dorks
Verifique também esta page para potenciais github dorks que você também poderia buscar na organização que está atacando:
Pastes Leaks
Às vezes atacantes ou simplesmente funcionários vão publicar conteúdo da empresa em um site de paste. Isso pode ou não conter informações sensíveis, mas é muito interessante buscar por isso.
Você pode usar a ferramenta Pastos para pesquisar em mais de 80 sites de paste ao mesmo tempo.
Google Dorks
Google dorks antigos, mas úteis, sempre ajudam a encontrar informação exposta que não deveria estar lá. O único problema é que a google-hacking-database contém várias milhares de queries possíveis que você não consegue executar manualmente. Então, você pode pegar suas 10 favoritas ou usar uma ferramenta como Gorks para executá-las todas.
Note que as ferramentas que tentam executar toda a database usando o navegador regular do Google nunca terminarão, já que o Google vai te bloquear muito, muito rápido.
Procurando por vulnerabilidades
Se você encontrar valid leaked credentials ou API tokens, isso é uma vitória muito fácil.
Vulnerabilidades em Código Público
Se você descobrir que a empresa tem open-source code você pode analisá-lo e procurar por vulnerabilidades nele.
Dependendo da linguagem existem diferentes tools que você pode usar:
Source code Review / SAST Tools
Também existem serviços gratuitos que permitem scan de repositórios públicos, tais como:
Pentesting Web Methodology
A maioria das vulnerabilidades encontradas por bug hunters reside dentro de aplicações web, então neste ponto eu gostaria de falar sobre uma metodologia de teste de aplicações web, e você pode encontrar essa informação aqui.
Quero também dar uma menção especial à seção Web Automated Scanners open source tools, pois, mesmo que você não deva esperar que encontrem vulnerabilidades muito sensíveis, elas são úteis para incorporá-las em workflows para obter alguma informação web inicial.
Recapitulação
Parabéns! Neste ponto você já realizou toda a enumeração básica. Sim, é básica porque muito mais enumeração pode ser feita (veremos mais truques depois).
Então você já:
- Encontrou todas as empresas dentro do escopo
- Encontrou todos os ativos pertencentes às empresas (e realizou algum vuln scan se estiver no escopo)
- Encontrou todos os domínios pertencentes às empresas
- Encontrou todos os subdomínios dos domínios (algum subdomain takeover?)
- Encontrou todos os IPs (de e não de CDNs) dentro do escopo.
- Encontrou todos os servidores web e tirou uma captura de tela deles (algo estranho que valha uma investigação mais profunda?)
- Encontrou todos os potenciais ativos de cloud públicos pertencentes à empresa.
- Emails, credentials leaks, e secret leaks que podem te dar um grande ganho com muita facilidade.
- Pentesting em todos os sites que você encontrou
Full Recon Automatic Tools
Existem várias ferramentas por aí que vão executar parte das ações propostas contra um determinado escopo.
- https://github.com/yogeshojha/rengine
- https://github.com/j3ssie/Osmedeus
- https://github.com/six2dez/reconftw
- https://github.com/hackerspider1/EchoPwn - A little old and not updated
Referências
- Todos os cursos gratuitos de @Jhaddix como The Bug Hunter’s Methodology v4.0 - Recon Edition
- 0xdf – HTB: Guardian
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


