hacktricks/generic-methodologies-and-resources/external-recon-methodology
2024-02-23 16:42:31 +00:00
..
github-leaked-secrets.md Translated ['forensics/basic-forensic-methodology/pcap-inspection/usb-ke 2024-02-06 03:39:16 +00:00
README.md Translated ['generic-methodologies-and-resources/external-recon-methodol 2024-02-23 16:42:31 +00:00
wide-source-code-search.md Translated ['forensics/basic-forensic-methodology/pcap-inspection/usb-ke 2024-02-06 03:39:16 +00:00

Metodologia de Reconhecimento Externo

Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Se você está interessado em uma carreira de hacking e hackear o inquebrável - estamos contratando! (fluência em polonês escrita e falada necessária).

{% embed url="https://www.stmcyber.com/careers" %}

Descoberta de Ativos

Então, disseram a você que tudo pertencente a uma 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, em seguida, todos os ativos dessas empresas. Para fazer isso, vamos:

  1. Encontrar as aquisições da empresa principal, isso nos dará as empresas dentro do escopo.
  2. Encontrar o ASN (se houver) de cada empresa, isso nos dará os intervalos de IP de propriedade de cada empresa.
  3. Usar pesquisas de whois reverso para procurar outras entradas (nomes de organizações, domínios...) relacionadas à primeira (isso pode ser feito de forma recursiva).
  4. Usar outras técnicas como filtros org e ssl do shodan para procurar outros ativos (o truque ssl pode ser feito de forma recursiva).

Aquisições

Antes de tudo, precisamos saber quais outras empresas são de propriedade da empresa principal.
Uma opção é visitar https://www.crunchbase.com/, pesquisar pela empresa principal e clicar em "aquisições". Lá você verá outras empresas adquiridas pela principal.
Outra opção é visitar a página da Wikipedia da empresa principal e procurar por aquisições.

Ok, neste ponto você deve saber todas as empresas dentro do escopo. Vamos descobrir como encontrar seus ativos.

ASN

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 possuem uma política claramente definida para acessar redes externas e são administrados por uma única organização, mas podem ser compostos por vários operadores.

É interessante descobrir se a empresa possui algum ASN atribuído para encontrar seus intervalos de IP. Será interessante realizar um teste de vulnerabilidade contra todos os hosts dentro do escopo e procurar domínios dentro desses IPs.
Você pode pesquisar pelo nome da empresa, pelo IP ou pelo domínio em https://bgp.he.net/.
Dependendo da região da empresa, esses links podem ser úteis para reunir mais dados: AFRINIC (África), Arin(América do Norte), APNIC (Ásia), LACNIC (América Latina), RIPE NCC (Europa). 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

Também, a enumeração de subdomínios do BBOT automaticamente agrega e resume ASNs no final da varredura.

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: +----------+---------------------+--------------+----------------+----------------------------+-----------+

Pode encontrar os intervalos de IP de uma organização também usando http://asnlookup.com/ (tem uma API gratuita).
Pode encontrar o IP e ASN de um domínio usando http://ipv4info.com/.

Procurando por vulnerabilidades

Neste ponto, conhecemos todos os ativos dentro do escopo, então, se permitido, você pode lançar algum scanner de vulnerabilidades (Nessus, OpenVAS) em todos os hosts.
Também, você pode lançar alguns scans de porta ou usar serviços como shodan para encontrar portas abertas e, dependendo do que encontrar, você deve consultar este livro para saber como fazer pentest em vários serviços possíveis em execução.
Além disso, vale mencionar que você também pode preparar algumas listas de nomes de usuário e senhas padrão e tentar forçar a entrada em serviços com https://github.com/x90skysn3k/brutespray.

Domínios

Conhecemos 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.

Primeiramente, você deve procurar o(s) domínio(s) principal(is) de cada empresa. Por exemplo, para a Tesla Inc. será tesla.com.

DNS Reverso

Como você encontrou todos os intervalos de IP dos domínios, você pode tentar realizar consultas de DNS reverso nesses IPs para encontrar mais domínios dentro do escopo. Tente usar algum servidor DNS da vítima ou algum servidor DNS 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 que isso funcione, o administrador precisa habilitar manualmente o PTR.
Você também pode usar uma ferramenta online para essa informação: http://ptrarchive.com/

Reverse Whois (loop)

Dentro de um whois, você pode encontrar muitas informações interessantes como nome da organização, endereço, e-mails, números de telefone... Mas o que é ainda mais interessante é que você pode encontrar mais ativos relacionados à empresa se você realizar pesquisas de reverse whois por qualquer um desses campos (por exemplo, outros registros whois onde o mesmo e-mail aparece).
Você pode usar ferramentas online como:

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

Observe que você pode usar essa 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ê ver o mesmo ID do Google Analytics ou o mesmo ID do Adsense em várias páginas.

Existem algumas páginas e ferramentas que permitem pesquisar por esses trackers e mais:

Favicon

Você sabia que podemos encontrar domínios e subdomínios relacionados ao nosso alvo procurando pelo mesmo hash de ícone de favicon? É exatamente isso que a ferramenta favihash.py feita por @m4ll0k2 faz. Veja 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

favihash - descubra domínios com o mesmo hash de ícone de favicon

Simplesmente dito, o favihash nos permitirá descobrir domínios que têm o mesmo hash de ícone de favicon que nosso alvo.

Além disso, você também pode pesquisar tecnologias usando o hash de favicon, conforme explicado neste post de blog. Isso significa que se você conhece o hash do favicon de uma versão vulnerável de uma tecnologia web, você pode pesquisar no shodan e encontrar mais lugares vulneráveis:

shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'

Aqui está como você pode calcular o hash do favicon 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

Direitos autorais / String única

Pesquise nas páginas da web strings que podem ser compartilhadas em diferentes sites na mesma organização. A string de direitos autorais poderia ser um bom exemplo. Em seguida, pesquise essa string no Google, em outros navegadores ou até mesmo no Shodan: shodan search http.html:"String de direitos autorais"

Tempo CRT

É comum ter um trabalho cron como

# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"

Metodologia de Reconhecimento Externo

Renovar todos os certificados de domínio no servidor. Isso significa que mesmo que a AC usada para isso não defina a hora em que foi gerado no tempo de Validade, é possível encontrar domínios pertencentes à mesma empresa nos logs de transparência de certificados.
Confira este artigo para mais informações.

Assunção Passiva

Aparentemente, é comum as pessoas atribuírem subdomínios a IPs que pertencem a provedores de nuvem e, em algum momento, perderem esse endereço IP, mas esquecerem de remover o registro DNS. Portanto, apenas iniciando uma VM em uma nuvem (como Digital Ocean), você estará realmente assumindo o controle de alguns subdomínios.

Este post explica uma história sobre isso e propõe um script que inicia uma VM no DigitalOcean, obtém o IPv4 da nova máquina e pesquisa no Virustotal por registros de subdomínios apontando para ele.

Outras maneiras

Observe que você pode usar essa 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 que possui o espaço IP. Você pode pesquisar por esses dados no Shodan usando: org:"Tesla, Inc." Verifique os hosts encontrados em busca de novos domínios inesperados no certificado TLS.

Você poderia acessar o certificado TLS da página web principal, obter o nome da organização e então procurar por esse nome dentro dos certificados TLS de todas as páginas web conhecidas pelo Shodan com o filtro: ssl:"Tesla Motors" ou usar uma ferramenta como sslsearch.

Assetfinder

Assetfinder é uma ferramenta que procura por domínios relacionados com um domínio principal e subdomínios deles, muito incrível.

Procurando por vulnerabilidades

Verifique por algum domínio assumido. Talvez alguma empresa esteja usando um domínio mas tenha perdido a propriedade. Apenas registre-o (se for barato o suficiente) e avise a empresa.

Se você encontrar algum domínio com um IP diferente dos que você já encontrou na descoberta de ativos, você deve realizar uma varredura de vulnerabilidade básica (usando Nessus ou OpenVAS) e uma varredura de porta com nmap/masscan/shodan. Dependendo de quais serviços estão em execução, você pode encontrar neste livro alguns truques para "atacá-los".
Obs.: Às vezes o domínio está hospedado dentro de um IP que não é controlado pelo cliente, então não está no escopo, tenha cuidado.


Dica de recompensa por bugs: inscreva-se no Intigriti, uma plataforma premium de recompensas por bugs criada por hackers, para hackers! Junte-se a nós em https://go.intigriti.com/hacktricks hoje e comece a ganhar recompensas de até $100.000!

{% embed url="https://go.intigriti.com/hacktricks" %}

Subdomínios

Sabemos todas as empresas dentro do escopo, todos os ativos de cada empresa e todos os domínios relacionados às empresas.

É hora de encontrar todos os possíveis subdomínios de cada domínio encontrado.

DNS

Vamos tentar obter subdomínios dos registros DNS. Também devemos tentar a Transferência de Zona (Se vulnerável, você deve relatar).

dnsrecon -a -d tesla.com

OSINT

A maneira mais rápida de obter muitos subdomínios é pesquisar em fontes externas. As ferramentas mais utilizadas são as seguintes (para obter melhores resultados, configure as chaves da 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 que não sejam diretamente especializadas em encontrar subdomínios, podem ser úteis para encontrar subdomínios, como:

# 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 ".[]"
# 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 conhecidos da AlienVault's Open Threat Exchange, do Wayback Machine e do Common Crawl para qualquer domínio fornecido.
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
# 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

Este projeto oferece gratuitamente todos os subdomínios relacionados aos programas de recompensa por bugs. Você também pode acessar esses dados usando chaospy ou até mesmo acessar o escopo 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 subdomínios forçando servidores DNS usando possíveis nomes de subdomínio.

Para esta ação, você precisará de algumas listas de palavras comuns de subdomínios como:

E também IPs de bons resolvedores de DNS. Para gerar uma lista de resolvedores de DNS confiáveis, você pode baixar os resolvedores de https://public-dns.info/nameservers-all.txt e usar dnsvalidator para filtrá-los. Ou você pode usar: https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt

As ferramentas mais recomendadas para brute force de DNS são:

  • massdns: Esta foi a primeira ferramenta que realizou um brute force de DNS eficaz. É muito rápido, no entanto, está sujeito 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: Eu acho que este usa apenas 1 resolvedor
gobuster dns -d mysite.com -t 50 -w subdomains.txt
  • shuffledns é um wrapper em torno do massdns, escrito em go, que permite enumerar subdomínios válidos usando força bruta ativa, bem como resolver subdomínios com tratamento de curinga e suporte fácil de entrada e saída.
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
  • puredns: Também utiliza massdns.
puredns bruteforce all.txt domain.com
  • aiodnsbrute utiliza asyncio para forçar nomes de domínio de forma assíncrona.
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com

Segunda Rodada de Força Bruta de DNS

Após encontrar subdomínios usando fontes abertas e força bruta, você pode gerar alterações dos subdomínios encontrados para tentar encontrar ainda mais. Várias ferramentas são úteis para esse propósito:

  • dnsgen: Dado os domínios e subdomínios, gera permutações.
cat subdomains.txt | dnsgen -
  • goaltdns: Dado os domínios e subdomínios, gera permutações.
  • Você pode obter a lista de permutações do goaltdns wordlist aqui.
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
  • gotator: Dado os domínios e subdomínios, gera permutações. Se nenhum arquivo de permutações for indicado, o gotator usará o seu próprio.
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ê-los (mas é melhor usar as ferramentas comentadas anteriormente).
  • Você pode obter a lista de palavras de permutações do altdns aqui.
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
  • dmut: Outra ferramenta para realizar permutações, mutações e alterações de subdomínios. Esta ferramenta irá forçar bruta o resultado (não suporta curinga dns).
  • Você pode obter a lista de palavras de permutações do dmut aqui.
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 domínio, gera novos nomes potenciais de subdomínios com base em padrões indicados para tentar descobrir mais subdomínios.

Geração inteligente de permutações

  • regulator: Para mais informações, leia este post, mas basicamente ele irá obter as partes principais dos subdomínios descobertos e irá misturá-las para encontrar mais subdomínios.
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 fuzzer de força bruta de subdomínio acoplado a um algoritmo imensamente simples, mas eficaz, guiado por respostas de DNS. Ele utiliza um conjunto fornecido de dados de entrada, como uma lista de palavras personalizada ou registros históricos de 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 a varredura de DNS.
echo www | subzuf facebook.com

Fluxo de Descoberta de Subdomínio

Confira este post no blog que escrevi sobre como automatizar a descoberta de subdomínios de um domínio usando fluxos de trabalho Trickest para que eu não precise iniciar manualmente um monte de ferramentas no meu computador:

{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

{% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

VHosts / Hosts Virtuais

Se você encontrou um endereço IP contendo uma ou várias páginas da web pertencentes a subdomínios, você pode tentar encontrar outros subdomínios com páginas naquele IP procurando em fontes de OSINT por domínios em um IP ou forçando bruta-mente nomes de domínio VHost naquele IP.

OSINT

Você pode encontrar alguns VHosts em IPs usando HostHunter ou outras APIs.

Força Bruta

Se você suspeitar que algum subdomínio pode estar oculto em um servidor web, você pode tentar forçar bruta-mente:

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

{% hint style="info" %} Com esta técnica, você pode até mesmo ser capaz de acessar endpoints internos/ocultos. {% endhint %}

Força Bruta de CORS

Às vezes, você encontrará páginas que só retornam o cabeçalho Access-Control-Allow-Origin quando um domínio/subdomínio válido é definido no cabeçalho Origin. Nestes cenários, você pode abusar desse comportamento para descobrir novos subdomínios.

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

Força Bruta em Buckets

Enquanto procura por subdomínios, fique atento para ver se está apontando para algum tipo de bucket, e nesse caso verifique as permissões.
Além disso, neste ponto, você conhecerá todos os domínios dentro do escopo, tente forçar possíveis nomes de buckets e verificar as permissões.

Monitoramento

Você pode monitorar se novos subdomínios de um domínio são criados monitorando os Logs de Transparência de Certificados que o sublert faz.

Procurando por vulnerabilidades

Verifique possíveis apropriações de subdomínio.
Se o subdomínio estiver apontando para algum bucket S3, verifique as permissões.

Se encontrar algum subdomínio com um IP diferente dos que já encontrou na descoberta de ativos, você deve realizar uma varredura de vulnerabilidades básica (usando Nessus ou OpenVAS) e uma varredura de portas com nmap/masscan/shodan. Dependendo dos serviços em execução, você pode encontrar neste livro alguns truques para "atacá-los".
Obs.: Às vezes, o subdomínio está hospedado em um IP que não é controlado pelo cliente, portanto, não está no escopo, tenha cuidado.

IPs

Nas etapas iniciais, você pode ter encontrado algumas faixas de IP, domínios e subdomínios.
É hora de recolher todos os IPs dessas faixas e dos domínios/subdomínios (consultas DNS).

Usando serviços das seguintes APIs gratuitas, você também pode encontrar IPs anteriores usados por domínios e subdomínios. Esses IPs ainda podem ser de propriedade do cliente (e podem permitir que você encontre burlas ao CloudFlare)

Você também pode verificar os domínios que apontam para um endereço IP específico usando a ferramenta hakip2host

Procurando por vulnerabilidades

Varredure todos os IPs que não pertencem a CDNs (pois provavelmente não encontrará nada interessante lá). Nos serviços em execução descobertos, você pode ser capaz de encontrar vulnerabilidades.

Encontre um guia sobre como escanear hosts.

Caça a Servidores Web

Encontramos todas as empresas e seus ativos e conhecemos as faixas de IP, domínios e subdomínios dentro do escopo. É hora de procurar por servidores web.

Nas etapas anteriores, você provavelmente já realizou alguma recon dos IPs e domínios descobertos, então você pode ter encontrado todos os possíveis servidores web. No entanto, se não tivermos, agora vamos ver alguns truques rápidos para procurar servidores web dentro do escopo.

Por favor, note que isso será orientado para a descoberta de aplicativos da web, então você deve realizar a vulnerabilidade e a varredura de portas também (se permitido pelo escopo).

Um método rápido para descobrir portas abertas relacionadas a servidores web usando masscan pode ser encontrado aqui.
Outra ferramenta amigável para procurar servidores web é httprobe, fprobe e httpx. Basta passar uma lista de domínios e ele tentará se conectar à porta 80 (http) e 443 (https). Além disso, você pode indicar para tentar 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), provavelmente não sabe por onde começar. Então, vamos simplificar e começar apenas tirando capturas de tela de todos eles. Apenas dando 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 ou webscreenshot.

Além disso, você poderia então usar eyeballer para percorrer todas as capturas de tela e dizer o que provavelmente contém vulnerabilidades e o que não contém.

Ativos de Nuvem Pública

Para encontrar possíveis ativos de nuvem pertencentes a uma empresa, você deve começar com uma lista de palavras-chave que identifiquem essa empresa. Por exemplo, para uma empresa de criptomoedas, você pode usar palavras como: "cripto", "carteira", "dao", "<nome_do_domínio>", <"nomes_de_subdomínio">.

Você também precisará de listas de palavras comuns usadas em buckets:

Em seguida, com essas palavras, você deve gerar permutações (verifique o Segundo Round de Brute-Force DNS para mais informações).

Com as listas de palavras resultantes, você pode usar ferramentas como cloud_enum, CloudScraper, cloudlist ou S3Scanner.

Lembre-se de que ao procurar Ativos de Nuvem, você deve procurar mais do que apenas buckets na AWS.

Procurando por vulnerabilidades

Se você encontrar coisas como buckets abertos ou funções de nuvem expostas, você deve acessá-los e tentar ver o que eles oferecem e se você pode abusar deles.

E-mails

Com os domínios e subdomínios dentro do escopo, você basicamente tem tudo o que precisa para começar a procurar e-mails. Estes são os APIs e ferramentas que funcionaram melhor para mim para encontrar e-mails de uma empresa:

Procurando por vulnerabilidades

Os e-mails serão úteis mais tarde para bruteforce em logins web e serviços de autenticação (como SSH). Além disso, eles são necessários para phishings. Além disso, esses APIs fornecerão ainda mais informações sobre a pessoa por trás do e-mail, o que é útil para a campanha de phishing.

Vazamentos de Credenciais

Com os domínios, subdomínios e e-mails, você pode começar a procurar por credenciais vazadas no passado pertencentes a esses e-mails:

Procurando por vulnerabilidades

Se você encontrar credenciais vazadas válidas, esta é uma vitória muito fácil.

Vazamentos de Segredos

Vazamentos de credenciais estão relacionados a hacks de empresas onde informações sensíveis foram vazadas e vendidas. No entanto, as empresas podem ser afetadas por outros vazamentos cujas informações não estão nesses bancos de dados:

Vazamentos do Github

Credenciais e APIs podem ser vazados nos repositórios públicos da empresa ou dos usuários que trabalham para essa empresa no github.
Você pode usar a ferramenta Leakos para baixar todos os repositórios públicos de uma organização e de seus desenvolvedores e executar gitleaks automaticamente sobre eles.

Leakos também pode ser usado para executar gitleaks em todos os textos fornecidos URLs passadas para ele, pois às vezes páginas da web também contêm segredos.

Dorks do Github

Verifique também esta página para possíveis dorks do github que você também pode pesquisar na organização que está atacando:

{% content-ref url="github-leaked-secrets.md" %} github-leaked-secrets.md {% endcontent-ref %}

Vazamentos de Pastes

Às vezes, atacantes ou apenas trabalhadores irão publicar conteúdo da empresa em um site de paste. Isso pode ou não conter informações sensíveis, mas é muito interessante procurar por isso.
Você pode usar a ferramenta Pastos para pesquisar em mais de 80 sites de paste ao mesmo tempo.

Dorks do Google

Dorks antigos, mas valiosos do Google, são sempre úteis para encontrar informações expostas que não deveriam estar lá. O único problema é que o google-hacking-database contém vários milhares de consultas possíveis que você não pode executar manualmente. Portanto, você pode escolher suas 10 favoritas ou usar uma ferramenta como Gorks para executá-las todas.

Obs: As ferramentas que esperam executar todo o banco de dados usando o navegador regular do Google nunca terminarão, pois o Google bloqueará você muito em breve.

Procurando por vulnerabilidades

Se você encontrar credenciais ou tokens de API vazados válidos, esta é uma vitória muito fácil.

Vulnerabilidades de Código Público

Se você descobrir que a empresa tem código aberto, você pode analisá-lo e procurar vulnerabilidades nele.

Dependendo da linguagem, existem diferentes ferramentas que você pode usar:

{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %} code-review-tools.md {% endcontent-ref %}

Também existem serviços gratuitos que permitem que você escaneie repositórios públicos, como:

Metodologia de Pentesting Web

A maioria das vulnerabilidades encontradas por caçadores de bugs estão dentro de aplicações web, então neste ponto eu gostaria de falar sobre uma metodologia de teste de aplicação web, e você pode encontrar essa informação aqui.

Também quero fazer uma menção especial à seção Ferramentas de Scanner Automático Web de Código Aberto, pois, embora não se deva esperar que encontrem vulnerabilidades muito sensíveis, elas são úteis para implementar em fluxos de trabalho para obter algumas informações iniciais sobre a web.

Recapitulação

Parabéns! Neste ponto, você já realizou toda a enumeração básica. Sim, é básica porque muitas outras enumerações podem ser feitas (veremos mais truques depois).

Então você já:

  1. Encontrou todas as empresas dentro do escopo
  2. Encontrou todos os ativos pertencentes às empresas (e realizou uma varredura de vulnerabilidades se estiver no escopo)
  3. Encontrou todos os domínios pertencentes às empresas
  4. Encontrou todos os subdomínios dos domínios (algum risco de subdomínio?)
  5. Encontrou todos os IPs (de e não de CDNs) dentro do escopo.
  6. Encontrou todos os servidores web e tirou um screenshot deles (algo estranho que valha uma investigação mais aprofundada?)
  7. Encontrou todos os ativos potenciais de nuvem pública pertencentes à empresa.
  8. E-mails, vazamentos de credenciais e vazamentos de segredos que poderiam lhe dar uma grande vitória muito facilmente.
  9. Pentesting em todos os sites que você encontrou

Ferramentas Automáticas de Reconhecimento Completo

Existem várias ferramentas por aí que executarão parte das ações propostas contra um determinado escopo.

Referências

Se você está interessado em uma carreira de hacking e hackear o inhackeável - estamos contratando! (fluência em polonês escrita e falada necessária).

{% embed url="https://www.stmcyber.com/careers" %}

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks: