
Hochgeschwindigkeits-DNS-Resolver und Subdomain-Bruteforcer mit präziser Wildcard-Filterung und DNS-Poisoning-Validierung für genaue Aufklärung.

Schneller Domain-Auflöser und Subdomain-Bruteforcer mit genauer Wildcard-Filterung
Erste Schritte »
Verwendung
·
Funktionsweise
·
Sponsoring
·
FAQ
puredns ist ein schneller Domain-Auflöser und ein Werkzeug zum Bruteforcen von Subdomains, das Wildcard-Subdomains und DNS-vergiftete Einträge genau herausfiltern kann.
Es verwendet massdns, einen leistungsstarken Stub-DNS-Resolver, um Bulk-Lookups durchzuführen. Mit der richtigen Bandbreite und einer guten Liste öffentlicher Resolver können Millionen von Abfragen in nur wenigen Minuten aufgelöst werden. Leider sind die Ergebnisse von massdns nur so gut wie die Antworten, die von den öffentlichen Resolvern geliefert werden. Die Ergebnisse werden oft durch falsche DNS-Antworten und Fehlalarme von Wildcard-Subdomains verunreinigt.
puredns löst dies mit seinem Algorithmus zur Wildcard-Erkennung. Es kann Wildcards basierend auf den von einer Reihe vertrauenswürdiger Resolver erhaltenen DNS-Antworten herausfiltern. Es versucht auch, DNS-Vergiftung zu umgehen, indem es die mit diesen vertrauenswürdigen Resolvern erhaltenen Antworten validiert.
Denkst du, das ist nützlich? ⭐ Gib uns einen Stern auf GitHub — es hilft!

|
Wenn meine Arbeit dir Geld einbringt, erwäge, Sponsor zu werden! Du kannst einzigartige Vorteile erhalten! Es würde auch SEHR VIEL ❤️ bedeuten, da es mir erlauben würde, weiterhin kostenlos für die Community zu arbeiten. Aber egal, was du tust, sei versichert, dass meine Software für dich kostenlos und Open Source bleibt. |
Puredns benötigt massdns auf dem Host-Rechner. Wenn der Pfad zur massdns-Binärdatei in der PATH-Umgebungsvariable enthalten ist, funktioniert puredns sofort. Ein guter Ort, um die massdns-Ausführbare zu kopieren, ist bei den meisten Systemen /usr/local/bin. Andernfalls musst du den Pfad zur massdns-Binärdatei mit dem Befehlszeilenargument --bin angeben.
Das Folgende sollte auf den meisten Debian-basierten Systemen funktionieren. Befolge die offiziellen Anweisungen für weitere Informationen.
git clone https://github.com/blechschmidt/massdns.git
cd massdns
make
sudo make install
Du benötigst eine Liste öffentlicher DNS-Server, um puredns zu verwenden. Siehe die FAQ, um zu erfahren, wie du deine eigene Liste funktionierender Server zusammenstellst.
Du kannst ein Binär-Release herunterladen.
Alternativ kannst du die neueste Version einfach kompilieren. Stelle zunächst sicher, dass Go auf deinem System installiert ist – die letzten zwei Hauptversionen von Go werden unterstützt. Siehe die offizielle Go-Installationsanleitung für Installationsanweisungen. Führe dann den folgenden Befehl aus:
go install github.com/d3mondev/puredns/v2@latest
Sieh dir die vollständige Liste der verfügbaren Befehle und Optionen mit puredns --help an.
Wenn eine Datei resolvers.txt im aktuellen Arbeitsverzeichnis existiert, verwendet puredns diese standardmäßig. Andernfalls, wenn entweder ~/.config/puredns/resolvers.txt oder ~/.config/puredns/resolvers-trusted.txt vorhanden sind, nutzt puredns diese automatisch als Resolver. Wenn keine dieser Optionen verfügbar ist, gib die zu verwendenden Resolver mit den Argumenten --resolvers und --resolvers-trusted an.
Die Angabe vertrauenswürdiger Resolver ist optional. Standardmäßig verwendet puredns einfach 8.8.8.8 und 8.8.4.4.
So bruteforct man eine riesige Liste von Subdomains mit einer Wortliste namens all.txt:
puredns bruteforce all.txt domain.com
Du kannst auch mehrere Domains gleichzeitig bruteforcen, indem du die Option -d verwendest, um eine Textdatei mit Domains zu laden, anstatt eine einzelne Domain als Argument anzugeben:
puredns bruteforce all.txt -d domains.txt
Du kannst auch eine Liste von Domains auflösen, die in einer Textdatei enthalten sind (eine pro Zeile).
puredns resolve domains.txt
Du kannst die Liste der aufzulösenden Domains über stdin übergeben:
cat domains.txt | puredns resolve
Oder eine Liste von Wörtern zum Bruteforcen:
cat wordlist.txt | puredns bruteforce domain.com
Du kannst auch den Schalter -q hinzufügen, um nur die gefundenen Domains auszugeben, die an andere Tools weitergeleitet werden sollen:
cat domains.txt | puredns resolve -q | httprobe
Du kannst die folgenden Informationen in Dateien speichern, um sie in deinen Workflows wiederzuverwenden:
puredns resolve domains.txt --write valid_domains.txt \
--write-wildcards wildcards.txt \
--write-massdns massdns.txt

Du kannst puredns in Aktion gegen die Domain google.com mit einer kleinen Wortliste der 100k häufigsten Subdomains im obigen Bild sehen.
Im Rahmen seines Workflows führt puredns automatisch drei Schritte aus:
Mit massdns führt puredns eine Massenauflösung aller Domains und Subdomains durch. Es übergibt die Daten über stdin an massdns, was es ermöglicht, die Anzahl der Abfragen pro Sekunde bei Bedarf zu drosseln und eine grundlegende Bereinigung der generierten Domainliste durchzuführen.
Standardmäßig werden die Eingabe-Domains in Kleinbuchstaben umgewandelt, und nur Einträge mit gültigen Zeichen werden akzeptiert (im Wesentlichen [a-z0-9.-]). Du kannst dies mit dem Flag --skip-sanitize deaktivieren.
Nach diesem Schritt sind die Ergebnisse normalerweise verunreinigt: Einige öffentliche Resolver senden falsche Antworten zurück, und Wildcard-Subdomains können die Ergebnisse schnell aufblähen.
Puredns verwendet dann seinen Wildcard-Erkennungsalgorithmus, um alle Wildcard-Subdomain-Roots aus der massdns-Ergebnisdatei zu erkennen und zu extrahieren.
Es verwendet die massdns-Ausgabe aus Schritt 1 als DNS-Cache, um die Anzahl der durchzuführenden Abfragen zu minimieren. Um präzise Ergebnisse zu gewährleisten, kann es erforderlich sein, die Cache-Ergebnisse durch eine DNS-Abfrage zu validieren.
Du kannst diesen Schritt mit dem Flag --skip-wildcard überspringen.
Zum Schutz vor DNS-Vergiftung verwendet puredns massdns ein letztes Mal, um die verbleibenden Ergebnisse mit vertrauenswürdigen DNS-Resolver zu validieren. Derzeit werden als interne vertrauenswürdige Resolver 8.8.8.8 und 8.8.4.4 verwendet. Dieser Schritt erfolgt langsamer, um eine Ratenbegrenzung auf den vertrauenswürdigen Resolvern zu vermeiden.
Du kannst diesen Schritt mit dem Flag --skip-validation überspringen.
An diesem Punkt sollten die resultierenden Dateien frei von Wildcard-Subdomains und DNS-vergifteten Antworten sein.
Trickest pflegt eine Liste gültiger Resolver hier: https://github.com/trickest/resolvers
Alternativ kannst du eine Liste öffentlicher Resolver von public-dns.info beziehen und dann das Projekt DNS Validator verwenden, um nur Resolver zu behalten, die gültige Antworten liefern.
Wenn deine öffentlichen Resolver puredns falsche Informationen liefern, z. B. durch das Senden vergifteter Antworten, können einige Subdomains übersehen werden, da sie herausgefiltert werden. Hinweis: Vermeide Resolver aus Ländern, die das Internet zensieren, wie China.
Sobald du eine Liste benutzerdefinierter Resolver hast, kannst du sie puredns mit dem Argument -r übergeben oder sie in einer Datei unter ~/.config/puredns/resolvers.txt ablegen:
puredns resolve domains.txt -r resolvers.txt
Die standardmäßigen vertrauenswürdigen Resolver sind derzeit 8.8.8.8 und 8.8.4.4. Wenn du sie ändern möchtest, kannst du auch eine benutzerdefinierte Liste mit dem Argument --resolvers-trusted angeben oder sie in einer Datei unter ~/.config/puredns/resolvers-trusted.txt ablegen. Ich habe viele Tests durchgeführt, um die bestmöglichen vertrauenswürdigen Resolver für puredns zu finden – überprüfe deine Ergebnisse sorgfältig, wenn du sie änderst, und passe die Ratenbegrenzung mit --rate-limit-trusted an.
puredns resolve domains.txt -r resolvers.txt --resolvers-trusted trusted.txt
Puredns ignoriert nicht einfach DNS-Antworten mit NXDOMAIN. Manchmal enthalten diese NXDOMAIN-Antworten gültige CNAME-Einträge, die auf abgelaufene Domains verweisen. Wenn diese Einträge vorhanden sind, können sie auf eine nicht registrierte Domain verweisen, was Subdomain-Übernahmen ermöglicht.
Wenn du Domains zurückbekommst, die keine IP-Adresse auflösen, überprüfe, ob sie einen interessanten CNAME-Eintrag enthalten:
dig @8.8.8.8 CNAME example.com
Die wahrscheinlichste Ursache ist DNS-Lastverteilung – manchmal erhältst du für jede einzelne DNS-Abfrage unterschiedliche IP-Adressen. Dies kann es sehr schwierig machen, Wildcard-Subdomains durch Vergleich ihrer DNS-Einträge zu erkennen.
Du kannst die Anzahl der Tests angeben, die puredns durchführt, um alle verschiedenen IP-Adressen für eine Subdomain während der Wildcard-Erkennung zu sammeln. Die Standardanzahl beträgt 3 Tests, was sehr niedrig ist. Ich habe Domains mit viel Lastverteilung gesehen, die mehr als 50 Abfragen benötigten, um Ergebnisse zu liefern, die nicht perfekt, aber gut genug waren.
Du kannst versuchen, die Anzahl der Tests zur Erkennung von Wildcard-Subdomains mit dem Argument --wildcard-tests zu erhöhen:
puredns resolve domains.txt --wildcard-tests 50
Zur Erkennung von Wildcards muss puredns einen Cache der gefundenen DNS-Antworten behalten. Wenn deine Domainliste hunderte Millionen Einträge umfasst und viele Wildcard-Subdomains enthält, kann der Hostspeicher ausgehen. Aber es gibt eine einfache Lösung.
Standardmäßig legt puredns alle Domains in einen einzigen Batch, um die Anzahl der DNS-Abfragen und die Ausführungszeit zu reduzieren. Wenn Speicher ein Problem ist, ist es möglich, die Domains mit dem Argument --wildcard-batch in mehreren kleineren Batches zu verarbeiten. Ich habe eine gute Größe zwischen 1M und 2M Subdomains für einen VPS mit 1 GB RAM gefunden.
puredns resolve domains.txt --wildcard-batch 1000000
Puredns entfernt keine Duplikate in seiner Pipeline. Wenn die Eingabedatei doppelte Elemente wie identische Wörter oder Domains enthält, gibt puredns doppelte Elemente aus. Du kannst sicherstellen, dass die Eingabedateien für puredns frei von Duplikaten sind, indem du ein Tool wie sort -u verwendest.
Dies liegt wahrscheinlich an den verwendeten öffentlichen Resolvern. Einige von ihnen geben manchmal Antworten zurück, die nichts mit den Abfragen zu tun haben, was zu zufälligen Domainnamen in der Ausgabe führt. Puredns behandelt diesen Fall derzeit nicht und überlässt es dem Benutzer, die Ausgabe zu bereinigen, um sicherzustellen, dass die gefundenen Domains den Umfang respektieren.
public-dns.info aktualisiert kontinuierlich eine Liste öffentlicher und kostenloser DNS-Resolver.
DNS Validator kann verwendet werden, um deine eigene Liste öffentlicher DNS-Resolver zusammenzustellen.
all.txt wordlist Jhaddix' ikonische Wortliste all.txt wird häufig für die Subdomain-Enumeration verwendet.
shuffleDNS ist eine gute Alternative in Go, die Wildcard-Subdomains mit einem anderen Algorithmus behandelt.
Du kannst auf folgende Weise zu puredns beitragen:
Hast du eine Idee für ein großartiges neues Feature? Hast du einen Fehler gefunden, den du beheben möchtest? Großartig! Fühle dich frei, ein Issue einzureichen zur Diskussion, bevor du einen Pull-Request erstellst.
Ich werde keine Pull-Requests für triviale Änderungen wie Tippfehler-Korrekturen, Best Practices, kleinere Korrekturen usw. annehmen.
Alle in diesem Repository enthaltenen Resolver dienen nur als Referenz. Der Autor ist nicht verantwortlich für Missbrauch der Resolver in dieser Liste. Es liegt in der Verantwortung des Benutzers, eine Liste von Resolvern zusammenzustellen, die er verwenden darf.
Die Verwendung dieses Programms zum Angreifen von Zielen ohne Zustimmung ist illegal. Es liegt in der Verantwortung des Benutzers, alle geltenden Gesetze einzuhalten. Der Entwickler übernimmt keine Haftung und ist nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Programm verursacht werden. Bitte verwende es verantwortungsvoll.
Das in diesem Repository enthaltene Material ist unter GNU GPLv3 lizenziert.