第一章–kali渗透-3.信息收集工具之DNS信息收集—DIG

DIG有很多方面和NSLUUKUP很相似 但是它的功能远远强度NSLOOKUP 它的查询方式是递归查询

基本使用方式:

dig baidu.com any @8.8.8.8 

他这个和nslookup唯一不同的是指定解析类型不需要输入type或者q参数 指定DNS服务只需要在前面加上@即可 但是他的功能比nslookup要强大的多 下面是例子

nslookup解析

root@kali:~# nslookup
> baidu.com q=any 8.8.8.8
Server:		192.168.58.2
Address:	192.168.58.2#53
Non-authoritative answer:
Name:	baidu.com
Address: 220.181.38.148
Name:	baidu.com
Address: 39.156.69.79
> 

DIG解析

root@kali:~# dig baidu.com any @8.8.8.8
; <<>> DiG 9.11.5-P4-3-Debian <<>> baidu.com any @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15097
;; flags: qr rd ra; QUERY: 1, ANSWER: 15, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;baidu.com.			IN	ANY
;; ANSWER SECTION:
baidu.com.		7074	IN	SOA	dns.baidu.com. sa.baidu.com. 2012141737 300 300 2592000 7200
baidu.com.		21474	IN	NS	ns3.baidu.com.
baidu.com.		21474	IN	NS	dns.baidu.com.
baidu.com.		21474	IN	NS	ns7.baidu.com.
baidu.com.		21474	IN	NS	ns4.baidu.com.
baidu.com.		21474	IN	NS	ns2.baidu.com.
baidu.com.		474	IN	A	220.181.38.148
baidu.com.		474	IN	A	39.156.69.79
baidu.com.		7074	IN	MX	20 mx50.baidu.com.
baidu.com.		7074	IN	MX	10 mx.maillb.baidu.com.
baidu.com.		7074	IN	MX	15 mx.n.shifen.com.
baidu.com.		7074	IN	MX	20 mx1.baidu.com.
baidu.com.		7074	IN	MX	20 jpmx.baidu.com.
baidu.com.		7074	IN	TXT	"v=spf1 include:spf1.baidu.com include:spf2.baidu.com include:spf3.baidu.com a mx ptr -all"
baidu.com.		7074	IN	TXT	"google-site-verification=GHb98-6msqyx_qqjGl5eRatD3QTHyVB6-xQ3gJB5UwM"
;; Query time: 42 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 一 11月 04 03:17:00 EST 2019
;; MSG SIZE  rcvd: 498

上面例子中可以看出DIG解析要比nslooku更强大 需要注意的是nslookup可以进入命令操作符 但是dig不可以进入 当然如果不指定DNS服务的话他会和nslookup一样 使用本地DNS服务进行解析查询

注意:在真实渗透测试环境中 建议使用不同的DNS服务依次进行查询 因为这样往往会有不同的结果

在DIG中也有很多参数 例如下方

dig +noall baidu.com any   

这条命令中出现了一个+noall参数 这个参数的作用的让查询的所有结果都不输出 但是这个并不是我们通常的目的 我们通常会在加一条参数 +answer 这个参数的作用是将目标解析结果输出出来 并不输出多余内容 例子如下

命令:

dig +noall +answer baidu.com any 

环境操作

root@kali:~# dig +noall +answer baidu.com any
baidu.com.		0	IN	TXT	"google-site-verification=GHb98-6msqyx_qqjGl5eRatD3QTHyVB6-xQ3gJB5UwM"
baidu.com.		0	IN	TXT	"v=spf1 include:spf1.baidu.com include:spf2.baidu.com include:spf3.baidu.com a mx ptr -all"
baidu.com.		0	IN	MX	10 mx.maillb.baidu.com.
baidu.com.		0	IN	MX	20 jpmx.baidu.com.
baidu.com.		0	IN	MX	20 mx1.baidu.com.
baidu.com.		0	IN	MX	15 mx.n.shifen.com.
baidu.com.		0	IN	MX	20 mx50.baidu.com.
baidu.com.		0	IN	SOA	dns.baidu.com. sa.baidu.com. 2012141737 300 300 2592000 7200
baidu.com.		0	IN	A	220.181.38.148
baidu.com.		0	IN	A	39.156.69.79
baidu.com.		0	IN	NS	ns2.baidu.com.
baidu.com.		0	IN	NS	dns.baidu.com.
baidu.com.		0	IN	NS	ns7.baidu.com.
baidu.com.		0	IN	NS	ns3.baidu.com.
baidu.com.		0	IN	NS	ns4.baidu.com.

在上方我们可以看得出 加了answer以后它只输出解析内容 并不会输出执行过程 因为渗透测试人员往往只关心结果

如果我们想要在上方查询中提取结果的话可以通过awk进行筛选 这里在说一下awk命令 awk是输出重定向 它可以重定向到文件等等 后期真实环境可以编写shell脚本自动化处理 想要知道更多参数请百度 下方是命令例子:

dig +noall +answer baidu.com any | awk  '{print $5}'

root@kali:~# dig +noall +answer baidu.com any | awk '{print $5}'
"v=spf1
"google-site-verification=GHb98-6msqyx_qqjGl5eRatD3QTHyVB6-xQ3gJB5UwM"
20
20
15
10
20
dns.baidu.com.
220.181.38.148
39.156.69.79
ns4.baidu.com.
ns7.baidu.com.
ns3.baidu.com.
ns2.baidu.com.
dns.baidu.com.

在上方可以对比一下结果 它输出的是第五列的结果 当然 还有一些例如20 15 10等等 不知道是什么结果 可以在命令awk上面在多加两条内容 例子如下

dig +noall +answer baidu.com any | awk ‘{print $4 $5 $6}’     

这样分别就把第四 五 六列都列出来了 当然这样直接列出来不利于阅读 可以在上方在加上两个参数“\t” 例子如下:

dig +noall +answer baidu.com any | awk '{print $4 "\t" $5 "\t" $6}'   

这样会比较利于阅读 输出结果如下:

root@kali:~# dig +noall +answer baidu.com any | awk '{print $4"\t"$5"\t" $6}'
MX	20	mx1.baidu.com.
MX	15	mx.n.shifen.com.
MX	20	jpmx.baidu.com.
MX	10	mx.maillb.baidu.com.
MX	20	mx50.baidu.com.
TXT	"google-site-verification=GHb98-6msqyx_qqjGl5eRatD3QTHyVB6-xQ3gJB5UwM"	
TXT	"v=spf1	include:spf1.baidu.com
SOA	dns.baidu.com.	sa.baidu.com.
A	220.181.38.148	
A	39.156.69.79	
NS	ns3.baidu.com.	
NS	ns7.baidu.com.	
NS	dns.baidu.com.	
NS	ns4.baidu.com.	
NS	ns2.baidu.com.	

当然DIG的功能不止于此 它还可以反向查询 什么是反向查询 意思就是我们拥有一个IP地址 可以将这个IP地址解析的域名反向查询出来

反向域名查询:

命令:

dig -x  61.135.165.120 

dig在进行反查的时候需要加-x参数 在你动手时解析一个域名 查到他的IP地址在进行范查询 在nslookup的时候就已经介绍了 反查的时候查的是PTR记录(反垃圾邮件) 查询结果如下:

root@kali:~# dig -x 61.135.165.120
; <<>> DiG 9.11.5-P4-3-Debian <<>> -x 61.135.165.120
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63484
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; MBZ: 0x0005, udp: 4096
;; QUESTION SECTION:
;120.165.135.61.in-addr.arpa.	IN	PTR
;; ANSWER SECTION:
120.165.135.61.in-addr.arpa. 5	IN	PTR	mx23.baidu.com.
;; Query time: 39 msec
;; SERVER: 192.168.58.2#53(192.168.58.2)
;; WHEN: 一 11月 04 04:04:00 EST 2019
;; MSG SIZE  rcvd: 84

上面可以看得到 查询到的是mx23.baidu.com的域名地址 如果你看上方的查询结果比较差乱 你只想看结果的时候 需要加上方提到的参数 +noall +answer即可

下面介绍的是DIG的强大之处它和nslookup的区别

DNS bind版本信息查询

dig可以查询dns bind版本信息 然而nslookup不可以查询 如果在linux平台下或者Windows平台下做DNS服务器(一般是linux平台下)一般使用的都是bind软件包 哪怕是其他的软件包 也是基于bind软件包进行二次开发的 大部分都是用的bind 包括我们互联网大部分平台下用的都是bind

我们可以通过bind来查询一个域名服务器DNS使用的bind版本。(下方字体较多已加标点符号)

我们为什么要查询bind,因为当我们知道一个域名以后,只能在有限的情况下查询DNS服务器地址, 但是一个域名下,有很多很多地址,很多很多记录,例如我们查询baidu.com的时候,查询到的只是baidu.com域名下的A记录NX记录Cname记录等,只是针对这个域名的记录查询的,然而这个域名下有www.baidu.com,有news.baidu.com,有 mali.baidu.com等FQDN名称,我们查询时并不会直接查询他这个域名下所有的DNS服务,哪怕我们加了any,查询的也只是baidu.com这个域名下的记录, 他并不会查询www.baidu.com的记录,所以我们需要注意的是,any参数查询的也只是当前这一个域名下的所有记录,而不是百度所有的记录都查询到,这个是不可以的,一个完美的结果就是进行查询时,将所有的DNS注册解析记录都给查询到,例如mali.xxx.com,www.xxx.com,nwes.xxx.com等,都给查询出来DNS记录,然后再把这些FQDN(全限定域名,同时带有主机名和域名的名称,例如:主机名是server,域名是sql.com,那么FQDN就是server.sql.com。)对应的IP地址都给解析出来,这样的话就是一个最完美的结果,然而直接用dig或者nslookup查询,你并不知道他的域名前方是否有www或者其他的字母,并不知道他的主机一共注册了多少个域名,所以在最早的时候,一些安全研究人员就提议,如果把它的域名服务器或者DNS服务器攻破了,拿到他的DNS记录数据库,就知道他所有的数据了,这是一个变相的思路,也就是这个思路DIG可以辅助我们实现这个目标,通过DIG虽然不能查询到它所有的主机名,但是通过DIG可以查到DNS服务器使用的版本信息,如果发现bind是使用的老版本而且是存在漏洞的版本,那么就可以利用老版本的bind漏洞来下载所有的DNS记录数据库的数据,全都破解出来,所有通过DIG来查bind版本信息,目的就是为了查询DNS服务器的版本信息,查看是否有漏洞可以利用

命令:

dig +noall +answer  txt chaos VERSION.BIND 153.dnsv4.com   

这条命令的VERSION是版本bind是指定查询版本信息 chaos类级别class类 bind对应的class类就是chaos类 txt是chaos中的信息类型 具体查询的就是bind的version

注意:执行上方命令如果出现 connection timed out; no servers could be reached 错误信息 将DNS配置文件添加一条或者两条新的DNS 例如谷歌的8.8.8.8或者IBM的9.9.9.9即可解决 如果在系统内添加后还是不行 在虚拟机网络设置里面设置DNS

下面是运行结果:

root@kali:~# dig +noall +answer txt chaos VERSION.BIND 153.dnsv4.com
VERSION.BIND.		5	CH	TXT  "dnsmasq-2.71"

能看的出来 目标服务器使用的bind版本是dnsmasq-2.71,然后可以查询是否是最新的版本,如果不是最新的版本可以去官方查询他的最新版本,里面有一些描述文件,这些文件描述的是修复了哪些版本的一些漏洞情况,然后根据这个版本情况可以判断这个版本还存在哪些漏洞情况对他进行一些研究,当发现有漏洞时可以在进行研究漏洞的危害大小

但是需要注意的是,网络上有很多大型厂商会启动保护DNS,不允许查询bind版本信息,然而bind信息对黑客是很感兴趣的,对待普通用户没有用,不过根据安全实践可以得出结论,如果自己搭建一个DNS服务器或者运维一个服务器,不要将自己的DNS服务器版本泄露出来,因为很容易被黑客入侵造成损失

高级DIG命令—DNS追踪

dig还可以对DNS进行追踪原理是逐个访问域名服务器,可以验证是否是目标的域名服务器

命令:

dig +trace www.sina.com 

执行结果如下

root@kali:~# dig +trace www.sina.com
; <<>> DiG 9.11.5-P4-3-Debian <<>> +trace www.sina.com
;; global options: +cmd
.			5	IN	NS	f.root-servers.net.
.			5	IN	NS	k.root-servers.net.
.			5	IN	NS	g.root-servers.net.
.			5	IN	NS	b.root-servers.net.
.			5	IN	NS	c.root-servers.net.
.			5	IN	NS	e.root-servers.net.
.			5	IN	NS	j.root-servers.net.
.			5	IN	NS	a.root-servers.net.
.			5	IN	NS	m.root-servers.net.
.			5	IN	NS	d.root-servers.net.
.			5	IN	NS	h.root-servers.net.
.			5	IN	NS	l.root-servers.net.
.			5	IN	NS	i.root-servers.net.
;; Received 228 bytes from 192.168.189.2#53(192.168.189.2) in 13 ms
com.			172800	IN	NS	k.gtld-servers.net.
com.			172800	IN	NS	a.gtld-servers.net.
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	j.gtld-servers.net.
com.			172800	IN	NS	g.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	m.gtld-servers.net.
com.			172800	IN	NS	i.gtld-servers.net.
com.			172800	IN	NS	c.gtld-servers.net.
com.			172800	IN	NS	b.gtld-servers.net.
com.			172800	IN	NS	l.gtld-servers.net.
com.			172800	IN	NS	e.gtld-servers.net.
com.			86400	IN	DS	30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.			86400	IN	RRSIG	DS 8 1 86400 20191117050000 20191104040000 22545 . paOPeSOExQhCrltWV5BdzYJZ3IYgPvRLQD5zsqsQei/+5myXrBnI8KJi j/INmlyIcw1RI1jWyTpBAigMZaV7f+/CP4HnJE/7AB18m9dlScuIBjvL 6+SIu6ZNFsfsJ8i+mbxHmTb10IHOe13nOIcrlDzCiDDO+hHWka9/0vQH kCZRcAOCTsEm2ctkj9ps9Auupvyqk9HblzdbEXxh8yRXh9LCURQs+Kqd tOF137Y5oe3JVBhaWV5FjPQsRd7QuIiwbUdH3KPrj3Soi1L73yiJQgrD 4hFfVhpAQt2wM8kwoFKbpbPyls9p22i1QWuJJmWfqwv8k2WK+XNl4bnL InBiIA==
;; Received 1200 bytes from 192.203.230.10#53(e.root-servers.net) in 266 ms
sina.com.		172800	IN	NS	ns1.sina.com.cn.
sina.com.		172800	IN	NS	ns2.sina.com.cn.
sina.com.		172800	IN	NS	ns3.sina.com.cn.
sina.com.		172800	IN	NS	ns1.sina.com.
sina.com.		172800	IN	NS	ns2.sina.com.
sina.com.		172800	IN	NS	ns4.sina.com.
sina.com.		172800	IN	NS	ns3.sina.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20191111054902 20191104043902 12163 com. IPljNLvJUQK32CDrTmP6SphTpn9Lry8DIh1AhVAH9OP1Vzzb4cNAt+lp 4VM/ryvT9uav9AQDi6h7csbN6duoBp4ErG2PmvN48C4SAyD8EvYyVJUy PAUmMrxdr6w/y7dctSvuQfbCy/ufFfzmufs9sTBvJr76AAcBgRlgFQXi korMyiVWJK5lRYT/2Cb6i3SJCJk5fMy3PDdEwYFrbeyEsA==
TGAG8VMC6NS5VVK68CIGRJ6Q414N2KB2.com. 86400 IN NSEC3 1 1 0 - TGAIACKVOLH827E60D3R92KMGUFO3MJF NS DS RRSIG
TGAG8VMC6NS5VVK68CIGRJ6Q414N2KB2.com. 86400 IN RRSIG NSEC3 8 2 86400 20191110062730 20191103041730 12163 com. j5FAgqhJoxceXjnry4mZ3LhXpecImuk9cnYE5Fh4SPkRXgdaEXLezwbi VKKtr57msheZy1kfu7R1rF7dXR2SVBPgI5tDt9Rf8k0jLRRgY86fVjC2 8879s6g0nH9qaEk1s6BBw7zIBdTllg+Nn/tKv+RbdxSrXVPVMDAJOIo5 1tfwrQpUmY7NCSd9+r4kiZ3RzX4I6eoRgBG4GJF5/lWcOQ==
;; Received 791 bytes from 192.52.178.30#53(k.gtld-servers.net) in 184 ms
www.sina.com.		60	IN	CNAME	us.sina.com.cn.
us.sina.com.cn.		60	IN	CNAME	spool.grid.sinaedge.com.
;; Received 103 bytes from 180.149.138.199#53(ns3.sina.com) in 15 ms

可以看得出来,他解析的流程是现充点(.)根域服务器进行解析,然后随机挑选了一个IP地址(192.168.189.2)进行再次解析到点com(.com)域名服务器,然后在从com.域名服务器在进行随机挑选一个IP地址(192.203.230.10)解析到sina.com服务器,也是随机挑选一个IP地址(192.52.178.30)解析查询哪个DNS解析的是www.sina.com域名 最后解析www.sina.com这个域名后是一个Cname记录 然后他在逐个的解析Cname,最后解析为一个A记录的IP地址,通过上方例子中可以看出他的查询方式是一种迭代查询方式,它的架构是分布式层级化的方式,不是同时访问所有DNS,还有本地DNS地址不可以解析域名服务器,如果解析域名服务器那么本地电脑访问互联网,只能访问解析的域名服务器,不能访问其他域名服务器地址

域名DNS追踪可以防止DNS域名服务器被劫持,当域名服务器被劫持时可以进行这样的一个反追踪进行对比就可以看出,是哪一台服务器被劫持了,然后做出相应的处理防止自己访问互联网时数据被窃取

自己可以抓包对比一下递归查询和迭代查询的过程,抓包工具使用第三章的信息收集工具,这里就不给出例子了,自己实践吧

声明一下,笔记中的任何内容都要自己亲手操作,我列出的东西只是例子,只有自己实践动脑袋了才是真的掌握了

转载请出名出处!!!

https://juejin.im/post/5e33a75ce51d45028e4679b6

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论