DNSX:一款功能强大的多用途DNS工具包 (Go语言开发)

Wesley13
• 阅读 415

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

www.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:一款功能强大的多用途DNS工具包 (Go语言开发)

项目地址

DNSX:【GitHub传送门

点赞
收藏
评论区
推荐文章
秃头王路飞 秃头王路飞
4个月前
webpack5手撸vue2脚手架
webpack5手撸vue相信工作个12年的小伙伴们在面试的时候多多少少怕被问到关于webpack方面的知识,本菜鸟最近闲来无事,就尝试了手撸了下vue2的脚手架,第一次发帖实在是没有经验,望海涵。languageJavaScript"name":"vuecliversion2","version":"1.0.0","desc
浅梦一笑 浅梦一笑
4个月前
初学 Python 需要安装哪些软件?超级实用,小白必看!
编程这个东西是真的奇妙。对于懂得的人来说,会觉得这个工具是多么的好用、有趣,而对于小白来说,就如同大山一样。其实这个都可以理解,大家都是这样过来的。那么接下来就说一下python相关的东西吧,并说一下我对编程的理解。本人也是小白一名,如有不对的地方,还请各位大神指出01名词解释:如果在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环
技术小男生 技术小男生
4个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
光头强的博客 光头强的博客
4个月前
Java面向对象试题
1、请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
刚刚好 刚刚好
4个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
小森森 小森森
4个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本欢迎添加左边的微信一起探讨!项目地址:(https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n)\2.Bug修复更新日历2.情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意),\\和注意
晴空闲云 晴空闲云
4个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
3个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_28799839 helloworld_28799839
4个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue