Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
puredns — 高速DNS解析器和子域名爆破工具,具备精准的通配符过滤和DNS投毒验证功能,专为精确侦察设计。 | Kitploit
工具/GitHubGitHub/d3mondev/puredns
侦察DNS和子域名枚举信息收集子域名枚举DNS 分析
GitHubd3mondev/puredns

puredns

高速DNS解析器和子域名爆破工具,具备精准的通配符过滤和DNS投毒验证功能,专为精确侦察设计。

查看仓库
2.2k1905个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

快速域名解析与子域名暴力破解工具,支持精准通配符过滤
快速上手 »

用法 · 工作原理 · 赞助 · 常见问题

关于

puredns 是一款快速域名解析与子域名暴力破解工具,能够精准过滤通配符子域名及 DNS 投毒条目。

它基于强大的存根 DNS 解析器 massdns 执行批量查询。在带宽充足且使用良好公共解析器列表的前提下,只需数分钟即可解析数百万条查询。然而,massdns 的结果质量完全取决于公共解析器返回的答案,这些答案常因错误 DNS 响应和通配符子域名的误报而受到污染。

puredns 通过其通配符检测算法解决了这一问题。它能基于从一组可信解析器获取的 DNS 答案过滤通配符,并尝试通过验证从这些可信解析器获得的答案来规避 DNS 投毒。

觉得这个工具有用吗?⭐ 在 GitHub 上为我们点星支持一下!

puredns 终端界面

功能特性

  • 使用 massdns 和公共 DNS 解析器列表,每秒解析数千条 DNS 查询
  • 利用字典文件和根域名进行子域名暴力破解
  • 通过最小查询量精准清理通配符并检测通配符根域名
  • 在通配符检测过程中规避 DNS 负载均衡
  • 针对已知的可信解析器运行验证,确保结果无 DNS 投毒
  • 保存有效域名列表、通配符子域名根列表以及仅含有效条目的干净 massdns 输出
  • 支持从标准输入读取域名或词列表,并启用静默模式,便于集成到自定义自动化流水线

赞助

如果我的工作为您带来了收益,请考虑成为赞助者!您将获得独特的福利!

这对我来说意义重大 ❤️,因为它能让我继续为社区免费工作。但无论如何,请放心,我的软件将始终免费开源供您使用。

快速上手

前置条件

massdns

Puredns 要求宿主机上安装 massdns。如果 massdns 二进制文件的路径已加入 PATH 环境变量,puredns 即可开箱即用。在大多数系统上,建议将 massdns 可执行文件复制到 /usr/local/bin。否则,您需要使用 --bin 命令行参数指定 massdns 二进制文件的路径。

以下命令适用于大多数基于 Debian 的系统。更多信息请参考官方编译指南。

root@kitploit:~
git clone https://github.com/blechschmidt/massdns.git
cd massdns
make
sudo make install

公共 DNS 解析器服务器列表

您需要获取一份公共 DNS 服务器列表才能使用 puredns。请参考常见问题了解如何整理自己的可用服务器列表。

安装

您可以下载预编译的二进制发布版。

或者,您可以轻松编译最新版本。首先确保系统已安装 Go——支持 Go 的最后两个主版本。有关安装说明,请参考官方Go 安装页面。然后运行以下命令:

root@kitploit:~
go install github.com/d3mondev/puredns/v2@latest

用法

请务必使用 puredns --help 查看完整的可用命令和选项列表。

如果当前工作目录中存在 resolvers.txt 文件,puredns 默认会使用它。否则,如果存在 ~/.config/puredns/resolvers.txt 或 ~/.config/puredns/resolvers-trusted.txt 文件,puredns 将自动将其用作解析器。如果这些选项均不存在,请使用 --resolvers 和 --resolvers-trusted 参数指定要使用的解析器。

指定可信解析器是可选的。默认情况下,puredns 仅使用 8.8.8.8 和 8.8.4.4。

子域名暴力破解

以下是使用名为 all.txt 的字典文件暴力破解大量子域名的方法:

puredns bruteforce all.txt domain.com

您还可以通过 -d 选项同时暴力破解多个域名,该选项可加载包含域名的文本文件,而非在参数中指定单个域名:

puredns bruteforce all.txt -d domains.txt

解析域名列表

您也可以解析包含在一个文本文件中的域名列表(每行一个)。

puredns resolve domains.txt

标准输入操作

您可以通过标准输入传递要解析的域名列表:

cat domains.txt | puredns resolve

或者传递用于暴力破解的词列表:

cat wordlist.txt | puredns bruteforce domain.com

您还可以添加 -q 开关,仅输出找到的域名以便管道传输到其他工具:

cat domains.txt | puredns resolve -q | httprobe

将结果保存到文件

您可以将以下信息保存到文件,以便在工作流程中重复使用:

  • domains:正确解析的干净域名列表
  • wildcard root domains:检测到的通配符根域名列表(例如 *.store.yahoo.com)
  • massdns results file (-o Snl 文本输出):可用作参考,提取 A 和 CNAME 记录。
root@kitploit:~
puredns resolve domains.txt --write valid_domains.txt \
                            --write-wildcards wildcards.txt \
                            --write-massdns massdns.txt

工作原理

puredns 运行演示

在上述动图中,您可以看到 puredns 使用包含 10 万个最常见子域名的字典文件对 google.com 域名进行暴力破解的情景。

作为工作流程的一部分,puredns 会自动执行三个步骤:

  1. 使用公共 DNS 服务器进行批量解析
  2. 通配符检测
  3. 验证

1. 使用公共 DNS 服务器进行批量解析

puredns 利用 massdns 对所有域名和子域名执行批量解析。它通过标准输入将数据传递给 massdns,从而可以在需要时限制每秒查询数,并对生成的域名列表执行基本清理。

默认情况下,输入的域名会被转换为小写,并且只接受包含有效字符(本质上是 [a-z0-9.-])的条目。您可以使用 --skip-sanitize 标志禁用此功能。

此步骤之后,结果通常会被污染:一些公共解析器会返回错误的答案,而通配符子域名可能迅速膨胀结果。

2. 通配符检测

然后,puredns 使用其通配符检测算法,从 massdns 结果文件中检测并提取所有通配符子域名根。

它将步骤 1 的 massdns 输出作为 DNS 缓存,以最小化需要执行的查询数量。为确保精确结果,它可能需要执行 DNS 查询来验证缓存结果。

您可以使用 --skip-wildcard 标志跳过此步骤。

3. 验证

为防止 DNS 投毒,puredns 最后一次使用 massdns,通过可信 DNS 解析器验证剩余结果。目前内部使用的可信解析器是 8.8.8.8 和 8.8.4.4。此步骤以较慢的速度执行,以避免触发可信解析器的限流。

您可以使用 --skip-validation 标志跳过此步骤。

此时,生成的结果文件应已清除通配符子域名和 DNS 投毒答案。

常见问题

如何获取与 puredns 配合使用的解析器?

Trickest 在此维护了一份有效的解析器列表:https://github.com/trickest/resolvers

或者,您可以从 public-dns.info 获取公共解析器列表,然后使用 DNS Validator 项目确保只保留提供有效答案的解析器。

如果您的公共解析器向 puredns 提供错误信息(例如返回投毒回复),某些子域名可能因被过滤而丢失。提示: 避免使用来自互联网审查国家(如中国)的解析器。

一旦您有了自定义解析器列表,可以通过 -r 参数将其传递给 puredns,或将其放置在 ~/.config/puredns/resolvers.txt 文件中:

puredns resolve domains.txt -r resolvers.txt

默认可信解析器当前为 8.8.8.8 和 8.8.4.4。如果您确实想更改它们,还可以通过 --resolvers-trusted 参数指定自定义列表,或将其放置在 ~/.config/puredns/resolvers-trusted.txt 文件中。我已经做了大量测试来为 puredns 寻找最佳的可信解析器——如果您决定更改它们,请务必仔细验证结果,并使用 --rate-limit-trusted 调整速率限制。

puredns resolve domains.txt -r resolvers.txt --resolvers-trusted trusted.txt

为什么结果中会出现无法解析到 IP 地址的域名?

Puredns 并不会简单地忽略包含 NXDOMAIN 的 DNS 答案。有时,这些 NXDOMAIN 答案中包含指向过期域名的有效 CNAME 记录。如果这些记录存在,它们可能指向一个未注册的域名,从而导致子域名接管。

如果您得到了无法解析到 IP 地址的域名,请检查它们是否包含感兴趣的 CNAME 记录:

dig @8.8.8.8 CNAME example.com

为什么有些域名的通配符未被正确过滤?

最可能的原因是 DNS 负载均衡——有时,每次独特的 DNS 查询都会得到不同的 IP 地址。这使得通过比较 DNS 记录来检测通配符子域名变得非常困难。

您可以指定 puredns 在通配符检测过程中为收集子域名的所有不同 IP 地址而执行的测试次数。默认次数为 3 次,这非常低。我见过一些域名负载均衡严重,需要超过 50 次查询才能返回虽然不完美但足够好的结果。

您可以尝试通过 --wildcard-tests 参数增加检测通配符子域名时执行的测试次数:

puredns resolve domains.txt --wildcard-tests 50

为什么 puredns 在解析非常大的列表时会因内存不足而崩溃?

为了检测通配符,puredns 需要缓存找到的 DNS 答案。如果您的域名列表包含数亿条记录,并且存在大量通配符子域名,宿主机可能耗尽内存。但有一个简单的解决方案。

默认情况下,puredns 将所有域名放在一个批次中,以减少 DNS 查询次数和执行时间。如果内存受限,可以使用 --wildcard-batch 参数将域名分成多个较小的批次进行处理。对于 1GB RAM 的 VPS,我发现 1M 到 2M 个子域名是一个合理的批次大小。

puredns resolve domains.txt --wildcard-batch 1000000

为什么结果中有时会出现重复的域名?

Puredns 在其整个流程中不会去除重复项。如果输入文件包含重复项目(如相同的词或域名),puredns 将输出重复元素。您可以通过 sort -u 等工具确保提供给 puredns 的输入文件不包含重复项。

为什么结果中有时会出现无关的域名?

这很可能是因为所使用的公共解析器。其中一些解析器有时会返回与查询无关的答案,导致输出中出现随机域名。Puredns 目前不处理这种情况,需要用户自行清理输出以确保找到的域名符合预期范围。

资源

public-dns.info 持续更新公共和免费 DNS 解析器列表。

DNS Validator 可用于整理您自己的公共 DNS 解析器列表。

all.txt 字典文件 Jhaddix 的标志性 all.txt 字典文件常用于子域名枚举。

shuffleDNS 是一个用 Go 编写的不错替代工具,它使用不同的算法处理通配符子域名。

贡献

您可以通过以下方式为 puredns 做出贡献:

  • 提交新功能建议
  • 报告 Bug 作为议题
  • 为这个仓库点星 ⭐
  • 宣传 puredns
  • 成为赞助者 🥇 并获取独特福利

您有一个很棒的新功能想法吗?或者发现了一个想要修复的 Bug?太棒了!欢迎在提交 Pull Request 之前提交一个议题进行讨论。

我不会接受针对琐碎更改(如错字修正、最佳实践、小修小补等)的 Pull Request。

免责声明与许可证

本仓库中包含的任何解析器仅供参考。作者不对列表中解析器的任何误用负责。用户有责任整理一份有权使用的解析器列表。

未经同意使用此程序攻击目标是非法的。用户有责任遵守所有适用法律。开发者不承担任何责任,也不对本程序造成的任何误用或损害负责。请负责任地使用。

本仓库中的材料根据 GNU GPLv3 许可证授权。

下载工具