本文主要介绍:
1)什么是DNS?
2)使用Nslookup命令探测DNS域传送漏洞
3)使用nmap扫描DNS域传送漏洞
4)使用dig命令检测
5)使用python + Dig批量扫描漏洞主机
6)使用python实现AXFR查询
1)什么是DNS?
DNS(Domain Name System,域名管理系统)是万维网WWW的重要基础。它建立在一个分布式数据库基础之上,在这个数据库里,保存了IP地址和域名的相互映射关系。
正因为DNS的存在,我们才不需要记住大量无规则的IP地址, 而只需要知道对方计算机的名称,就可以访问对应服务。比如,笔者的博客是www.lijiejie.com,当用户在浏览器地址栏输入上述域名,浏览器就将向DNS服务器发送查询,得到目标主机的IP地址,再与对应的主机建立一个HTTP连接,请求网页。相对于记住106.187.34.156这个IP地址,域名www.lijiejie.com自然更有意义、更加清晰明了。
DNS服务器使用的TCP/UDP端口号是53。
最常用的DNS记录有以下几类:
A记录 IP地址记录,记录一个域名对应的IP地址 AAAA记录 IPv6 地址记录,记录一个域名对应的IPv6地址 CNAME记录 别名记录,记录一个主机的别名 MX记录 电子邮件交换记录,记录一个邮件域名对应的IP地址,比如my[at]lijiejie.com 后面的部分lijiejie.com,邮件服务器对应的IP地址 NS记录 域名服务器记录 ,记录该域名由哪台域名服务器解析 PTR记录 反向记录,也即从IP地址到域名的一条记录 TXT记录 记录域名的相关文本信息
作为重要的互联网基础设施,难免成为黑客的重点攻击目标,服务的稳定性尤为重要。DNS服务器分为:主服务器、备份服务器和缓存服务器。在主备服务器之间同步数据库,需要使用“DNS域传送”。域传送是指后备服务器从主服务器拷贝数据,并用得到的数据更新自身数据库。
若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录。造成整个网络的拓扑结构泄露给潜在的攻击者,包括一些安全性较低的内部主机,如测试服务器。凭借这份网络蓝图,攻击者可以节省很少的扫描时间。
大的互联网厂商通常将内部网络与外部互联网隔离开,一个重要的手段是使用Private DNS。如果内部DNS泄露,将造成极大的安全风险。风险控制不当甚至造成整个内部网络沦陷。
2) nslookup命令
笔者首先介绍DNS查询工具nslookup命令的使用。仅使用该命令,就可完成DNS域传送的测试。在windows命令提示符中输入“nslookup ?”,得到如下简略的用法说明:
d:\nslookup ? 用法: nslookup [-opt ...] # 使用默认服务器的交互模式 nslookup [-opt ...] - server # 使用 "server" 的交互模式 nslookup [-opt ...] host # 仅查找使用默认服务器的 "host" nslookup [-opt ...] host server # 仅查找使用 "server" 的 "host"
Nslookup命令以两种方式运行:非交互式和交互式。本 文第一次提到“交互式”的概念,简单说明:交互式系统是指执行过程中允许用户输入数据和命令的系统。而非交互式系统,是指一旦开始运行,不需要人干预就可以自行结束的系统。因此,nslookup以非交互式方式运行,就是指运行后自行结束。而交互式,是指开始运行后,会要求使用者进一步输入数据和命令。
非交互式下命令的语法是是:
nslookup [-option] [hostname] [server] |
Option是可选的参数,不带参数执行nslookup命令,可进入交互式shell,在shell中输入help,可查阅参数说明,如下例所示:
D:\>nslookup 默认服务器: public1.114dns.com Address: 114.114.114.114 > help 命令: (标识符以大写表示,[] 表示可选) set OPTION - 设置选项 type=X - 设置查询类型(如 A、AAAA、A+AAAA、ANY、CNAME、MX NS、PTR、SOA 和 SRV) ls [opt] DOMAIN [> FILE] - 列出 DOMAIN 中的地址(可选: 输出到文件 FILE) -a - 列出规范名称和别名 -d - 列出所有记录 -t TYPE - 列出给定 RFC 记录类型(例如 A、CNAME、MX、NS 和 PTR 等) 的记录 exit - 退出程序
上面是笔者精简后的输出,注意两点:1) 使用type参数可以设置记录类型。 2) 使用ls命令,可以列出一个域下面所有的域名。
Hostname选项指定需要查询的主机名,比如www.lijiejie.com。Server选项指定DNS服务器。为了查询结果的准确,可选用几个常用的公共DNS服务器:8.8.8.8是Google提供的DNS服务,114.114.114.144和114.114.115.115是114DNS提供的免费DNS服务。
下面的例子通过114.114.114.114查询域名www.lijiejie.com的IP地址:
d:\>nslookup www.lijiejie.com 114.114.114.114 服务器: public1.114dns.com Address: 114.114.114.114 非权威应答: 名称: www.lijiejie.com Address: 106.187.34.156
可以看到,www.lijiejie.com对应的IP主机是106.187.34.156。
下面的例子查询jd.com使用的DNS服务器名称:
D:\>nslookup -type=ns jd.com 服务器: public1.114dns.com Address: 114.114.114.114 非权威应答: jd.com nameserver = ns1.jdcache.com jd.com nameserver = ns4.jdcache.com jd.com nameserver = ns1.jd.com jd.com nameserver = ns2.jd.com jd.com nameserver = ns3.jd.com jd.com nameserver = ns2.jdcache.com jd.com nameserver = ns4.jd.com jd.com nameserver = ns3.jdcache.com
上述结果显示,京东商城的外部主DNS服务器有6个。下面的例子展示如何查询taobao.com的邮件交换记录:
D:\>nslookup -type=mx taobao.com 服务器: public1.114dns.com Address: 114.114.114.114 非权威应答: taobao.com MX preference = 10, mail exchanger = mx1.alibaba-inc.com
从上表可看出,淘宝的邮件交换服务器是mx1.alibaba-inc.com。
下例反向查询一个IP地址对应的域名:
D:\>nslookup -type=ptr 8.8.8.8 服务器: public1.114dns.com Address: 114.114.114.114 非权威应答: 8.8.8.8.in-addr.arpa name = google-public-dns-a.google.com
可以得到8.8.8.8对应的域名是google-public-dns-a.google.com。
笔者继续介绍在交互式shell中发现一个DNS服务器的域传送漏洞的过程:
D:\>nslookup 默认服务器: public1.114dns.com Address: 114.114.114.114 > server dns.nwpu.edu.cn 默认服务器: dns.nwpu.edu.cn Address: 202.117.80.2 > ls nwpu.edu.cn [dns.nwpu.edu.cn] nwpu.edu.cn. NS server = dns.nwpu.edu.cn nwpu.edu.cn. NS server = dns1.nwpu.edu.cn nwpu.edu.cn. NS server = dns2.nwpu.edu.cn nwpu.edu.cn. NS server = dns3.nwpu.edu.cn * A 222.24.192.99 (... 省略大量的记录) npunecas NS server = webcomp.npunecas.nwpu.edu.cn webcomp.npunecas A 202.117.85.146 nwpu03 A 202.117.80.4 nwpudb2 A 222.24.210.149 poj A 192.168.0.248 portal A 61.150.43.10 portal1 A 222.24.192.31 portal2 A 222.24.192.32 rei A 202.117.85.10 saip NS server = saipserver.saip.nwpu.edu.cn saipserver.saip A 202.117.85.72 test A 222.24.192.29 yzb A 202.117.85.3 zsb A 202.117.87.130 zygx A 202.117.80.9
操作基本的步骤是:
1) 输入nslookup命令进入交互式shell
2) Server 命令参数设定查询将要使用的DNS服务器
3) Ls命令列出某个域中的所有域名
4) Exit命令退出程序
攻击者能获取的敏感主要包括:
1)网络的拓扑结构,服务器集中的IP地址段
2)数据库服务器的IP地址,例如上述nwpudb2.nwpu.edu.cn
3)测试服务器的IP地址,例如test.nwpu.edu.cn
4)VPN服务器地址泄露
5)其他敏感服务器
以上示例了存在漏洞的DNS服务器,若是不存在漏洞的主机,则可能提示错误Query Refused:
D:\>nslookup 默认服务器: public1.114dns.com Address: 114.114.114.114 > server ns.pku.edu.cn 默认服务器: ns.pku.edu.cn Address: 202.112.7.13 > ls pku.edu.cn [ns.pku.edu.cn] *** 无法列出域 pku.edu.cn: Query refused DNS 服务器拒绝将区域 pku.edu.cn 传送到您的计算机。如果这不正确, 请检查 IP 地址 202.112.7.13 的 DNS 服务器上 pku.edu.cn 的 区域传送安全设置。
以上是在交互式shell中测试DNS服务器是否存在域传送漏洞。为了能够非交互式运行,笔者编写以下批处理文件ls.bat:
echo ls %1 | nslookup – %2 |
为了测试dns.nwpu.edu.cn服务器,可以执行ls.bat nwpu.edu.cn dns.nwpu.edu.cn。 批处理中:
1) %1代表第一个参数,也即nwpu.edu.cn
2) %2代表第二个参数,即dns.nwpu.edu.cn
3) Echo是回声命令,原文输出传入的参数内容
4) “|”是管道符号,作用是把前一个命令执行的结果传给后一个命令。因此:执行ls.bat nwpu.edu.cn dns.nwpu.edu.cn,等价于执行echo ls nwpu.edu.cn | nslookup – dns.nwpu.edu.cn。
5) nslookup -dns.nwpu.edu.cn是指定DNS服务器为dns.nwpu.edu.cn
到此,nslookup命令介绍结束。读者朋友可反复练习以熟悉它的用法。
nice
whY are you so Diao
Ge, the King!
Whoever edits and pulehsibs these articles really knows what they’re doing.
nice~~~
mac 下的ls 不管用哦。。。
mac 下的ls 不管用哦。。。
nice~~这个写的最明白了
好多Pingback。
咦,怎么到这里了,应该是“DNS域传送漏洞(二)”的评论。
我第一次看到lijiejei是在gayhub,我以为是李姐姐,这女生学安全这么强的吗?今天看到这里,我才发现我可能想错了 哈哈