it-swarm.dev

Come posso trovare i sottodomini di un sito?

Una delle cose che devo fare di volta in volta è trovare sottodomini di un sito per esempio.

A partire da esempio.com

  • sub1.example.com
  • other.example.com
  • another.example.com

Sto cercando altri modi per eseguire la ricognizione su questi target e voglio ottenere un elenco di tutti i sottodomini di un dominio.

Attualmente sto facendo una serie di cose tra cui

  • usando maltego per cercare informazioni
  • Utilizzo dei motori di ricerca per cercare sottodomini
  • collegamenti al sito di scansione
  • Esame dei record DNS
  • Esame di certificati SSL configurati in modo errato
  • Indovinare cose come 'vpn.example.com'

Credo che ce ne siano più di quelli che ho trovato finora, ma ora sono senza idee.

36
NULLZ

Come pentester in grado di trovare i sottodomini per un sito si presenta spesso. Quindi ho scritto uno strumento, SubBrute che lo fa abbastanza bene se lo dico da solo. In breve, questo è meglio di altri strumenti (feroce2) in quanto è molto più veloce, più preciso e più facile da lavorare . Questo strumento viene fornito con un elenco di sottodomini reali ottenuti dallo spidering del web. Questo elenco di sottodomini è più di 16 volte più grande di fierce2 e subbrute impiegherà circa 15 minuti per esaurire questo elenco su una connessione domestica. L'output è un elenco separato da una nuova riga, facile da usare come input per altri strumenti come nmap o uno scanner di vulnerabilità delle applicazioni Web.

30
rook

1. Trasferimento di zona

Alcuni server dei nomi consentono trasferimenti di zona DNS a chiunque su Internet, di solito involontariamente. In questa domanda, viene spiegato ulteriormente: attacco al trasferimento di zona DNS .

Strumenti per i trasferimenti di zona

seconda risposta su questa domanda menziona come testarlo per Windows e Linux:

Finestre:

nslookup
> server <DNS you are querying>
> set type=any
> ls -d <target>

Unix (nslookup è deprecato su Unix):

Dig -t axfr @<DNS you are querying> <target>

(Ho modificato quello di Unix, perché -axfr non sembra funzionare. Ho dovuto specificare -t axfr.)

2. Camminata della zona DNSSEC

DNSSEC firma i record DNS, quindi puoi essere sicuro di ricevere la risposta corretta (bene, date alcune radici di fiducia e intermediari). Ma come puoi dimostrare che qualcosa non esiste, ad es. quando cerchi nonexistentsub.example.com, come funziona il nameserver di example.com dimostrare la non esistenza di un sottodominio? Non contiene la chiave di firma (la firma viene eseguita al momento dell'aggiornamento della zona da parte degli amministratori).

Nella loro risposta a Come funziona DNSSec? Ci sono limiti o problemi noti? , / u/tylerl spiega:

Ovviamente quella risposta deve essere firmata, ma generalmente il server DNS stesso non ha accesso alla chiave di firma e non può firmare la risposta al volo; le firme vengono tutte create "offline" in anticipo. Ciò evita che la chiave venga esposta se il tuo server DNS viene compromesso.

Quindi, invece, alfabetizzi i tuoi sottodomini e dici "per ogni nome tra mail.example.com e pop.example.com, non esistono altri sottodomini" e firmi tale affermazione. Quindi quando qualcuno chiede nachos.example.com puoi semplicemente dare loro quella risposta (che è già stata firmata) e il cliente lo sa perché poiché nachos.example.com rientra in ordine alfabetico tra mail.example.com e pop.example.com, quindi la risposta "questo dominio non esiste" è considerata firmata correttamente e proviene effettivamente da te.

Il luogo in cui ciò diventa problematico è che avendo una serie di queste risposte negative che affermano esplicitamente che "non esistono risposte tra X e Y, puoi facilmente mappare esattamente quali domini esistono per l'intera zona. Sai che esiste" X " e sai che esiste "Y", e sai che non c'è nient'altro tra loro. Basta fare un po 'più di spunta a caso e sarai presto in grado di compilare un elenco di tutti i record che esistono.

Il record che specifica "fino a quando pop.example.com non c'è nulla" si chiama NSEC (Next SECure record).

Una soluzione alternativa è stata progettata per questo: NSEC3. Ha nomi di hash, quindi mail si trasforma in 1d6e1c... e pop si trasforma in 4f197c9.... Immagina che questi siano gli unici due sottodomini, quindi la risposta firmata dirà "non esiste alcun record tra b21afc... e b83a88... ". Ancora una volta funziona in ordine alfabetico e puoi ottenerli tutti, ma questa volta dovrai rompere ogni hash prima di sapere quali sono i sottodomini.

Nella mia esperienza, molti hanno abilitato l'estensione NSEC3.

Strumenti per la camminata di zona

NSEC3Walker esegue sia l'enumerazione che il cracking. Non posso garantire l'efficacia del cracking, ma è sicuramente basato solo sulla CPU. Dato che NSEC3 utilizza SHA1 (almeno inizialmente), probabilmente ci sono programmi di cracking migliori.

Anche dnsrecon sembra essere in grado di farlo: dnsrecon -z -d example.com. Non so se esiste un sito Web ufficiale con informazioni, ma in Debian Stretch posso apt-get install dnsrecon.

3. Ricerca inversa in una sottorete

Indovinandone alcuni, troverai spesso risposte in un intervallo simile. Se sai www. esiste e mail. esiste ed entrambi risolvono in 192.168.3.x, potrebbero essercene di più. Prova a fare una ricerca inversa per tutti gli indirizzi in 192.168.3.0-255 range (il /24) e probabilmente troverai altri nomi nel dominio .example.com.

Strumenti per ricerche inverse

dnsrecon può fare questo:

dnsrecon -t rvl -r 192.168.1.0/24

Dove -t rvl significa "digitare ricerca inversa" e -r passa un intervallo IP nella notazione CIDR. Non so se esiste un sito Web ufficiale con informazioni, ma in Debian Stretch posso apt-get install dnsrecon.

4. Record dei servizi DNS

È possibile impostare record SRV (servizio per il rilevamento del servizio, ad esempio _sip._tcp.example.com potrebbe puntare a sipserver.example.com sulla porta 5060. Dato che i nomi dei servizi ("sip" nell'esempio) sono in genere quelli standard registrati con IANA, possiamo iterarli.

Strumenti per l'interrogazione di record srv

dnsrecon può fare questo:

dnsrecon -t srv -d example.com

Ci vorrà un sottoinsieme dei nomi di servizi esistenti, selezionati con un metodo sconosciuto, come menzionato nella sua pagina man (man dnsrecon).

5. Altri metodi

Ne hai già menzionato alcuni. Non entrerò nei dettagli, perché sono abbastanza autoesplicativi e dipendono da un'applicazione in esecuzione sulla destinazione (come FTP), dipendono da una terza parte o non c'è davvero molto da dire su di loro .

  • I risultati della ricerca potrebbero rivelare sottodomini. Ancora una volta, dnsrecon può farlo con -t goo opzione (utilizza Google specificamente).

  • Il controllo di altri TLD con lo stesso nome potrebbe rivelare alcune altre varianti o indirizzi IP. Per esempio. Se example.com esiste, example.org potrebbe anche esistere. dnsrecon può farlo anche con dnsrecon -t tld -d example.com.

  • La scansione di un sito Web o la ricerca di riferimenti altrove potrebbero fornire suggerimenti. (Aiuto voluto: quale strumento usare?)

  • Guardando i certificati TLS spesso si ottengono risultati. Assicurati di controllare le porte per HTTPS, SMTP (S), FTP (S), ecc. E usa STARTTLS.

  • Esistono strumenti di terze parti che possono elencare i sottodomini in un dominio. I loro metodi sono meno chiari, ma la scansione di Internet e i record storici (forse un tempo era possibile trasferire un dominio?) Ne fanno spesso parte. (Aiuto voluto: qualche consiglio? Ricordo solo di averlo visto.)

6. Indovinare.

L'ultima opzione è solo indovinare, o da un dizionario (lo consiglierei) o forza bruta. Ciò è reso più difficile dai caratteri jolly, sebbene molti strumenti proveranno a rilevarlo e risolverlo.

Strumenti per indovinare/forzare il bruto

Fierce è stato creato per fare questo: https://github.com/mschwager/fierce
È installato di default in Kali Linux.

Come / u/rookmenzionato in un'altra risposta in questa discussione , hanno scritto Subbrute a questo scopo: https://github.com/TheRook/subbrute

dnsrecon può farlo con dnsrecon -t brt -d example.com. Uso -f a "Filtra i record di ricerca del dominio Brute Force che si risolvono nell'indirizzo IP definito con caratteri jolly durante il salvataggio dei record" (citando la sua pagina man). Puoi passare -D per un file di dizionario.

Appendice: dizionari

Sto ancora cercando buoni dizionari (per indovinare/forzare brutalmente), ma eccone alcuni di cui sono a conoscenza. Per favore aiutatemi a completare questo elenco! Più grande è, meglio è, a condizione che siano ordinati per probabilità.

4
Luc

Lo proverei con knock ma attenzione: c'è il rischio di essere nella lista nera.

Sfortunatamente non c'è modo di aggirare il bruteforcing se un trasferimento di zona non funziona.

3
Dr.Ü

Jason Haddix ha scritto il mio strumento di individuazione del sottodominio/nome host preferito che dipende da una versione molto recente di riconciliazione - disponibile qui - https://github.com/jhaddix/domain

subbrute è decente, fierce -dns <domain> funziona alla grande, dnsmap <domain> -r file.txt è anche valido e non vedo alcun motivo per non gradire knock -wc <domain> (anche se le altre caratteristiche di knock possono essere sospette). Tutti questi strumenti usano tecniche che mostrano la loro età, tuttavia. Il trucco di alcuni di questi miglioramenti di attacco è quello di creare un file personalizzato con nomi host che siano specificamente orientati per il bersaglio.

Tuttavia, la motosega per il rilevamento DNS è dnsrecon. Fa tutto.

Potresti anche considerare un'offerta commerciale, come RiskIQ, che può fare molto di più di tutti questi strumenti. Le loro tecniche includono molte indagini a cui molti di voi non vorrebbero pensare.

[AGGIORNAMENTO] Un altro preferito (per nomi host, non principalmente sottodomini - l'OP è interessato ad entrambi?) È - https://github.com/tomsteele/blacksheepwall

3
atdre

Over on Stack Overflow , Paul Melici ha suggerito di usare WolframAlpha . (Screenshot da solo)

  1. Inserisci il dominio nella casella di ricerca ed esegui la ricerca. (Per esempio. stackexchange.com )

    Wolfram - Homepage

  2. Nella terza sezione dall'alto (denominata "Statistiche Web per tutto stackexchange.com") fai clic su Sottodomini

    Wolfram - Subdomains button

  3. Nella sezione Sottodomini fai clic su Altro

    Wolfram - More subdomains button

Potrai vedere un elenco di sottodomini lì. Anche se sospetto che non mostri TUTTI i sottodomini.

1
Stevoisiak

Dai un'occhiata a http://ha.ckers.org/fierce/ . Può richiedere un file di dizionario e forza bruta. È incluso anche in Kali.

0
void_in

Inizialmente, utilizzo spesso un database dns passivo per trovare sottodomini per un sito. Lo svantaggio di questo metodo è che puoi trovare solo siti elencati nel database. Ma il vantaggio è che puoi trovare siti che non sono elencati in nessun elenco di parole.

Alcuni database per riferimento:

https://www.virustotal.com/en/domain/stackexchange.com/information/

http://www.nonexiste.net/?q=stackexchange.com

0