DNSX
DNSX是一款功能强大的多用途DNS工具包,该工具运行速度非常快,它不仅允许研究人员使用retryabledns库来运行多个探测器,而且还允许我们通过传递用户提供的解析器列表来执行多个DNS查询请求。
DNSX基于dnsprobe开发,但是DNSX还提供了一些新的功能,并修复了大量漏洞,为更好的用户体验而量身定做。除此之外,DNSX还提供了大量标记来帮助研究人员更好地分析、提取、控制和打印处理结果。当然了,我们还提供了DNS通配符过滤功能来帮助研究人员将结果转移至shuffledns。
功能介绍
- 提供了简单实用的接口来查询DNS记录;
- 支持A、AAAA、CNAME、PTR、NS、MX、TXT、SOA;
- 自动处理通配符子域;
- 经过优化,易于使用;
- Stdin和stdout支持与其他工具一起工作;
工具下载
广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/projectdiscovery/dnsx.git
工具安装
源码安装
该工具的安装非常简单,我们可以直接在该项目的【Realeses页面】下载对应平台架构的预构建源码。下载完成后,使用tar命令提取代码,然后将其移动至$PATH目录下:
Download latest binary from https://github.com/projectdiscovery/dnsx/releases
▶ tar -xvf dnsx-linux-amd64.tar
▶ mv dnsx-linux-amd64 /usr/local/bin/dnsx
▶ dnsx -h
Go安装
DNSX要求本地设备安装好Go v1.14+环境,然后运行下列命令获取项目即可:
▶ GO111MODULE=on go get -u -v github.com/projectdiscovery/dnsx/cmd/dnsx
GitHub安装
git clone https://github.com/projectdiscovery/dnsx.git; cd dnsx/cmd/dnsx; go build; mv dnsx /usr/local/bin/; dnsx -version
工具使用
dnsx -h
上述命令将显示该工具的帮助信息,下面给出的是该工具支持的所有功能选项:
参数
描述
样例
a
Query A 记录
dnsx -a
aaaa
Query AAAA 记录
dnsx -aaaa
cname
Query CNAME 记录
dnsx -cname
ns
Query NS 记录
dnsx -ns
ptr
Query PTR 记录
dnsx -ptr
txt
Query TXT 记录
dnsx -txt
mx
Query MX 记录
dnsx -mx
soa
Query SOA 记录
dnsx -soa
raw
类似于dig
dnsx -raw
l
包含子域名/主机列表的文件
dnsx -l list.txt
json
JSON 输出
dnsx -json
r
文件或逗号分隔解析器
dnsx -r 1.1.1.1
rl
DNS请求限制/秒
dnsx -rl 100
resp
显示响应数据
dnsx -cname -resp
resp-only
仅显示响应数据
dnsx -cname resp-only
retry
DNS条目数据
dnsx -retry 1
silent
输出中仅显示结果
dnsx -silent
o
将输出写入文件(可选)
dnsx -o output.txt
t
要生成的并发线程
dnsx -t 250
verbose
Verbose 输出
dnsx -verbose
version
显示DNSX版本
dnsx -version
wd
用于筛选的通配符域名
dnsx -wd example.com
wt
通配符筛选器阈值
dnsx -wt 5
工具运行
DNSX可以用来对列表中的子域名进行过滤,以过滤出无效记录,比如说:
▶ subfinder -silent -d hackerone.com | dnsx
_ __ __
__| | _ __ ___ \ \/ /
/ _' || '_ \ / __| \ /
| (_| || | | |\__ \ / \
\__,_||_| |_||___//_/\_\ v1.0
projectdiscovery.io
[WRN] Use with caution. You are responsible for your actions
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
a.ns.hackerone.com
api.hackerone.com
docs.hackerone.com
mta-sts.managed.hackerone.com
mta-sts.hackerone.com
resources.hackerone.com
b.ns.hackerone.com
mta-sts.forwarding.hackerone.com
events.hackerone.com
support.hackerone.com
DNSX可以用来从给定子域名列表中提取出A记录,比如说:
▶ subfinder -silent -d hackerone.com | dnsx -silent -a -resp
a.ns.hackerone.com [162.159.0.31]
b.ns.hackerone.com [162.159.1.31]
mta-sts.hackerone.com [185.199.108.153]
events.hackerone.com [208.100.11.134]
mta-sts.managed.hackerone.com [185.199.108.153]
resources.hackerone.com [52.60.160.16]
resources.hackerone.com [52.60.165.183]
www.hackerone.com [104.16.100.52]
support.hackerone.com [104.16.53.111]
DNSX可以用来从给定子域名列表中提取出CNAME记录,比如说:
▶ subfinder -silent -d hackerone.com | dnsx -silent -cname -resp
support.hackerone.com [hackerone.zendesk.com]
resources.hackerone.com [read.uberflip.com]
mta-sts.hackerone.com [hacker0x01.github.io]
mta-sts.forwarding.hackerone.com [hacker0x01.github.io]
events.hackerone.com [whitelabel.bigmarker.com]
DNSX可以从给定网络范围提取子域名,这里需要使用PTR查询,比如说:
mapcidr -cidr 173.0.84.0/24 -silent | dnsx -silent -resp-only -ptr
cors.api.paypal.com
trinityadminauth.paypal.com
cld-edge-origin-api.paypal.com
appmanagement.paypal.com
svcs.paypal.com
trinitypie-serv.paypal.com
ppn.paypal.com
pointofsale-new.paypal.com
pointofsale.paypal.com
slc-a-origin-pointofsale.paypal.com
fpdbs.paypal.com
通配符过滤
DNSX有一个特殊的功能,就是它能够处理基于DNS的多级通配符,并且只需要很少的DNS请求。有的时候,如果解析所有的子域名,这将导致结果中存在大量的无效数据。而DNSX解决这个问题时,它将跟踪有多少子域指向一个IP地址,如果子域的数量增加到某个阈值以上,它将迭代检查该IP地址所有主机级别上的通配符。
dnsx -l airbnb-subs.txt -wd airbnb.com -o output.txt
工具使用截图
项目地址
DNSX:【GitHub传送门】