前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PureDNS –具有精确通配符过滤功能的快速域解析器和子域暴力破解

PureDNS –具有精确通配符过滤功能的快速域解析器和子域暴力破解

作者头像
Khan安全团队
发布2021-05-28 16:44:33
发布2021-05-28 16:44:33
3.2K00
代码可运行
举报
文章被收录于专栏:Khan安全团队Khan安全团队
运行总次数:0
代码可运行

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二进制文件的路径。

代码语言:javascript
代码运行次数:0
运行
复制
git clone https://github.com/blechschmidt/massdns.git
cd massdns
make
sudo make install

安装

您可以使用以下命令安装puredns:

代码语言:javascript
代码运行次数:0
运行
复制
GO111MODULE=on go get github.com/d3mondev/puredns/v2

用法

确保使用查看完整的可用命令和选项列表puredns --help

如果resolvers.txt当前工作目录中存在文件,puredns会自动将其用作公共解析程序的列表。否则,请使用-r参数指定要使用的解析器列表。

子域暴力破解

这是使用名为的单词表暴力破解大量子域列表的方法all.txt

代码语言:javascript
代码运行次数:0
运行
复制
puredns bruteforce all.txt domain.com

解析域列表

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

代码语言:javascript
代码运行次数:0
运行
复制
puredns resolve domains.txt

标准输入操作

您可以通过stdin传递要解析的域列表:

代码语言:javascript
代码运行次数:0
运行
复制
cat domains.txt | puredns resolve

或用于暴力破解的单词列表:

代码语言:javascript
代码运行次数:0
运行
复制
cat wordlist.txt | puredns bruteforce domain.com

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

代码语言:javascript
代码运行次数:0
运行
复制
cat domains.txt | puredns resolve -q | httprobe

将结果保存到文件

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

  • domains:正确解析的干净域列表
  • 通配符根域:找到的通配符根域的列表(即* .store.yahoo.com
  • massdns结果文件(-o Snl文本输出):可用作参考并提取A和CNAME记录。
代码语言:javascript
代码运行次数:0
运行
复制
puredns resolve domains.txt --write valid_domains.txt \
                            --write-wildcards wildcards.txt \
                            --write-massdns massdns.txt

您可以使用上图中的100k个最常见子域的小单词列表,看到针对google.com域的puredns的运行情况。

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

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

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.88.8.4.4。此步骤的执行速度较慢,以避免对受信任的解析器造成任何速率限制。

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

此时,生成的文件应清除通配符子域和DNS中毒的答案。

项目地址:

https://github.com/d3mondev/puredns

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Khan安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 特征
  • Massdns
  • 安装
  • 用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档