46 KiB
External Recon Methodology
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
If you are interested in hacking career and hack the unhackable - we are hiring! (fluent polish written and spoken required).
{% embed url="https://www.stmcyber.com/careers" %}
Découvertes d'actifs
On vous a dit que tout ce qui appartient à une entreprise est dans le champ d'application, et vous voulez découvrir ce que cette entreprise possède réellement.
L'objectif de cette phase est d'obtenir toutes les entreprises possédées par la société principale et ensuite tous les actifs de ces entreprises. Pour ce faire, nous allons :
- Trouver les acquisitions de la société principale, cela nous donnera les entreprises dans le champ d'application.
- Trouver l'ASN (s'il y en a un) de chaque entreprise, cela nous donnera les plages IP possédées par chaque entreprise.
- Utiliser des recherches whois inversées pour rechercher d'autres entrées (noms d'organisation, domaines...) liées à la première (cela peut être fait de manière récursive).
- Utiliser d'autres techniques comme les filtres shodan
org
etssl
pour rechercher d'autres actifs (le trucssl
peut être fait de manière récursive).
Acquisitions
Tout d'abord, nous devons savoir quelles autres entreprises sont possédées par la société principale.
Une option est de visiter https://www.crunchbase.com/, chercher la société principale, et cliquer sur "acquisitions". Là, vous verrez d'autres entreprises acquises par la principale.
Une autre option est de visiter la page Wikipedia de la société principale et de rechercher les acquisitions.
Ok, à ce stade, vous devriez connaître toutes les entreprises dans le champ d'application. Voyons comment trouver leurs actifs.
ASNs
Un numéro de système autonome (ASN) est un numéro unique attribué à un système autonome (AS) par l'Internet Assigned Numbers Authority (IANA).
Un AS se compose de blocs d'adresses IP qui ont une politique clairement définie pour accéder aux réseaux externes et sont administrés par une seule organisation mais peuvent être composés de plusieurs opérateurs.
Il est intéressant de trouver si la société a attribué un ASN pour trouver ses plages IP. Il sera intéressant de réaliser un test de vulnérabilité contre tous les hôtes dans le champ d'application et chercher des domaines dans ces IP.
Vous pouvez chercher par nom d'entreprise, par IP ou par domaine sur https://bgp.he.net/.
Selon la région de l'entreprise, ces liens pourraient être utiles pour rassembler plus de données : AFRINIC (Afrique), Arin(Amérique du Nord), APNIC (Asie), LACNIC (Amérique Latine), RIPE NCC (Europe). Quoi qu'il en soit, probablement toutes les informations utiles (plages IP et Whois) apparaissent déjà dans le premier lien.
#You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla
amass intel -asn 8911,50313,394161
Aussi, l'énumération de sous-domaines de BBOT**** agrège et résume automatiquement les ASN à la fin de l'analyse.
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: +----------+---------------------+--------------+----------------+----------------------------+-----------+
Vous pouvez trouver les plages IP d'une organisation également en utilisant http://asnlookup.com/ (il a une API gratuite).
Vous pouvez trouver l'IP et l'ASN d'un domaine en utilisant http://ipv4info.com/.
Recherche de vulnérabilités
À ce stade, nous connaissons tous les actifs à l'intérieur du périmètre, donc si vous y êtes autorisé, vous pourriez lancer un scanner de vulnérabilités (Nessus, OpenVAS) sur tous les hôtes.
De plus, vous pourriez lancer des scans de ports ou utiliser des services comme shodan pour trouver des ports ouverts et selon ce que vous trouvez, vous devriez consulter ce livre pour savoir comment pentester plusieurs services possibles en cours d'exécution.
De plus, il pourrait être utile de mentionner que vous pouvez également préparer des listes de noms d'utilisateur par défaut et de mots de passe et essayer de bruteforcer des services avec https://github.com/x90skysn3k/brutespray.
Domaines
Nous connaissons toutes les entreprises à l'intérieur du périmètre et leurs actifs, il est temps de trouver les domaines à l'intérieur du périmètre.
Veuillez noter que dans les techniques proposées suivantes, vous pouvez également trouver des sous-domaines et que cette information ne doit pas être sous-estimée.
Tout d'abord, vous devriez rechercher le(s) domaine(s) principal(aux) de chaque entreprise. Par exemple, pour Tesla Inc., cela sera tesla.com.
DNS inversé
Comme vous avez trouvé toutes les plages IP des domaines, vous pourriez essayer d'effectuer des recherches DNS inversées sur ces IPs pour trouver plus de domaines à l'intérieur du périmètre. Essayez d'utiliser un serveur DNS de la victime ou un serveur DNS bien connu (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
Pour que cela fonctionne, l'administrateur doit activer manuellement le PTR.
Vous pouvez également utiliser un outil en ligne pour ces informations : http://ptrarchive.com/
Reverse Whois (loop)
Dans un whois, vous pouvez trouver beaucoup d'informations intéressantes comme le nom de l'organisation, adresse, emails, numéros de téléphone... Mais ce qui est encore plus intéressant, c'est que vous pouvez trouver plus d'actifs liés à l'entreprise si vous effectuez des recherches whois inversées par l'un de ces champs (par exemple, d'autres registres whois où le même email apparaît).
Vous pouvez utiliser des outils en ligne comme :
- https://viewdns.info/reversewhois/ - Gratuit
- https://domaineye.com/reverse-whois - Gratuit
- https://www.reversewhois.io/ - Gratuit
- https://www.whoxy.com/ - Gratuit web, API non gratuite.
- http://reversewhois.domaintools.com/ - Non gratuit
- https://drs.whoisxmlapi.com/reverse-whois-search - Non gratuit (seulement 100 recherches gratuites)
- https://www.domainiq.com/ - Non gratuit
Vous pouvez automatiser cette tâche en utilisant DomLink (nécessite une clé API whoxy).
Vous pouvez également effectuer une découverte automatique de whois inversé avec amass : amass intel -d tesla.com -whois
Notez que vous pouvez utiliser cette technique pour découvrir plus de noms de domaine chaque fois que vous trouvez un nouveau domaine.
Trackers
Si vous trouvez le même ID du même tracker sur 2 pages différentes, vous pouvez supposer que les deux pages sont gérées par la même équipe.
Par exemple, si vous voyez le même ID Google Analytics ou le même ID Adsense sur plusieurs pages.
Il existe certaines pages et outils qui vous permettent de rechercher par ces trackers et plus :
Favicon
Saviez-vous que nous pouvons trouver des domaines et sous-domaines liés à notre cible en recherchant le même hash d'icône favicon ? C'est exactement ce que fait l'outil favihash.py créé par @m4ll0k2. Voici comment l'utiliser :
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 termes simples, favihash nous permettra de découvrir des domaines qui ont le même hash d'icône favicon que notre cible.
De plus, vous pouvez également rechercher des technologies en utilisant le hash favicon comme expliqué dans cet article de blog. Cela signifie que si vous connaissez le hash de l'icône favicon d'une version vulnérable d'une technologie web, vous pouvez rechercher sur shodan et trouver plus d'endroits vulnérables :
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
C'est ainsi que vous pouvez calculer le hash du favicon d'un site 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
Copyright / Uniq string
Recherchez dans les pages web des chaînes qui pourraient être partagées entre différents sites de la même organisation. La chaîne de copyright pourrait être un bon exemple. Ensuite, recherchez cette chaîne dans google, dans d'autres navigateurs ou même dans shodan : shodan search http.html:"Copyright string"
CRT Time
Il est courant d'avoir un travail cron tel que
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
to renew the all the domain certificates on the server. This means that even if the CA used for this doesn't set the time it was generated in the Validity time, it's possible to find domains belonging to the same company in the certificate transparency logs.
Check out this writeup for more information.
Mail DMARC information
You can use a web such as https://dmarc.live/info/google.com or a tool such as https://github.com/Tedixx/dmarc-subdomains to find domains and subdomain sharing the same dmarc information.
Passive Takeover
Apparemment, il est courant que des personnes assignent des sous-domaines à des IP appartenant à des fournisseurs de cloud et à un moment donné perdent cette adresse IP mais oublient de supprimer l'enregistrement DNS. Par conséquent, en créant une VM dans un cloud (comme Digital Ocean), vous allez en fait prendre le contrôle de certains sous-domaines.
This post explains a store about it and propose a script that spawns a VM in DigitalOcean, gets the IPv4 of the new machine, and searches in Virustotal for subdomain records pointing to it.
Other ways
Note that you can use this technique to discover more domain names every time you find a new domain.
Shodan
As you already know the name of the organisation owning the IP space. You can search by that data in shodan using: org:"Tesla, Inc."
Check the found hosts for new unexpected domains in the TLS certificate.
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
Assetfinder is a tool that look for domains related with a main domain and subdomains of them, pretty amazing.
Looking for vulnerabilities
Check for some domain takeover. Maybe some company is using some a domain but they lost the ownership. Just register it (if cheap enough) and let know the company.
If you find any domain with an IP different from the ones you already found in the assets discovery, you should perform a basic vulnerability scan (using Nessus or OpenVAS) and some port scan with nmap/masscan/shodan. Depending on which services are running you can find in this book some tricks to "attack" them.
Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful.
Bug bounty tip: sign up for Intigriti, a premium bug bounty platform created by hackers, for hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Subdomains
We know all the companies inside the scope, all the assets of each company and all the domains related to the companies.
It's time to find all the possible subdomains of each found domain.
{% hint style="success" %} Note that some of the tools and techniques to find domains can also help to find subdomains! {% endhint %}
DNS
Let's try to get subdomains from the DNS records. We should also try for Zone Transfer (If vulnerable, you should report it).
dnsrecon -a -d tesla.com
OSINT
Le moyen le plus rapide d'obtenir de nombreux sous-domaines est de rechercher dans des sources externes. Les outils les plus utilisés sont les suivants (pour de meilleurs résultats, configurez les clés 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"
Il existe d'autres outils/APIs intéressants qui, même s'ils ne sont pas directement spécialisés dans la recherche de sous-domaines, pourraient être utiles pour trouver des sous-domaines, comme :
- Crobat: Utilise l'API https://sonar.omnisint.io pour obtenir des sous-domaines
# 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 gratuite
# 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: récupère les URL connues d'Open Threat Exchange d'AlienVault, de la Wayback Machine et de Common Crawl pour un domaine donné.
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
- SubDomainizer & subscraper : Ils parcourent le web à la recherche de fichiers JS et en extraient des sous-domaines.
# 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 a une API gratuite pour rechercher des sous-domaines et l'historique des IP
- chaos.projectdiscovery.io
Ce projet offre gratuitement tous les sous-domaines liés aux programmes de bug-bounty. Vous pouvez également accéder à ces données en utilisant chaospy ou même accéder à la portée utilisée par ce projet https://github.com/projectdiscovery/chaos-public-program-list
Vous pouvez trouver une comparaison de nombreux outils ici : https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off
DNS Brute force
Essayons de trouver de nouveaux sous-domaines en effectuant un brute-force sur les serveurs DNS en utilisant des noms de sous-domaines possibles.
Pour cette action, vous aurez besoin de quelques listes de mots de sous-domaines courants comme :
- 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
Et aussi des IP de bons résolveurs DNS. Pour générer une liste de résolveurs DNS de confiance, vous pouvez télécharger les résolveurs depuis https://public-dns.info/nameservers-all.txt et utiliser dnsvalidator pour les filtrer. Ou vous pourriez utiliser : https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt
Les outils les plus recommandés pour le brute-force DNS sont :
- massdns : C'était le premier outil à effectuer un brute-force DNS efficace. Il est très rapide, mais il est sujet à des faux positifs.
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 : Je pense que celui-ci utilise juste 1 résolveur.
gobuster dns -d mysite.com -t 50 -w subdomains.txt
- shuffledns est un wrapper autour de
massdns
, écrit en go, qui vous permet d'énumérer des sous-domaines valides en utilisant un bruteforce actif, ainsi que de résoudre des sous-domaines avec gestion des jokers et un support facile d'entrée-sortie.
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
- puredns : Il utilise également
massdns
.
puredns bruteforce all.txt domain.com
- aiodnsbrute utilise asyncio pour forcer des noms de domaine de manière asynchrone.
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
Deuxième ronde de brute-force DNS
Après avoir trouvé des sous-domaines en utilisant des sources ouvertes et le brute-forcing, vous pourriez générer des altérations des sous-domaines trouvés pour essayer d'en trouver encore plus. Plusieurs outils sont utiles à cet effet :
- dnsgen: Étant donné les domaines et sous-domaines, générez des permutations.
cat subdomains.txt | dnsgen -
- goaltdns: Étant donné les domaines et sous-domaines, générez des permutations.
- Vous pouvez obtenir les permutations de goaltdns wordlist ici.
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
- gotator: Étant donné les domaines et sous-domaines, génère des permutations. Si aucun fichier de permutations n'est indiqué, gotator utilisera le sien.
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
- altdns : En plus de générer des permutations de sous-domaines, il peut également essayer de les résoudre (mais il est préférable d'utiliser les outils commentés précédemment).
- Vous pouvez obtenir les permutations altdns wordlist ici.
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
- dmut : Un autre outil pour effectuer des permutations, mutations et altérations de sous-domaines. Cet outil va forcer le résultat (il ne prend pas en charge les jokers DNS).
- Vous pouvez obtenir la liste de mots de permutations dmut ici.
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
- alterx: Basé sur un domaine, il génère de nouveaux noms de sous-domaines potentiels en fonction des modèles indiqués pour essayer de découvrir plus de sous-domaines.
Génération de permutations intelligentes
- regulator: Pour plus d'infos, lisez ce post mais il obtiendra essentiellement les principales parties des sous-domaines découverts et les mélangera pour trouver plus de sous-domaines.
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 est un fuzzer de brute-force de sous-domaines associé à un algorithme guidé par la réponse DNS extrêmement simple mais efficace. Il utilise un ensemble de données d'entrée fournies, comme une liste de mots sur mesure ou des enregistrements DNS/TLS historiques, pour synthétiser avec précision des noms de domaine correspondants et les étendre encore plus dans une boucle basée sur les informations recueillies lors de l'analyse DNS.
echo www | subzuf facebook.com
Flux de Découverte de Sous-domaines
Vérifiez cet article de blog que j'ai écrit sur la façon d'automatiser la découverte de sous-domaines à partir d'un domaine en utilisant les flux Trickest afin de ne pas avoir à lancer manuellement une multitude d'outils sur mon ordinateur :
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %}
{% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/" %}
VHosts / Hôtes Virtuels
Si vous avez trouvé une adresse IP contenant une ou plusieurs pages web appartenant à des sous-domaines, vous pourriez essayer de trouver d'autres sous-domaines avec des sites sur cette IP en recherchant dans des sources OSINT des domaines dans une IP ou en bruteforçant les noms de domaine VHost dans cette IP.
OSINT
Vous pouvez trouver quelques VHosts dans des IPs en utilisant HostHunter ou d'autres API.
Brute Force
Si vous soupçonnez qu'un sous-domaine peut être caché dans un serveur web, vous pourriez essayer de le bruteforcer :
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" %} Avec cette technique, vous pourrez même accéder à des points de terminaison internes/cachés. {% endhint %}
CORS Brute Force
Parfois, vous trouverez des pages qui ne renvoient que l'en-tête Access-Control-Allow-Origin lorsqu'un domaine/sous-domaine valide est défini dans l'en-tête Origin. Dans ces scénarios, vous pouvez abuser de ce comportement pour découvrir de nouveaux sous-domaines.
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
Brute Force des Buckets
Tout en cherchant des sous-domaines, gardez un œil pour voir s'il pointe vers un type de bucket, et dans ce cas, vérifiez les permissions.
De plus, à ce stade, vous connaîtrez tous les domaines dans le périmètre, essayez de brute forcer les noms de buckets possibles et de vérifier les permissions.
Surveillance
Vous pouvez surveiller si de nouveaux sous-domaines d'un domaine sont créés en surveillant les logs de transparence des certificats que sublert fait.
Recherche de vulnérabilités
Vérifiez les possibles prises de contrôle de sous-domaines.
Si le sous-domaine pointe vers un bucket S3, vérifiez les permissions.
Si vous trouvez un sous-domaine avec une IP différente de celles que vous avez déjà trouvées lors de la découverte des actifs, vous devriez effectuer un scan de vulnérabilités de base (en utilisant Nessus ou OpenVAS) et un scan de ports avec nmap/masscan/shodan. Selon les services qui fonctionnent, vous pouvez trouver dans ce livre quelques astuces pour les "attaquer".
Remarque : parfois, le sous-domaine est hébergé sur une IP qui n'est pas contrôlée par le client, donc ce n'est pas dans le périmètre, soyez prudent.
IPs
Dans les étapes initiales, vous avez peut-être trouvé des plages d'IP, des domaines et des sous-domaines.
Il est temps de rassembler toutes les IPs de ces plages et pour les domaines/sous-domaines (requêtes DNS).
En utilisant les services des API gratuites suivantes, vous pouvez également trouver des IP précédemment utilisées par des domaines et sous-domaines. Ces IP peuvent encore être détenues par le client (et peuvent vous permettre de trouver des bypass CloudFlare)
Vous pouvez également vérifier les domaines pointant vers une adresse IP spécifique en utilisant l'outil hakip2host
Recherche de vulnérabilités
Scannez tous les ports des IP qui n'appartiennent pas aux CDN (car vous ne trouverez probablement rien d'intéressant là-dedans). Dans les services en cours d'exécution découverts, vous pourriez être capable de trouver des vulnérabilités.
Trouvez un guide sur la façon de scanner les hôtes.
Chasse aux serveurs web
Nous avons trouvé toutes les entreprises et leurs actifs et nous connaissons les plages d'IP, les domaines et les sous-domaines dans le périmètre. Il est temps de rechercher des serveurs web.
Dans les étapes précédentes, vous avez probablement déjà effectué une reconnaissance des IP et des domaines découverts, donc vous avez peut-être déjà trouvé tous les serveurs web possibles. Cependant, si ce n'est pas le cas, nous allons maintenant voir quelques astuces rapides pour rechercher des serveurs web dans le périmètre.
Veuillez noter que cela sera orienté vers la découverte d'applications web, donc vous devriez également effectuer le scan de vulnérabilités et le scan de ports aussi (si autorisé par le périmètre).
Une méthode rapide pour découvrir les ports ouverts liés aux serveurs web en utilisant masscan peut être trouvée ici.
Un autre outil convivial pour rechercher des serveurs web est httprobe, fprobe et httpx. Vous passez simplement une liste de domaines et il essaiera de se connecter au port 80 (http) et 443 (https). De plus, vous pouvez indiquer d'essayer d'autres ports :
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
Captures d'écran
Maintenant que vous avez découvert tous les serveurs web présents dans le périmètre (parmi les IPs de l'entreprise et tous les domaines et sous-domaines), vous ne savez probablement pas par où commencer. Alors, simplifions les choses et commençons simplement par prendre des captures d'écran de tous. En jetant un œil à la page principale, vous pouvez trouver des points de terminaison bizarres qui sont plus susceptibles d'être vulnérables.
Pour réaliser l'idée proposée, vous pouvez utiliser EyeWitness, HttpScreenshot, Aquatone, Shutter, Gowitness ou webscreenshot.
De plus, vous pourriez ensuite utiliser eyeballer pour passer en revue toutes les captures d'écran afin de vous dire ce qui est susceptible de contenir des vulnérabilités, et ce qui ne l'est pas.
Actifs Cloud Publics
Pour trouver des actifs cloud potentiels appartenant à une entreprise, vous devriez commencer par une liste de mots-clés qui identifient cette entreprise. Par exemple, pour une entreprise de crypto, vous pourriez utiliser des mots tels que : "crypto", "wallet", "dao", "<nom_de_domaine>", <"noms_de_sous_domaine">
.
Vous aurez également besoin de listes de mots de mots courants utilisés dans les 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
Ensuite, avec ces mots, vous devriez générer des permutations (voir le Deuxième tour de brute-force DNS pour plus d'infos).
Avec les listes de mots résultantes, vous pourriez utiliser des outils tels que cloud_enum, CloudScraper, cloudlist ou S3Scanner.
N'oubliez pas que lorsque vous recherchez des actifs Cloud, vous devez chercher plus que de simples buckets dans AWS.
Recherche de vulnérabilités
Si vous trouvez des choses telles que des buckets ouverts ou des fonctions cloud exposées, vous devriez y accéder et essayer de voir ce qu'elles vous offrent et si vous pouvez en abuser.
Emails
Avec les domaines et sous-domaines dans le périmètre, vous avez essentiellement tout ce dont vous avez besoin pour commencer à rechercher des emails. Voici les API et outils qui ont le mieux fonctionné pour moi pour trouver des emails d'une entreprise :
- theHarvester - avec des API
- API de https://hunter.io/ (version gratuite)
- API de https://app.snov.io/ (version gratuite)
- API de https://minelead.io/ (version gratuite)
Recherche de vulnérabilités
Les emails seront utiles plus tard pour brute-forcer les connexions web et les services d'authentification (comme SSH). De plus, ils sont nécessaires pour les phishings. De plus, ces API vous donneront encore plus d'informations sur la personne derrière l'email, ce qui est utile pour la campagne de phishing.
Fuites de Credentials
Avec les domaines, sous-domaines et emails, vous pouvez commencer à rechercher des credentials fuités dans le passé appartenant à ces emails :
Recherche de vulnérabilités
Si vous trouvez des credentials fuités valides, c'est une victoire très facile.
Fuites de Secrets
Les fuites de credentials sont liées aux hacks d'entreprises où des informations sensibles ont été divulguées et vendues. Cependant, les entreprises peuvent être affectées par d'autres fuites dont les informations ne figurent pas dans ces bases de données :
Fuites Github
Les credentials et les API peuvent être divulgués dans les dépôts publics de l'entreprise ou des utilisateurs travaillant pour cette entreprise github.
Vous pouvez utiliser l'outil Leakos pour télécharger tous les dépôts publics d'une organisation et de ses développeurs et exécuter gitleaks automatiquement sur eux.
Leakos peut également être utilisé pour exécuter gitleaks contre tout le texte fourni par les URLs passées à celui-ci, car parfois les pages web contiennent également des secrets.
Dorks Github
Vérifiez également cette page pour des dorks github potentiels que vous pourriez également rechercher dans l'organisation que vous attaquez :
{% content-ref url="github-leaked-secrets.md" %} github-leaked-secrets.md {% endcontent-ref %}
Fuites de Pastes
Parfois, des attaquants ou simplement des employés publieront du contenu d'entreprise sur un site de paste. Cela peut ou non contenir des informations sensibles, mais il est très intéressant de le rechercher.
Vous pouvez utiliser l'outil Pastos pour rechercher dans plus de 80 sites de paste en même temps.
Dorks Google
Les dorks google, vieux mais efficaces, sont toujours utiles pour trouver des informations exposées qui ne devraient pas être là. Le seul problème est que la google-hacking-database contient plusieurs milliers de requêtes possibles que vous ne pouvez pas exécuter manuellement. Donc, vous pouvez prendre vos 10 préférées ou vous pourriez utiliser un outil tel que Gorks pour les exécuter toutes.
Remarque : les outils qui s'attendent à exécuter toute la base de données en utilisant le navigateur Google régulier ne finiront jamais, car Google vous bloquera très rapidement.
Recherche de vulnérabilités
Si vous trouvez des credentials ou des tokens API fuités valides, c'est une victoire très facile.
Vulnérabilités de Code Public
Si vous avez découvert que l'entreprise a du code open-source, vous pouvez l'analyser et rechercher des vulnérabilités.
Selon le langage, il existe différents outils que vous pouvez utiliser :
{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %} code-review-tools.md {% endcontent-ref %}
Il existe également des services gratuits qui vous permettent de scanner des dépôts publics, tels que :
Méthodologie de Pentesting Web
La majorité des vulnérabilités trouvées par les chasseurs de bugs se trouvent dans les applications web, donc à ce stade, je voudrais parler d'une méthodologie de test d'application web, et vous pouvez trouver cette information ici.
Je veux également faire une mention spéciale à la section Outils de scanners automatisés open source, car, même si vous ne devez pas vous attendre à ce qu'ils trouvent des vulnérabilités très sensibles, ils sont utiles pour les intégrer dans des flux de travail pour obtenir des informations web initiales.
Récapitulation
Félicitations ! À ce stade, vous avez déjà effectué toute l'énumération de base. Oui, c'est basique car beaucoup plus d'énumération peut être faite (nous verrons plus d'astuces plus tard).
Donc, vous avez déjà :
- Trouvé toutes les entreprises dans le périmètre
- Trouvé tous les actifs appartenant aux entreprises (et effectué quelques scans de vulnérabilités si dans le périmètre)
- Trouvé tous les domaines appartenant aux entreprises
- Trouvé tous les sous-domaines des domaines (y a-t-il un takeover de sous-domaine ?)
- Trouvé toutes les IPs (provenant et non provenant des CDN) dans le périmètre.
- Trouvé tous les serveurs web et pris une capture d'écran d'eux (quelque chose de bizarre qui mérite un examen plus approfondi ?)
- Trouvé tous les actifs cloud publics potentiels appartenant à l'entreprise.
- Emails, fuites de credentials, et fuites de secrets qui pourraient vous donner une grande victoire très facilement.
- Pentesting tous les sites que vous avez trouvés
Outils Automatiques de Reconnaissance Complète
Il existe plusieurs outils qui effectueront une partie des actions proposées contre un périmètre donné.
- https://github.com/yogeshojha/rengine
- https://github.com/j3ssie/Osmedeus
- https://github.com/six2dez/reconftw
- https://github.com/hackerspider1/EchoPwn - Un peu ancien et pas mis à jour
Références
- Tous les cours gratuits de @Jhaddix comme La méthodologie du chasseur de bugs v4.0 - Édition Recon
Si vous êtes intéressé par une carrière de hacking et par le fait de hacker l'inhackable - nous recrutons ! (polonais courant écrit et parlé requis).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le Hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Consultez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs aux HackTricks et HackTricks Cloud dépôts github.