DNS域传送漏洞(一)

本文主要介绍:

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命令介绍结束。读者朋友可反复练习以熟悉它的用法。

《DNS域传送漏洞(一)》上有14条评论

  1. 我第一次看到lijiejei是在gayhub,我以为是李姐姐,这女生学安全这么强的吗?今天看到这里,我才发现我可能想错了 哈哈

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注