分享
 
 
 

BIND安全弱点及防范

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

BIND (Berkeley Internet Name Domain)软件包是一种域名解析服务(DNS)软件,是由BSDI(Berkeley Software Design,Inc。)开发的。现在Internet上存在的DNS服务器绝大多数是用BIND来架设的,也就是说,一提到DNS,你一定会马上想到BIND。正是由于BIND使用的广泛性,使得它成为众多攻击者感兴趣的目标。

目前大家比较常用的是BIND8.x版本,因此我们主要针对BIND8.x进行介绍。

DNS

首先我们简单介绍一下域名解析服务(DNS)。关键的一点是:当前我们都采用以名称(如www。netstd。com)作为Internet的定位体系,而不是用特殊的IP地址。而DNS就提供了计算机名与计算机地址的映射关系。举个例子,计算机名dns.netstd.com有三个IP地址:198.49.45.10、192.20.239.132和202.96.186.65。虽然多个IP地址能映射到一台单机,但最终可能每个IP地址映射到一台不同的计算机上。引起多对多、计算机名到地址的映射现象的原因是DNS允许系统管理员平衡计算机上的网络负荷。或许在整个网络上每天有成千上万人访问dns.netstd.com,因此它使用由多IP地址的多机为一个计算机名服务就显得很有意义。

弱点

BIND有两个重要特性:1.BIND会对所有已经经过查询的结果进行缓冲(Cache)

2. DNS使用随机的ID,但它总会在下一次询问时令ID+1。

正是由于以上特点,使得攻击者能进行下列攻击:

a. DNS欺骗(DNS Spoofing)

b. DoS (Denial of Service)

c. 偷取服务(Theft of Services)

d. 反向查询缓冲区超时(Inverse Query Buffer Overrun)

也许你对上述这些攻击方式有些迷惘,其实这些方式和一般直接攻击一样,仅仅是利用了DNS协议的漏洞,而且有可能具有很大的普遍性,造成较大的破坏。一个严峻的事实摆在我们面前:截止到2000年6月,Internet上所有DNS服务器中有50%还在运行存在漏洞的BIND。造成什么后果呢?在一次典型的对BIND的攻击中,入侵者删除了系统日志,安装了能获得管理权限的工具,接着编译并安装网络扫描工具,用这些工具在网络中大批量扫描运行有漏洞BIND的系统。几分钟之内他们利用已占领系统攻击了域外的成百上千台系统,又占领了很多其他系统。如此反复,其后果不堪设想!因此我们很需要加紧防范措施,特别是针对DNS Spoofing。

DNS Spoofing是指一台处于Internet中的计算机能为自己伪造一个IP地址。也就是说它能隐藏自身的IP地址,但它的作用何止这些。熟悉网络的人都知道,当客户向一台服务器请求服务时,服务器方一般都会根据客户的IP反向解析出IP对应的域名。这种反向域名解析是一个查DNS (Domain Name Service)的过程。如果客户的IP对应有域名,那么DNS查询会返回其域名。服务器端得到这一计算机名后会将其记录下来并传递给应用程序。

攻击实例

前面我们已经提到使用BIND的DNS服务器收到一条合法的DNS应答信息时它会接受这一返回包中的所有信息,并存入CACHE。举一个例子:在192。168。1。221的用户要TELNET到192.168.1.21上,192.168.1.21使用的DNS为202.96.199.133。三次握手后,192.168.1.21会向202.96.199.133发一个PTR类型的DNS查询(由IP查主机名):

192.168.1.21 -> 202.96.199.133 [Query]

NQY: 1 NAN: 0 NNS: 0 NAD: 0

QY: 221.1.168.192.in-addr.arpa PTR

而202.96.199.133中没有关于用户IP对应域名的信息,于是它首先根据DNS协议及其配置查找出192.168.1.221的授权DNS服务器--192.168.1.1。然后向其发出查询包:

202.96.199.133 -> 192.168.1.1 [Query]

NQY: 1 NAN: 0 NNS: 0 NAD: 0

QY: 221.1.168.192.in-addr.arpa PTR

注意这里省略了Iterative与Recursive两种方式的区别,一般的DNS的默认设置为

Iterative,Recursive为可选项。(详细情况请参见RFC1034)

192.168.1.1收到查询信息后就可以返回192.168.1.221对应的域名:

192.168.1.1 -> 202.96.199.133 [Answer]

NQY: 1 NAN: 2 NNS: 1 NAD: 1

QY: 221.1.168.192.in-addr.arpa PTR

AN: 221.1.168.192.in-addr.arpa PTR yourname.host.com

AN: yourname.host.com A 192.168.1.221

NS: 221.1.168.192.in-addr.arpa NS ns.host.com

AD: ns.host.com A 192.168.1.1

返回的包中给出了192.168.1.221对应的域名为yourname.host.com,并指出yourname.host.com对应的IP为192.168.1.221(请注意这两个对应的是不同的概念!)。如果这个返回包能由我们给出,我们的目的就达到了。那么我们怎么做呢?如果局域网内有DNS服务器,那么可以通过监听、响应的方法实现DNS欺骗。具体步骤是:先嗅探传到局域网的DNS查询包,然后代替本网段的DNS服务器给出应答信息。但实际在实现时却碰到了问题,本网段的DNS服务器也会同时给出应答信息,而我们构造的包与它给出的包会有冲突,通常是我们的慢,这样的DNS欺骗注定会失败!为了获得比较好的DNS欺骗效果,我们就要利用在文章开头讲到的DNS实现的的第二个特点:当DNS服务器发查询包时,它在包内有一Query ID,应答信息只有Query ID及IP都吻合时才能被DNS服务器所接受。而这一ID每次加一,所以只要通过第一次向将要欺骗的DNS 服务器发一个查询包并监听其ID值,随后再发一查询,紧接着马上发送我们设计好的应答包,包内的Query ID为预测的Query ID值(我们可以指定一个范围,比如从Previous_ID+20到Previous_ID+200)。

接上例,如192.168.1.221的用户要欺骗192.168.1.21,他可以对202.96.199.133进行欺骗: 11.11.11.11 -> 202.96.199.133 [Query]

NQY: 1 NAN: 0 NNS: 0 NAD: 0

QY: aaaaa.host.com A

由于host.com的域名由192.168.1.1控制,202.96.199.133向192.168.1.1发查询包:

202.96.199.133 -> 192.168.1.1 [Query]

NQY: 1 NAN: 0 NNS: 0 NAD: 0 QID: 2345

QY: aaaaa.host.com A

192.168.1.221的用户可以监听到该包,得到QID: 1111。然后再向202.96.199.133发第二次查询:

11.11.11.11 -> 202.96.199.133[Query]

NQY: 1 NAN: 0 NNS: 0 NAD: 0

QY: bbbbb.host.com A

紧接着发带有预测QID的应答包:

192.168.1.1-> 202.96.199.133 [Answer]

NQY: 1 NAN: 0 NNS: 0 NAD: 0 QID: 2346

QY: 221.1.168.192.in-addr.arpa PTR

AN: 221.1.168.192.in-addr.arpa PTR as.your.wish(任何域名)

as.your.wish就是用户自己指定的域名。但请注意发这个包时应该用192.168.1.1这一IP地址。以上我们基本实现了对DNS服务器的欺骗。

注意限制

但上述过程的实现在实际操作中有一些限制 ,例如:对这些攻击,也有一定的限制。

首先,攻击者不能替换缓存中已经存在的记录。比如说,如果在202.96.199.133这个DNS服务器上已经有一条www.dot.com的CNAME记录,那么攻击者试图替换为www.dotdot.com将不会成功。但是在DNS服务器中一些记录可以累加,比如A记录,如果在DNS的缓存中已经存在一条www.dot.com的A记录为11.11.11.11,而攻击者却欺骗DNS服务器声称www.dot.com的A记录为22.22.22.22,那么www.dot.com将会有两个A记录,客户端查询时会随机返回其中一个,这样就有50%的成功机率。其次,DNS服务器还存在缓存(Cache)刷新时间问题,如果www.dot.com的TTL为7200,那么DNS服务器会把www.dot.com的信息缓存7200秒(两个小时)。如果攻击者放入一条TLL为259200的A记录,那么这条记录将会在缓存中保存三天时间,过了默认的两天后,这个DNS服务器就会到处散发攻击者假造的欺骗记录。

解决方案

那么我们能采取怎样的防范措施呢?可以有以下几点:

1. 安装最新版本的BIND:虽然最新版的软件不能完全保证您的域名服务器的安全,但是它能把受攻击的可能性降到最低。(而旧版本软件中存在大量广为人知的漏洞)。最好选择BIND8.2.2-p5或以上版本。

2. 限制BIND8.x中的Zone Transfers:

-在BIND8 中使用allow-transfer字句:

options{

allow-transfer{202.96.236.112};};};

-定制一个Zone:

zone "netstd.com"{

type master;

file "db.netstd.com";

allow-transfer{202.96.236.112;};

};

注意: 还应限制备用域名服务器的Zone Transfer,而不仅仅是主域名服务器。因为从备用域名服务器转换一个Zone和从主域名服务器上做一样简单。

3. 使用签名处理程序(TSIG)来加密验证和校验区的信息(注意在使用TSIG时需要域名服务器之间的时间同步)。

4. 限制动态升级:。动态升级很有用也很危险:一个经授权的升级者能删除和增加Zone中的记录。

5.为防止DNS欺骗:。-尽可能关闭递归。

-限制域名服务器作出响应的地址。

-限制域名服务器作出响应的递归请求地址。

-关闭Glue Fetching。

-限制发出请求的地址。

-限制递归请求。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有