DNS 区域传送的伪造

Table of Contents

本文已发于《黑客X档案》2012.1期

1. 前言

许多人将黑站和渗透测试相提并论,其实这是不对的,概念和行为都是不一样的。其一,入侵就是往往他们只是拿下一个网站的 Webshell,或者单纯提权来拿到一台服务器,一个公司或者一个组织,网络规模中并不止一台服务器而已;其二,渗透测试是以入侵者的身份合法地对一个规模的网络各个能够穿透的地方进行攻击,所以拿下一台服务器并不算任务就完成了。所以渗透测试和黑站并不是一个概念。希望借此地向大家介绍一点大规模网络渗透的概念。

作为一个稍微有一点规模的机构,往往有多个网段,各个网段之间通过路由进行相互连接,然后再通过一个核心路由器连接至 ISP(Internet服务提供商)。组织内一般会有服务器,提供各种各样满足组织需求的服务,比如有 DHCP 服务器,为组织内每一个员工提供自动获得 IP 的功能,还有 DNS 服务器方便解析域名,以及文件共享服务器、邮件服务器、Web 服务器等等。

今天我主要讲的是关于 DNS 服务器上一个小小的问题。既然是一个有规模的组织,一般都会提供冗余的服务器,因为用户量比较多,如果服务器当机了,会造成一定时间的服务终止。往往在搭建网络的时候,这种情况是必须要考虑到,并且尽可能要避免的,所以往往又会有提供冗余服务的备份服务器,所谓冗余服务器,就是一主一辅的服务器,主服务器出了问题,就由辅服务器来继续提供服务,为了让用户察觉不到这点,两台服务器提供的数据会保持同步,也就是主服务器的数据会在一定时间内复制到辅服务器中。不少人认为这是多余的手段,咱这么来说吧,很多人有银行卡对吧,取钱的时候就是对银行的数据库操作,如果只有一台数据库服务器供来操作,那岂不是在中国这样的大人口国家中,几分钟就死机一次,死机一分钟岂不是要导致不可计数的人损失。

2. DNS 区域传送

最简单的,拿我所在的学校来说,机器数量已经过千,学校有专门的 DNS 服务器,但是一台 DNS 服务器明显是不够的,于是就有两台,DNS 主服务器是 Windows 2003 的操作系统,通过“区域传送”功能将 DNS 解析的记录复制到辅助服务器中来达到两台服务器同步的效果。

DNS 区域传送是用来将本服务器中的所有解析记录传输到备份的服务器上,在 Windows Server 的 DNS 管理器中,指定一个域名,点击右键,选择“属性”,并在“区域传送”选项卡中可以设置,区域传送设置选项如图1:

1.png

默认情况下是没有启用区域传送的,如果要实现传送功能,需要勾选“允许区域传送”。在区域传送中,有三个选项,分别是“到所有服务器”、“只有在‘名称服务器’选下卡中列出的服务器”和“只允许到下列服务器”。

我们可以把这三个选项当做是一种授权手段,后两项需要指定传送到哪一台服务器,也就是说,来自非指定服务器的 IP 地址的请求,主服务器不会理会,只有是指定服务器的地址发来的同步请求消息,主服务器才会将副本发送给备份服务器上。但是,许多管理员为了图个方便,或者说是自身掌握的知识量不够的原因,直接就选了“到所有服务器”。这样不管是哪一台服务器发来的请求,它都会将副本发送给它,导致的直接结果就是泄露了网络结构。

这好比取快递一样,以前快递员都会让你说出手机号或者出示证件来和包裹上的信息核对,匹配和才给你包裹。但现在快递员懒了,你过去报个名儿,我叫 XX,然后他就给你包裹,签字,走人。

整个过程就是这么回事儿,最主要关心的是 DNS 服务器中的记录,我们知道 DNS 是方便将人性化的域名解析成不人性化的 IP 地址,因为计算机之间的网络通信是靠 IP 地址来标示的,计算机还真不理解 DNS 命名代表的意义,所以不知道 shellcodes.org 是我开的网站。DNS 名称和 IP 是相对应的,DNS 域名是可以申请的,比如万网、美橙互联等地方申请,申请之后我们就可以使用这个域名来完成一些服务,比如邮件服务需要域名、域环境需要域名、Web 服务器需要域名等等。但最多的可能就是 Web 服务器了,比如我们学校有在线电影、学生管理系统、在线办公等等,学校网管为了方便在校人员访问,每一个 Web 应用都用了一个二级域名来方便记忆。问题就在于,搞定 DNS 中的记录,我们就得知了很多台 Web 服务器、邮件服务器之类的 IP 地址,对渗透来说,又多了一片天空。当然你可以选择扫描网段,光靠一个容纳几千台计算机的网段来一个个 IP 扫描是很费时间,并且动静也很大的。下面我们来看看在 Backtrack5 中是怎么搞定伪造区域传送的。

3. DNS 区域传送请求

在 Backtrack5 中,有一个工具叫 dnswalk,它就可以非常简单地完成任务。可以通过以下两种方法找到该工具:

1)、菜单方式,位于 Applications->Backtrack->Information Gathering->Network Analysis->DNS Analysis 中。 2)、命令行方式,cd /pentest/enumeration/dns,然后 ./dnswalk。

直接运行 ./dnswalk xxx.com. 即可,xxx.com 是一个参数,即指定的域名,注意没有 www 打头,并且有一个“.”(点号)结尾,比如某网站的域名是 www.xxx.com,就应该键入 xxx.com. 作为参数,如果该DNS服务器的配置出了上文中提及的问题,就会返回所有解析记录,其中 xxx.com 明显是我伪装了的假地址。返回的结果被修改后如下:

root@bt:/pentest/enumeration/dns/dnswalk# ./dnswalk xxx.com.
Checking xxx.com.
BAD: xxx.com. has only one authoritative nameserver
Getting zone transfer of xxx.com. from ns.xxx.com...done.
SOA=ns.xxx.com    contact=root.xxx.com
WARN: *.xxx.com A 182.1xx.x.x: no PTR record
WARN: //.xxx.com: invalid character(s) in name
WARN: dc1.xxx.com A 182.1xx.x.x: no PTR record
WARN: e2state.xxx.com A 182.1xx.x.x: no PTR record
WARN: ftp.xxx.com A 182.1xx.x.x: no PTR record
WARN: job.xxx.com A 182.1xx.x.x: no PTR record
WARN: lnt.xxx.com A 182.1xx.x.x: no PTR record
WARN: mail.xxx.com A 182.1xx.x.x: no PTR record
WARN: nc.xxx.com A 182.1xx.x.x: no PTR record
WARN: ns.xxx.com A 182.1xx.x.x: no PTR record
WARN: ns2.xxx.com A 182.1xx.x.x: no PTR record
WARN: sscmail.xxx.com A 182.1xx.x.x: no PTR record
WARN: www.st.xxx.com A 182.1xx.x.x: no PTR record
WARN: view.xxx.com A 182.1xx.x.x: no PTR record
WARN: vpn.xxx.com A 182.1xx.x.x: no PTR record
WARN: www.xxx.com A 182.1xx.x.x: no PTR record
WARN: www2.xxx.com A 182.1xx.x.x: no PTR record
WARN: xbt.xxx.com A 182.1xx.x.x: no PTR record
WARN: zf.xxx.com A 182.1xx.x.x: no PTR record
0 failures, 19 warnings, 1 errors.

上面的结果是来自一个真实的 DNS 返回来的,一眼就看出几个敏感的地方,mail.xxx.com、ftp.xxx.com 等等。

上面的结果给了我们渗透一个大型网络环境更多的下手地方。这里不能说大型网络就不会犯这种错误了,大多数的网管都没有这个意识,而且我见过的犯这种错误的网络环境还比较多。收集更多的信息对于渗透来说,无疑是无比重要的。写本文的目的以开阔各位的视野为主,吹牛为辅;同时也希望借此对网络管理员的提醒,以及加强他们的安全意识,安全并不是打补丁和安装防火墙就可以了事的。