External Recon Methodology
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Se sei interessato a una carriera nel hacking e a hackare l'inhackabile - stiamo assumendo! (è richiesta una buona conoscenza del polacco scritto e parlato).
Ti è stato detto che tutto ciò che appartiene a una certa azienda è all'interno dell'ambito, e vuoi capire cosa possiede effettivamente questa azienda.
L'obiettivo di questa fase è ottenere tutte le aziende possedute dalla società principale e poi tutti gli asset di queste aziende. Per farlo, procederemo a:
Trovare le acquisizioni della società principale, questo ci darà le aziende all'interno dell'ambito.
Trovare l'ASN (se presente) di ciascuna azienda, questo ci darà gli intervalli IP posseduti da ciascuna azienda.
Utilizzare ricerche whois inverse per cercare altre voci (nomi delle organizzazioni, domini...) correlate alla prima (questo può essere fatto in modo ricorsivo).
Utilizzare altre tecniche come i filtri shodan org
e ssl
per cercare altri asset (il trucco ssl
può essere fatto in modo ricorsivo).
Prima di tutto, dobbiamo sapere quali altre aziende sono possedute dalla società principale. Un'opzione è visitare https://www.crunchbase.com/, cercare la società principale e cliccare su "acquisizioni". Lì vedrai altre aziende acquisite dalla principale. Un'altra opzione è visitare la pagina Wikipedia della società principale e cercare le acquisizioni.
Ok, a questo punto dovresti conoscere tutte le aziende all'interno dell'ambito. Scopriamo come trovare i loro asset.
Un numero di sistema autonomo (ASN) è un numero unico assegnato a un sistema autonomo (AS) dall'Internet Assigned Numbers Authority (IANA). Un AS è composto da blocchi di indirizzi IP che hanno una politica definita per l'accesso a reti esterne e sono amministrati da un'unica organizzazione, ma possono essere composti da più operatori.
È interessante scoprire se la società ha assegnato un ASN per trovare i suoi intervalli IP. Sarà interessante eseguire un test di vulnerabilità contro tutti gli host all'interno dell'ambito e cercare domini all'interno di questi IP. Puoi cercare per nome dell'azienda, per IP o per dominio in https://bgp.he.net/. A seconda della regione dell'azienda, questi link potrebbero essere utili per raccogliere ulteriori dati: AFRINIC (Africa), Arin(Nord America), APNIC (Asia), LACNIC (America Latina), RIPE NCC (Europa). Comunque, probabilmente tutte le informazioni utili (intervalli IP e Whois) appaiono già nel primo link.
Inoltre, la enumerazione dei sottodomini di BBOT's aggrega e riassume automaticamente gli ASN alla fine della scansione.
Puoi trovare gli intervalli IP di un'organizzazione anche utilizzando http://asnlookup.com/ (ha un'API gratuita). Puoi trovare l'IP e l'ASN di un dominio utilizzando http://ipv4info.com/.
A questo punto conosciamo tutti gli asset all'interno dell'ambito, quindi se sei autorizzato potresti lanciare alcuni scanner di vulnerabilità (Nessus, OpenVAS) su tutti gli host. Inoltre, potresti lanciare alcune scansioni delle porte o utilizzare servizi come shodan per trovare porte aperte e a seconda di ciò che trovi dovresti dare un'occhiata a questo libro su come fare pentesting a diversi servizi possibili in esecuzione. Inoltre, potrebbe valere la pena menzionare che puoi anche preparare alcune liste di nomi utente e password predefiniti e provare a forzare i servizi con https://github.com/x90skysn3k/brutespray.
Conosciamo tutte le aziende all'interno dell'ambito e i loro asset, è tempo di trovare i domini all'interno dell'ambito.
Please, nota che nelle seguenti tecniche proposte puoi anche trovare sottodomini e che queste informazioni non dovrebbero essere sottovalutate.
Prima di tutto dovresti cercare il(i) dominio(i) principale(i) di ciascuna azienda. Ad esempio, per Tesla Inc. sarà tesla.com.
Poiché hai trovato tutti gli intervalli IP dei domini, potresti provare a eseguire ricerche DNS inverse su quegli IP per trovare più domini all'interno dell'ambito. Prova a utilizzare un server DNS della vittima o un server DNS ben noto (1.1.1.1, 8.8.8.8)
Per far funzionare questo, l'amministratore deve abilitare manualmente il PTR. Puoi anche utilizzare uno strumento online per queste informazioni: http://ptrarchive.com/
All'interno di un whois puoi trovare molte informazioni interessanti come nome dell'organizzazione, indirizzo, email, numeri di telefono... Ma ciò che è ancora più interessante è che puoi trovare ulteriori asset correlati all'azienda se esegui ricerche reverse whois su uno di questi campi (ad esempio altri registri whois dove appare la stessa email). Puoi utilizzare strumenti online come:
https://viewdns.info/reversewhois/ - Gratuito
https://domaineye.com/reverse-whois - Gratuito
https://www.reversewhois.io/ - Gratuito
https://www.whoxy.com/ - Gratuito web, API non gratuita.
http://reversewhois.domaintools.com/ - Non gratuito
https://drs.whoisxmlapi.com/reverse-whois-search - Non gratuito (solo 100 ricerche gratuite)
https://www.domainiq.com/ - Non gratuito
Puoi automatizzare questo compito utilizzando DomLink (richiede una chiave API whoxy).
Puoi anche eseguire alcune scoperte automatiche di reverse whois con amass: amass intel -d tesla.com -whois
Nota che puoi utilizzare questa tecnica per scoprire più nomi di dominio ogni volta che trovi un nuovo dominio.
Se trovi lo stesso ID dello stesso tracker in 2 pagine diverse, puoi supporre che entrambe le pagine siano gestite dallo stesso team. Ad esempio, se vedi lo stesso ID di Google Analytics o lo stesso ID di Adsense su più pagine.
Ci sono alcune pagine e strumenti che ti permettono di cercare tramite questi tracker e altro:
Sapevi che possiamo trovare domini e sottodomini correlati al nostro obiettivo cercando lo stesso hash dell'icona favicon? Questo è esattamente ciò che fa lo strumento favihash.py creato da @m4ll0k2. Ecco come usarlo:
In parole semplici, favihash ci permetterà di scoprire domini che hanno lo stesso hash dell'icona favicon del nostro obiettivo.
Inoltre, puoi anche cercare tecnologie utilizzando l'hash della favicon come spiegato in questo post del blog. Ciò significa che se conosci il hash della favicon di una versione vulnerabile di una tecnologia web puoi cercare in shodan e trovare più luoghi vulnerabili:
Questo è il modo in cui puoi calcolare l'hash del favicon di un web:
Cerca all'interno delle pagine web stringhe che potrebbero essere condivise tra diversi siti nella stessa organizzazione. La stringa di copyright potrebbe essere un buon esempio. Poi cerca quella stringa in google, in altri browser o anche in shodan: shodan search http.html:"Copyright string"
È comune avere un cron job come
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.
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 domini e sottodomini che condividono le stesse informazioni DMARC.
Apparentemente è comune per le persone assegnare sottodomini a IP che appartengono a fornitori di cloud e a un certo punto perdere quell'indirizzo IP ma dimenticare di rimuovere il record DNS. Pertanto, semplicemente creando una VM in un cloud (come Digital Ocean) stai effettivamente prendendo possesso di alcuni sottodomini.
Questo post spiega una storia al riguardo e propone uno script che crea una VM in DigitalOcean, ottiene l'IPv4 della nuova macchina e cerca in Virustotal i record di sottodomini che puntano ad essa.
Nota che puoi usare questa tecnica per scoprire più nomi di dominio ogni volta che trovi un nuovo dominio.
Shodan
Come già sai il nome dell'organizzazione che possiede lo spazio IP. Puoi cercare quei dati in shodan usando: org:"Tesla, Inc."
Controlla gli host trovati per nuovi domini inaspettati nel certificato TLS.
Potresti accedere al certificato TLS della pagina web principale, ottenere il nome dell'organizzazione e poi cercare quel nome all'interno dei certificati TLS di tutte le pagine web conosciute da shodan con il filtro: ssl:"Tesla Motors"
o usare uno strumento come sslsearch.
Assetfinder
Assetfinder è uno strumento che cerca domini correlati a un dominio principale e sottodomini di essi, davvero sorprendente.
Controlla per qualche domain takeover. Forse qualche azienda sta utilizzando un dominio ma ha perso la proprietà. Registralo (se abbastanza economico) e fai sapere all'azienda.
Se trovi qualche dominio con un IP diverso da quelli già trovati nella scoperta degli asset, dovresti eseguire una scansione di vulnerabilità di base (usando Nessus o OpenVAS) e qualche port scan con nmap/masscan/shodan. A seconda dei servizi in esecuzione, puoi trovare in questo libro alcuni trucchi per "attaccarli". Nota che a volte il dominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nel campo, fai attenzione.
Sappiamo tutte le aziende all'interno del campo, tutti gli asset di ciascuna azienda e tutti i domini correlati alle aziende.
È tempo di trovare tutti i possibili sottodomini di ciascun dominio trovato.
Nota che alcuni degli strumenti e delle tecniche per trovare domini possono anche aiutare a trovare sottodomini!
Proviamo a ottenere sottodomini dai record DNS. Dovremmo anche provare per il Zone Transfer (Se vulnerabile, dovresti segnalarlo).
Il modo più veloce per ottenere molti subdomini è cercare in fonti esterne. Gli strumenti più utilizzati sono i seguenti (per risultati migliori configura le chiavi API):
Ci sono altri strumenti/API interessanti che, anche se non specializzati direttamente nella ricerca di sottodomini, potrebbero essere utili per trovare sottodomini, come:
Crobat: Utilizza l'API https://sonar.omnisint.io per ottenere sottodomini
RapidDNS API gratuita
gau: recupera URL noti da Open Threat Exchange di AlienVault, dalla Wayback Machine e da Common Crawl per un dato dominio.
SubDomainizer & subscraper: Scrappano il web alla ricerca di file JS ed estraggono i sottodomini da lì.
securitytrails.com ha un'API gratuita per cercare subdomini e la cronologia degli IP
Questo progetto offre gratuitamente tutti i subdomini relativi ai programmi di bug-bounty. Puoi accedere a questi dati anche utilizzando chaospy o persino accedere all'ambito utilizzato da questo progetto https://github.com/projectdiscovery/chaos-public-program-list
Puoi trovare un confronto di molti di questi strumenti qui: https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off
Proviamo a trovare nuovi subdomini forzando i server DNS utilizzando possibili nomi di subdomini.
Per questa azione avrai bisogno di alcune wordlist comuni di subdomini come:
E anche IP di buoni risolutori DNS. Per generare un elenco di risolutori DNS affidabili puoi scaricare i risolutori da https://public-dns.info/nameservers-all.txt e utilizzare dnsvalidator per filtrarli. Oppure potresti usare: https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt
Gli strumenti più raccomandati per il brute-force DNS sono:
massdns: Questo è stato il primo strumento a eseguire un efficace brute-force DNS. È molto veloce, tuttavia è soggetto a falsi positivi.
gobuster: Penso che questo utilizzi solo 1 risolutore
shuffledns è un wrapper attorno a massdns
, scritto in go, che ti consente di enumerare sottodomini validi utilizzando un bruteforce attivo, oltre a risolvere sottodomini con gestione dei wildcard e supporto facile per input-output.
puredns: Utilizza anche massdns
.
aiodnsbrute utilizza asyncio per forzare i nomi di dominio in modo asincrono.
Dopo aver trovato i sottodomini utilizzando fonti aperte e brute-forcing, puoi generare alterazioni dei sottodomini trovati per cercare di trovarne ancora di più. Diversi strumenti sono utili a questo scopo:
dnsgen: Dati i domini e i sottodomini, genera permutazioni.
goaltdns: Dati i domini e i sottodomini, genera permutazioni.
Puoi ottenere le permutazioni di goaltdns wordlist qui qui.
gotator: Dati i domini e i sottodomini, genera permutazioni. Se non viene indicato un file di permutazioni, gotator utilizzerà il proprio.
altdns: Oltre a generare permutazioni di sottodomini, può anche provare a risolverli (ma è meglio usare gli strumenti commentati in precedenza).
Puoi ottenere le permutazioni di altdns wordlist qui.
dmut: Un altro strumento per eseguire permutazioni, mutazioni e alterazioni di sottodomini. Questo strumento eseguirà un attacco di forza bruta sul risultato (non supporta i wildcard DNS).
Puoi ottenere la wordlist delle permutazioni di dmut qui.
alterx: Basato su un dominio, genera nuovi potenziali nomi di sottodomini basati su modelli indicati per cercare di scoprire più sottodomini.
subzuf: subzuf è un fuzzer di brute-force per sottodomini abbinato a un algoritmo guidato dalla risposta DNS immensamente semplice ma efficace. Utilizza un insieme di dati di input fornito, come una wordlist personalizzata o record DNS/TLS storici, per sintetizzare accuratamente nomi di dominio corrispondenti e espanderli ulteriormente in un ciclo basato sulle informazioni raccolte durante la scansione DNS.
Controlla questo post del blog che ho scritto su come automatizzare la scoperta di sottodomini da un dominio utilizzando i flussi di lavoro di Trickest in modo da non dover avviare manualmente un sacco di strumenti sul mio computer:
Se hai trovato un indirizzo IP contenente una o più pagine web appartenenti a sottodomini, potresti provare a trovare altri sottodomini con siti in quell'IP cercando in fonti OSINT per domini in un IP o forzando i nomi di dominio VHost in quell'IP.
Puoi trovare alcuni VHosts in IP utilizzando HostHunter o altre API.
Forza Bruta
Se sospetti che qualche sottodominio possa essere nascosto in un server web, potresti provare a forzarlo:
Con questa tecnica potresti persino essere in grado di accedere a endpoint interni/nascosti.
A volte troverai pagine che restituiscono solo l'intestazione Access-Control-Allow-Origin quando un dominio/subdominio valido è impostato nell'intestazione Origin. In questi scenari, puoi abusare di questo comportamento per scoprire nuovi subdomini.
Mentre cerchi subdomini, fai attenzione a vedere se sta puntando a qualche tipo di bucket, e in tal caso controlla i permessi. Inoltre, poiché a questo punto conoscerai tutti i domini all'interno dell'ambito, prova a forzare i nomi dei bucket possibili e controlla i permessi.
Puoi monitorare se vengono creati nuovi subdomini di un dominio monitorando i Certificate Transparency Logs sublert fa.
Controlla possibili subdomain takeovers. Se il subdominio sta puntando a qualche S3 bucket, controlla i permessi.
Se trovi un subdominio con un IP diverso da quelli già trovati nella scoperta delle risorse, dovresti eseguire una scansione di vulnerabilità di base (utilizzando Nessus o OpenVAS) e una scansione delle porte con nmap/masscan/shodan. A seconda dei servizi in esecuzione, puoi trovare in questo libro alcuni trucchi per "attaccarli". Tieni presente che a volte il subdominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nell'ambito, fai attenzione.
Nei passaggi iniziali potresti aver trovato alcuni intervalli di IP, domini e subdomini. È tempo di raccogliere tutti gli IP da quegli intervalli e per i domini/subdomini (query DNS).
Utilizzando i servizi delle seguenti api gratuite puoi anche trovare IP precedenti utilizzati da domini e subdomini. Questi IP potrebbero ancora essere di proprietà del cliente (e potrebbero permetterti di trovare CloudFlare bypasses)
Puoi anche controllare i domini che puntano a un indirizzo IP specifico utilizzando lo strumento hakip2host
Scansiona tutte le porte degli IP che non appartengono a CDN (poiché è altamente probabile che non troverai nulla di interessante lì). Nei servizi in esecuzione scoperti potresti essere in grado di trovare vulnerabilità.
Trova una guida su come scansionare gli host.
Abbiamo trovato tutte le aziende e i loro asset e conosciamo gli intervalli di IP, domini e subdomini all'interno dell'ambito. È tempo di cercare server web.
Nei passaggi precedenti probabilmente hai già eseguito alcune ricerche sugli IP e domini scoperti, quindi potresti aver già trovato tutti i possibili server web. Tuttavia, se non lo hai fatto, ora vedremo alcuni trucchi veloci per cercare server web all'interno dell'ambito.
Si prega di notare che questo sarà orientato alla scoperta di app web, quindi dovresti eseguire la scansione delle vulnerabilità e scansione delle porte anche (se consentito dall'ambito).
Un metodo veloce per scoprire porte aperte relative ai server web utilizzando masscan può essere trovato qui. Un altro strumento amichevole per cercare server web è httprobe, fprobe e httpx. Devi solo passare un elenco di domini e cercherà di connettersi alla porta 80 (http) e 443 (https). Inoltre, puoi indicare di provare altre porte:
Ora che hai scoperto tutti i server web presenti nell'ambito (tra gli IP dell'azienda e tutti i domini e sottodomini) probabilmente non sai da dove iniziare. Quindi, rendiamolo semplice e iniziamo semplicemente a fare screenshot di tutti loro. Basta dare un'occhiata alla pagina principale per trovare endpoint strani che sono più propensi a essere vulnerabili.
Per eseguire l'idea proposta puoi usare EyeWitness, HttpScreenshot, Aquatone, Shutter, Gowitness o webscreenshot.
Inoltre, potresti poi usare eyeballer per esaminare tutti gli screenshot e dirti cosa è probabile contenga vulnerabilità, e cosa non lo è.
Per trovare potenziali asset cloud appartenenti a un'azienda dovresti iniziare con un elenco di parole chiave che identificano quell'azienda. Ad esempio, per una crypto per un'azienda crypto potresti usare parole come: "crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">
.
Avrai anche bisogno di wordlist di parole comuni usate nei bucket:
Poi, con quelle parole dovresti generare permutazioni (controlla il Second Round DNS Brute-Force per ulteriori informazioni).
Con le wordlist risultanti potresti usare strumenti come cloud_enum, CloudScraper, cloudlist o S3Scanner.
Ricorda che quando cerchi Cloud Assets dovresti cercare più di semplici bucket in AWS.
Se trovi cose come bucket aperti o funzioni cloud esposte dovresti accedervi e cercare di vedere cosa ti offrono e se puoi abusarne.
Con i domini e sottodomini all'interno dell'ambito hai fondamentalmente tutto ciò di cui hai bisogno per iniziare a cercare email. Queste sono le API e strumenti che hanno funzionato meglio per me per trovare email di un'azienda:
theHarvester - con API
API di https://hunter.io/ (versione gratuita)
API di https://app.snov.io/ (versione gratuita)
API di https://minelead.io/ (versione gratuita)
Le email saranno utili in seguito per brute-forzare accessi web e servizi di autenticazione (come SSH). Inoltre, sono necessarie per phishing. Inoltre, queste API ti daranno ancora più info sulla persona dietro l'email, il che è utile per la campagna di phishing.
Con i domini, sottodomini e email puoi iniziare a cercare credenziali trapelate in passato appartenenti a quelle email:
Se trovi credenziali valide trapelate, questa è una vittoria molto facile.
Le perdite di credenziali sono correlate agli attacchi alle aziende in cui informazioni sensibili sono state trapelate e vendute. Tuttavia, le aziende potrebbero essere colpite da altre perdite le cui informazioni non sono in quelle banche dati:
Credenziali e API potrebbero essere trapelate nei repository pubblici dell'azienda o degli utenti che lavorano per quell'azienda su github. Puoi usare lo strumento Leakos per scaricare tutti i repo pubblici di un'organizzazione e dei suoi sviluppatori e eseguire gitleaks su di essi automaticamente.
Leakos può anche essere usato per eseguire gitleaks contro tutto il testo fornito URL passati ad esso poiché a volte le pagine web contengono anche segreti.
Controlla anche questa pagina per potenziali github dorks che potresti cercare nell'organizzazione che stai attaccando:
A volte gli attaccanti o semplicemente i lavoratori pubblicheranno contenuti aziendali in un sito di paste. Questo potrebbe o meno contenere informazioni sensibili, ma è molto interessante cercarlo. Puoi usare lo strumento Pastos per cercare in più di 80 siti di paste contemporaneamente.
I vecchi ma buoni google dorks sono sempre utili per trovare informazioni esposte che non dovrebbero esserci. L'unico problema è che il google-hacking-database contiene diverse migliaia di possibili query che non puoi eseguire manualmente. Quindi, puoi prendere le tue 10 preferite o puoi usare uno strumento come Gorks per eseguirle tutte.
Nota che gli strumenti che si aspettano di eseguire tutto il database utilizzando il normale browser Google non finiranno mai poiché google ti bloccherà molto molto presto.
Se trovi credenziali o token API valide trapelate, questa è una vittoria molto facile.
Se hai scoperto che l'azienda ha codice open-source puoi analizzarlo e cercare vulnerabilità in esso.
A seconda del linguaggio ci sono diversi strumenti che puoi usare:
Ci sono anche servizi gratuiti che ti permettono di scansionare repository pubblici, come:
La maggior parte delle vulnerabilità trovate dai bug hunter risiede all'interno delle applicazioni web, quindi a questo punto vorrei parlare di una metodologia di testing delle applicazioni web, e puoi trovare queste informazioni qui.
Voglio anche fare una menzione speciale alla sezione Web Automated Scanners open source tools, poiché, se non dovresti aspettarti che trovino vulnerabilità molto sensibili, sono utili per implementarle in workflows per avere alcune informazioni web iniziali.
Congratulazioni! A questo punto hai già eseguito tutta l'enumerazione di base. Sì, è di base perché può essere eseguita molta più enumerazione (vedremo altri trucchi più avanti).
Quindi hai già:
Trovato tutte le aziende all'interno dell'ambito
Trovato tutti gli asset appartenenti alle aziende (e eseguito alcune scansioni di vulnerabilità se in ambito)
Trovato tutti i domini appartenenti alle aziende
Trovato tutti i sottodomini dei domini (qualche takeover di sottodominio?)
Trovato tutti gli IP (da e non da CDN) all'interno dell'ambito.
Trovato tutti i server web e fatto uno screenshot di essi (c'è qualcosa di strano che merita un'analisi più approfondita?)
Trovato tutti i potenziali asset cloud pubblici appartenenti all'azienda.
Email, perdite di credenziali e perdite di segreti che potrebbero darti una grande vittoria molto facilmente.
Pentesting di tutti i siti web che hai trovato
Ci sono diversi strumenti là fuori che eseguiranno parte delle azioni proposte contro un dato ambito.
https://github.com/hackerspider1/EchoPwn - Un po' vecchio e non aggiornato
Tutti i corsi gratuiti di @Jhaddix come The Bug Hunter's Methodology v4.0 - Recon Edition
Se sei interessato a una carriera nel hacking e a hackare l'inhackabile - stiamo assumendo! (richiesta di polacco fluente scritto e parlato).
Bug bounty tip: iscriviti a Intigriti, una premium bug bounty platform creata da hacker, per hacker! Unisciti a noi su https://go.intigriti.com/hacktricks oggi, e inizia a guadagnare ricompense fino a $100,000!
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)