
Resolver DNS ad alta velocità e bruteforcer di sottodomini con filtro wildcard accurato e validazione del DNS poisoning per una ricognizione precisa.

Risolutore di domini veloce e brute force di sottodomini con filtro accurato dei wildcard
Per Iniziare »
Utilizzo
·
Come funziona
·
Sponsorizzazione
·
FAQ
puredns è un risolutore di domini veloce e uno strumento di brute force per sottodomini in grado di filtrare accuratamente i sottodomini wildcard e le voci avvelenate da DNS.
Utilizza massdns, un potente risolutore DNS stub, per eseguire ricerche in blocco. Con la giusta larghezza di banda e una buona lista di risolutori pubblici, può risolvere milioni di query in pochi minuti. Purtroppo, i risultati di massdns sono validi solo quanto le risposte fornite dai risolutori pubblici. I risultati sono spesso contaminati da risposte DNS errate e falsi positivi da sottodomini wildcard.
puredns risolve questo problema con il suo algoritmo di rilevamento dei wildcard. È in grado di filtrare i wildcard basandosi sulle risposte DNS ottenute da un insieme di risolutori fidati. Cerca anche di aggirare l'avvelenamento DNS convalidando le risposte ottenute tramite tali risolutori fidati.
Pensi che sia utile? ⭐ Metti una stella su GitHub — aiuta!

|
Se il mio lavoro ti fa guadagnare denaro, valuta di diventare uno sponsor! Puoi ottenere vantaggi unici! Significherebbe anche MOLTISSIMO ❤️ perché mi permetterebbe di continuare a lavorare gratuitamente per la community. Ma qualunque cosa tu faccia, stai certo che il mio software rimarrà gratuito e open-source per te. |
Puredns richiede massdns sulla macchina host. Se il percorso del binario massdns è presente nella variabile d'ambiente PATH, puredns funzionerà immediatamente. Un buon posto per copiare l'eseguibile massdns è /usr/local/bin sulla maggior parte dei sistemi. Altrimenti, dovrai specificare il percorso del file binario massdns usando l'argomento --bin.
Quanto segue dovrebbe funzionare sulla maggior parte dei sistemi basati su Debian. Segui le istruzioni ufficiali per maggiori informazioni.
git clone https://github.com/blechschmidt/massdns.git
cd massdns
make
sudo make install
Devi ottenere un elenco di server DNS pubblici per usare puredns. Consulta le FAQ per imparare come curare il tuo elenco di server funzionanti.
Puoi scaricare una release binaria.
In alternativa, puoi compilare facilmente l'ultima versione. Prima assicurati che Go sia installato sul tuo sistema — sono supportate le ultime due major release di Go. Fai riferimento alla pagina ufficiale di installazione di Go per le istruzioni. Poi esegui il seguente comando:
go install github.com/d3mondev/puredns/v2@latest
Assicurati di visualizzare l'elenco completo dei comandi e delle opzioni disponibili usando puredns --help.
Se esiste un file resolvers.txt nella directory di lavoro corrente, puredns lo userà come impostazione predefinita. Altrimenti, se sono presenti i file ~/.config/puredns/resolvers.txt o ~/.config/puredns/resolvers-trusted.txt, puredns li utilizzerà automaticamente come risolutori. Se nessuna di queste opzioni è disponibile, specifica i risolutori da usare con gli argomenti --resolvers e --resolvers-trusted.
Specificare risolutori fidati è opzionale. Per impostazione predefinita, puredns userà semplicemente 8.8.8.8 e 8.8.4.4.
Ecco come fare brute force di una lista massiccia di sottodomini usando una wordlist chiamata all.txt:
puredns bruteforce all.txt domain.com
Puoi anche fare brute force di più domini contemporaneamente con l'opzione -d per caricare un file di testo contenente domini invece di specificare un singolo dominio come argomento:
puredns bruteforce all.txt -d domains.txt
Puoi anche risolvere una lista di domini contenuti in un file di testo (uno per riga).
puredns resolve domains.txt
Puoi passare l'elenco di domini da risolvere tramite stdin:
cat domains.txt | puredns resolve
O una lista di parole da usare per il brute force:
cat wordlist.txt | puredns bruteforce domain.com
Puoi anche aggiungere l'opzione -q per produrre solo i domini trovati da passare ad altri strumenti:
cat domains.txt | puredns resolve -q | httprobe
Puoi salvare le seguenti informazioni in file per riutilizzarle nei tuoi flussi di lavoro:
puredns resolve domains.txt --write valid_domains.txt \
--write-wildcards wildcards.txt \
--write-massdns massdns.txt

Puoi vedere puredns all'opera sul dominio google.com usando una piccola wordlist dei 100k sottodomini più comuni nell'immagine sopra.
Come parte del suo flusso di lavoro, puredns esegue automaticamente tre passaggi:
Usando massdns, puredns esegue una risoluzione di massa di tutti i domini e sottodomini. Invia i dati a massdns tramite stdin, il che gli consente di limitare il numero di query al secondo se necessario e di eseguire una sanificazione di base sull'elenco dei domini generati.
Per impostazione predefinita, i domini di input vengono convertiti in minuscolo e vengono accettate solo voci contenenti caratteri validi (essenzialmente [a-z0-9.-]). Puoi disabilitare questa funzione con il flag --skip-sanitize.
Dopo questo passaggio, i risultati sono solitamente contaminati: alcuni risolutori pubblici invieranno risposte errate e i sottodomini wildcard possono gonfiare rapidamente i risultati.
Puredns utilizza quindi il suo algoritmo di rilevamento wildcard per rilevare ed estrarre tutte le radici dei sottodomini wildcard dal file dei risultati di massdns.
Utilizzerà l'output di massdns del passaggio 1 come cache DNS per ridurre al minimo il numero di query da eseguire. Per garantire risultati precisi, potrebbe dover convalidare i risultati della cache eseguendo una query DNS.
Puoi saltare questo passaggio usando il flag --skip-wildcard.
Per proteggersi dall'avvelenamento DNS, puredns usa massdns un'ultima volta per convalidare i risultati rimanenti usando risolutori DNS fidati. Attualmente, i risolutori fidati interni utilizzati sono 8.8.8.8 e 8.8.4.4. Questo passaggio viene eseguito a un ritmo più lento per evitare di incorrere in limitazioni di velocità sui risolutori fidati.
Puoi saltare questo passaggio usando il flag --skip-validation.
A questo punto, i file risultanti dovrebbero essere privi di sottodomini wildcard e risposte avvelenate da DNS.
Trickest mantiene un elenco di risolutori validi qui: https://github.com/trickest/resolvers
In alternativa, puoi ottenere un elenco di risolutori pubblici da public-dns.info, quindi usare il progetto DNS Validator per mantenere solo i risolutori che forniscono risposte valide.
Se i tuoi risolutori pubblici forniscono informazioni errate a puredns, ad esempio inviando risposte avvelenate, alcuni sottodomini potrebbero essere persi perché verranno filtrati. Suggerimento: Evita risolutori provenienti da paesi che censurano Internet, come la Cina.
Una volta ottenuto un elenco di risolutori personalizzati, puoi passarli a puredns con l'argomento -r o posizionandoli in un file situato in ~/.config/puredns/resolvers.txt:
puredns resolve domains.txt -r resolvers.txt
I risolutori fidati predefiniti sono attualmente 8.8.8.8 e 8.8.4.4. Se desideri modificarli, puoi anche specificare un elenco personalizzato con l'argomento --resolvers-trusted o posizionandoli in un file situato in ~/.config/puredns/resolvers-trusted.txt. Ho eseguito molti test per trovare i migliori risolutori fidati per puredns: assicurati di convalidare attentamente i tuoi risultati se decidi di cambiarli e regola il limite di velocità con --rate-limit-trusted.
puredns resolve domains.txt -r resolvers.txt --resolvers-trusted trusted.txt
Puredns non ignora semplicemente le risposte DNS che contengono NXDOMAIN. A volte, queste risposte NXDOMAIN hanno record CNAME validi che puntano a domini scaduti. Se questi record sono presenti, potrebbero puntare a un dominio non registrato, consentendo takeover di sottodomini.
Se ottieni domini che non risolvono in un indirizzo IP, controlla se contengono un record CNAME di interesse:
dig @8.8.8.8 CNAME example.com
La causa più probabile è il bilanciamento del carico DNS: a volte, per ogni query DNS unica, ottieni indirizzi IP diversi. Questo può rendere molto difficile rilevare i sottodomini wildcard confrontando i loro record DNS.
Puoi specificare il numero di test che puredns eseguirà per raccogliere tutti i diversi indirizzi IP per un sottodominio durante il rilevamento wildcard. Il numero predefinito è 3 test, che è molto basso. Ho visto domini con molto bilanciamento richiedere più di 50 query per restituire risultati non perfetti ma sufficienti.
Puoi provare ad aumentare il numero di test eseguiti per rilevare i sottodomini wildcard con l'argomento --wildcard-tests:
puredns resolve domains.txt --wildcard-tests 50
Per rilevare i wildcard, puredns deve mantenere una cache delle risposte DNS trovate. Se il tuo elenco di domini è di centinaia di milioni e contiene molti sottodomini wildcard, l'host potrebbe esaurire la memoria. Ma c'è una soluzione semplice.
Per impostazione predefinita, puredns inserisce tutti i domini in un unico batch per risparmiare sul numero di query DNS e sul tempo di esecuzione. Se la memoria è un problema, è possibile elaborare i domini in batch più piccoli con l'argomento --wildcard-batch. Ho trovato che una buona dimensione sia tra 1M e 2M di sottodomini per un VPS con 1GB di RAM.
puredns resolve domains.txt --wildcard-batch 1000000
Puredns non rimuove i duplicati in nessuna parte della sua pipeline. Se il file di input contiene elementi duplicati come parole o domini identici, puredns produrrà elementi duplicati. Puoi assicurarti che i file di input forniti a puredns siano privi di duplicati usando uno strumento come sort -u.
Probabilmente è dovuto ai risolutori pubblici utilizzati. Alcuni di essi a volte restituiscono risposte non correlate alle query, portando a nomi di dominio casuali nell'output. Puredns attualmente non gestisce questo caso e lascia all'utente la sanificazione dell'output per garantire che i domini trovati rispettino l'ambito.
public-dns.info aggiorna continuamente un elenco di risolutori DNS pubblici e gratuiti.
DNS Validator può essere utilizzato per curare il tuo elenco di risolutori DNS pubblici.
Wordlist all.txt La famosa wordlist all.txt di Jhaddix è comunemente usata per l'enumerazione dei sottodomini.
shuffleDNS è una buona alternativa scritta in go che gestisce i sottodomini wildcard usando un algoritmo diverso.
Puoi contribuire a puredns nei seguenti modi:
Hai un'idea per una nuova fantastica funzionalità? Hai trovato un bug che vuoi risolvere? Ottimo! Sentiti libero di inviare un issue per discuterne prima di fare una pull request.
Non accetterò pull request per modifiche banali come correzioni di errori di battitura, migliori pratiche, piccole correzioni, ecc.
Tutti i risolutori inclusi in questo repository sono presenti solo come riferimento. L'autore non è responsabile per qualsiasi uso improprio dei risolutori in quell'elenco. È responsabilità dell'utente curare un elenco di risolutori che è autorizzato a utilizzare.
L'uso di questo programma per attaccare target senza consenso è illegale. È responsabilità dell'utente rispettare tutte le leggi applicabili. Lo sviluppatore non si assume alcuna responsabilità e non è responsabile per qualsiasi uso improprio o danno causato da questo programma. Si prega di usare con responsabilità.
Il materiale contenuto in questo repository è concesso in licenza sotto GNU GPLv3.