puredns是一种快速的域解析器和子域暴力破解工具,可以准确地过滤出通配符子域和DNS中毒条目。
它使用功能强大的存根DNS解析器massdns来执行批量查找。有了适当的带宽,并有大量的公共解析器,它可以在几分钟之内解决数百万个查询。不幸的是,massdns的结果仅与公共解决者提供的答案一样好。错误的DNS答案和来自通配符子域的误报通常会污染结果。
puredns通过其通配符检测算法解决了这一问题。它可以根据从一组可信解析器获得的DNS答案过滤出通配符。
特征
-
使用massdns和公共DNS解析器列表每秒解析数千个DNS查询
-
使用单词列表和根域的Bruteforce子域
-
使用最少的查询清理通配符并检测通配符的根,以确保获得精确的结果
-
通配符检测期间规避DNS负载平衡
-
通过运行一系列已知的,受信任的解析器来验证结果是否没有DNS中毒
-
保存有效域,通配符子域根目录以及仅包含有效条目的干净massdns输出的列表
-
从stdin读取域或单词的列表,并启用安静模式,以便轻松集成到自定义自动化管道中
Massdns
Puredns在主机上需要massdns。如果PATH环境变量中存在指向massdns二进制文件的路径,则puredns将立即可用。/usr/local/bin
在大多数系统上,复制massdns可执行文件的一个好地方。否则,您将需要使用--bin
命令行参数来指定massdns二进制文件的路径。
git clone https://github.com/blechschmidt/massdns.git
cd massdns
make
sudo make install
安装
您可以使用以下命令安装puredns:
GO111MODULE=on go get github.com/d3mondev/puredns/v2
用法
确保使用查看完整的可用命令和选项列表puredns --help
。
如果resolvers.txt
当前工作目录中存在文件,puredns会自动将其用作公共解析程序的列表。否则,请使用-r
参数指定要使用的解析器列表。
子域暴力破解
这是使用名为的单词表暴力破解大量子域列表的方法all.txt
:
puredns bruteforce all.txt domain.com
解析域列表
您还可以解析文本文件中包含的域列表(每行一个)。
puredns resolve domains.txt
标准输入操作
您可以通过stdin传递要解析的域列表:
cat domains.txt | puredns resolve
或用于暴力破解的单词列表:
cat wordlist.txt | puredns bruteforce domain.com
您还可以添加-q
开关以仅输出找到的域以管道传输到其他工具:
cat domains.txt | puredns resolve -q | httprobe
将结果保存到文件
您可以将以下信息保存到文件中以在工作流中重复使用:
-
domains:正确解析的干净域列表
-
通配符根域:找到的通配符根域的列表(即* .store.yahoo.com)
-
massdns结果文件(-o Snl文本输出):可用作参考并提取A和CNAME记录。
puredns resolve domains.txt --write valid_domains.txt
--write-wildcards wildcards.txt
--write-massdns massdns.txt
您可以使用上图中的100k个最常见子域的小单词列表,看到针对google.com域的puredns的运行情况。
作为其工作流程的一部分,puredns自动执行三个步骤:
-
使用公共DNS服务器进行批量解析
-
通配符检测
-
验证
1.使用公共DNS服务器进行批量解析
使用massdns,puredns将对所有域和子域执行批量解析。它通过stdin将数据馈送给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中毒的答案。
项目地址:
https://github.com/d3mondev/puredns
本文始发于微信公众号(Khan安全攻防实验室):PureDNS –具有精确通配符过滤功能的快速域解析器和子域暴力破解
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论