专栏首页FreeBufMassDNS:一款功能强大的高性能DNS子域名查询枚举侦察工具

MassDNS:一款功能强大的高性能DNS子域名查询枚举侦察工具

MassDNS是一款功能强大的高性能DNS stub解析工具,它可以帮助研究人员解析数百万甚至上亿个域名。在没有特殊配置的情况下,MassDNS可以利用公共可用的解析器每秒钟解析超过350000个域名。

项目编译

首先,使用下列命令将MassDNS源码克隆至本地目录中:

git clone https://github.com/blechschmidt/massdns.git

使用cd命令切换到本地项目目录中:

cd massdns

接下来,运行”make”命令构建源码。

如果你使用的不是Linux操作系统,那么则需要运行下列命令:

make nolinux

在Windows平台下,你还需要安装Cygwin包、gcc-core、git和make。

工具使用

Usage: ./bin/massdns [options] [domainlist]      -b  --bindto           Bind to IP address and port. (Default: 0.0.0.0:0)          --busy-poll        Use busy-wait polling instead of epoll.      -c  --resolve-count    Number of resolves for a name before giving up. (Default: 50)          --drop-group       Group to drop privileges to when running as root. (Default: nogroup)          --drop-user        User to drop privileges to when running as root. (Default: nobody)          --flush            Flush the output file whenever a response was received.      -h  --help             Show this help.      -i  --interval         Interval in milliseconds to wait between multiple resolves of the same                             domain. (Default: 500)      -l  --error-log        Error log file path. (Default: /dev/stderr)          --norecurse        Use non-recursive queries. Useful for DNS cache snooping.      -o  --output           Flags for output formatting.          --predictable      Use resolvers incrementally. Useful for resolver tests.          --processes        Number of processes to be used for resolving. (Default: 1)      -q  --quiet            Quiet mode.          --rcvbuf           Size of the receive buffer in bytes.          --retry            Unacceptable DNS response codes. (Default: REFUSED)      -r  --resolvers        Text file containing DNS resolvers.          --root             Do not drop privileges when running as root. Not recommended.      -s  --hashmap-size     Number of concurrent lookups. (Default: 10000)          --sndbuf           Size of the send buffer in bytes.          --sticky           Do not switch the resolver when retrying.          --socket-count     Socket count per process. (Default: 1)      -t  --type             Record type to be resolved. (Default: A)          --verify-ip        Verify IP addresses of incoming replies.      -w  --outfile          Write to the specified output file instead of standard output.    Output flags:      S - simple text output      F - full text output      B - binary output      J - ndjson output

如果你需要查看更详细的操作选项以及帮助手册(尤其是输出格式),你可以使用“—help”命令。

工具使用样例

解析目标域名(位于lists的resolvers.txt中)的AAAA记录,并将结果存储至result.txt中:

$ ./bin/massdns -r lists/resolvers.txt -t AAAA domains.txt > results.txt

或者运行下列命令:

$ ./bin/massdns -r lists/resolvers.txt -t AAAA -w results.txt domains.txt

样本输出

默认配置下,MassDNS将会输出响应数据包,格式为文本格式,输出样例如下:

;; Server: 77.41.229.2:53    ;; Size: 93    ;; Unix time: 1513458347    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51298    ;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0    ;; QUESTION SECTION:    example.com. IN A    ;; ANSWER SECTION:    example.com. 45929 IN A 93.184.216.34    ;; AUTHORITY SECTION:    example.com. 24852 IN NS b.iana-servers.net.    example.com. 24852 IN NS a.iana-servers.net.    输出结果包含了解析的IP地址,可以帮助我们轻松对输出结果进行过滤。

数据解析

代码库中包含了一个名为resolvers.txt的文件,其中包含了一套有subbrute项目提供的已过滤的解析器子集。请注意,MassDNS的使用可能会提升系统/网络负载,因为需要加载大量解析器,具体将取决于你的ISP。

MassDNS的DNS解析实现目前还不完整,只支持最常见的一些记录类型。欢迎您通过代码贡献来帮助改变这种状况。

PTR记录

MassDNS包含了一个Python脚本,允许我们解析所有的IPv4 PTR记录:

$ ./scripts/ptr.py | ./bin/massdns -r lists/resolvers.txt -t PTR -w ptr.txt

请注意,in-addr.arpa中的标签会被反转。为了解析域名为1.2.3.4的地址,MassDNS将需要以“4.3.2.1.in-addr.arpa”的方式来作为输入查询名称。此时,Python脚本并不会按升序解析记录,这样可以避免在IP v4子网的域名服务器上突然出现的负载激增。

网络侦察&爆破子域名

注意:请不要随意使用该工具,适当调整-s参数以避免给权威域名服务器造成负载压力。

跟subbrute类似,MassDNS允许我们使用subbrute.py脚本来对子域名进行爆破枚举:

$ ./scripts/subbrute.py lists/names.txt example.com | ./bin/massdns -r lists/resolvers.txt -t A -o S -w results.txt

作为一种额外的网络侦察手段,ct.py脚本可以从crt.sh中抓取数据,并从证书透明日志中提取子域名:

$ ./scripts/ct.py example.com | ./bin/massdns -r lists/resolvers.txt -t A -o S -w results.txt

工具运行截图

安全性

MassDNS的运行不需要Root权限, 我们建议用户以非特权用户的身份运行MassDNS。除此之外,我们不建议大家使用“—root”参数来运行。另外,除了Master以外的其他分支不适用于生产环境。

项目地址

MassDNS:【点击底部阅读原文查看】

* 参考来源:blechschmidt,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

本文分享自微信公众号 - FreeBuf(freebuf),作者:Alpha_h4ck

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MBR勒索木马再度来袭:GoldenEye分析

    早在今年上半年,破坏力极强的修改MBR并加密MFT (Master File Table)的勒索木马Petya就引起了杀毒厂商的高度关注,然而在今年下半年360...

    FB客服
  • Townscript票务平台的任意账户劫持

    本文讲述了印度票务平台Townscript缺乏速率限制,以及密码重置缺陷导致的任意账户劫持漏洞。速率限制(Rate Limiting)仍是大多数Web应用不太重...

    FB客服
  • 2018最新款渗透测试框架 | Fsociety搞定各种姿势脚本

    Fsociety是一款最新的渗透测试框架,可以帮助各位兄弟在安全测试过程中拥有变身成黑客所需要的各种姿势脚本。 这个工具刚刚出现,目前大概分为以下9类,后续还会...

    FB客服
  • Selenium+java - 借助autolt完成上传文件操作

    上传文件是每个自动化测试同学会遇到,而且可以说是面试必考的问题,标准控件我们一般用sendkeys()就能完成上传,但是我们的测试网站的上传控件一般为自己封装的...

    软件测试君
  • JVM系列第8讲:JVM 垃圾回收机制

    在第 6 讲中我们说到 Java 虚拟机的内存结构,提到了这部分的规范其实是由《Java 虚拟机规范》指定的,每个 Java 虚拟机可能都有不同的实现。其实涉及...

    陈树义
  • Java虚拟机详解(三)------垃圾回收

      如果对C++这门语言熟悉的人,再来看Java,就会发现这两者对垃圾(内存)回收的策略有很大的不同。

    IT可乐
  • RIOT 与 ImageOptim - 两款 Win 和 Mac 上好用的免费图片优化无损压缩工具

    不管你是网站站长、自媒体、博客作者、摄影师、设计师,还是需要在网上分享传输图片/照片的人,都希望自己上传图片耗时更短、图片体积更小,别人浏览时又能更快下载显示出...

    Techeek
  • 人体运动预测的多任务非自回归模型(CS)

    人体运动预测是一个典型的序列到序列的问题,旨在根据给定的过去人体骨骼来预测未来的人体骨骼。因此,在探索不同的基于RNN的编码器-解码器体系结构上学术界已进行了大...

    Pamela_Lin
  • Session攻击(会话劫持+固定)与防御

      Session对于Web应用无疑是最重要的,也是最复杂的。对于web应用程序来说,加强安全性的第一条原则就是 – 不要信任来自客户端的数据,一定要进行数据验...

    那一叶随风
  • OpenCV中ORB特征提取与匹配

    OpenCV中ORB特征提取与匹配 FAST特征点定位 ORB - (Oriented Fast and Rotated BRIEF)算法是基于FAST特征检测...

    OpenCV学堂

扫码关注云+社区

领取腾讯云代金券