具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种防御域名系统欺骗攻击的方法及装置,可以有效降低防御域名系统欺骗攻击的设备存储的数据量,节约防御域名系统欺骗攻击的设备的存储资源。
在本发明实施例提供的防御域名系统欺骗攻击的方法中,防御域名系统欺骗攻击的设备将域名系统请求包中的查询域名字段的字母按照预定的规则进行大小写转换;发送该域名系统请求包;接收域名系统应答包;获取该域名系统应答包中查询域名字段的字母大小写分布;在该域名系统应答包中查询域名字段的字母大小写分布符合该预定的规则时,将该域名系统应答包向目标域名系统客户端转发。
由于在实际应用环境中,DNS请求包的查询域名字段的字母通常都是全部大写或者全部小写,全部小写的几率要高于全部大写的几率,DNS服务器返回的DNS应答包中查询域名字段是和DNS请求包一致的,假如DNS请求包中的查询域名字段的字母被按照预定的规则进行大小写转换,则DNS服务器返回的DNS应答包查询域名字段的字母大小写分布也应当符合该预定的规则;因此,本发明实施例提供的防御域名系统欺骗攻击的方法将DNS请求包中的查询域名字段的字母按照预定的规则进行大小写转换,接收到DNS应答包后,获取接收到的DNS应答包中查询域名字段的字母大小写分布,只有符合该预定的规则的DNS应答包才转发到目标域名系统客户端,防止域名系统客户端收到黑客伪造的DNS应答包;
采用本发明实施例提供的防御域名系统欺骗攻击的方法后,防御域名系统欺骗攻击的设备不需要记录DNS请求包即可防御域名系统欺骗攻击,大大节省了防御域名系统欺骗攻击的设备的存储资源。
实际使用中,防御域名系统欺骗攻击的设备可以是防火墙或其他防御域名系统欺骗攻击的设备。
进一步,根据使用环境的不同,还包括:
在双向环境中,DNS请求包由DNS Client发出,防御域名系统欺骗攻击的设备接收到DNS Client发出的DNS请求包后,直接将DNS请求包中的查询域名字段的字母按照预定的规则进行大小写转换;在接收到DNS应答包后,将查询域名字段的字母大小写分布不符合预定的规则的DNS应答包全部丢弃;
在单向环境中,防御域名系统欺骗攻击的设备接收到DNS应答包,检查DNS应答包中查询域名字段的字母大小写分布后,在所述域名系统应答包中查询域名字段的字母大小写分布为全部大写或全部小写时,根据所述域名系统应答包构造相应域名系统请求包,将所述相应域名系统请求包中的查询域名字段的字母按照预定的规则进行大小写转换,并发送;在所述域名系统应答包中查询域名字段的字母大小写分布不符合所述预定的规则,且不为全部大写或全部小写时,丢弃所述域名系统应答包。
预定的规则根据实际情况可以有很多种,本发明实施例将以四种为例进行描述:
第一种、将该域名系统请求包中的查询域名字段的字母进行随机大小写转换;
在收到DNS应答包时,获取接收到的DNS应答包中查询域名字段的字母大小写分布,是否包含大写字母和小写字母,只要包含即为符合预定的规则;此方法实现最为简单。
第二种、根据预定的数值,对该域名系统请求包中的查询域名字段的字母进行大小写转换;
例如,以“1001101110”为预定的数值,为“1”表示转换为大写,为“0”表示转换为小写,在字母个数多过预定的数值位数时,可循环使用;忽略DNS域名部分具体编码,假设一个域名为“www.huaweisymantec.com”,这个域名中有20个字母,预定的数值有10位,字母个数多过预定的数值位数,则需要循环使用“1001101110”进行大小写转换,“www.huaweisymantec.com”将被转换为“Www.HUaWEIsYmaNTeC.COm”;防御域名系统欺骗攻击的设备收到DNS应答包后,获取DNS应答包中查询域名字段的大小写分布,如果其字母的大小写顺序符合“1001101110”的分布规律,则可以将该DNS应答包向目标域名系统客户端转发;
本实施例中,为“1”表示转换为大写,为“0”表示转换为小写,只是一种示例,根据实际情况,可采用的方法很多,例如为“0”表示转换为大写,为“1”表示转换为小写;
进一步,预定的数值可以是随机数,防御域名系统欺骗攻击的设备可以保存随机数,在收到DNS应答包,使用保存的随机数和DNS应答包中查询域名字段的字母大写小写分布进行比对;
进一步,预定的数值也可以是定时更换的随机数值。
第三种、使用该域名系统请求包中的源网际协议地址、或目的网际协议地址、或源端口、或目的端口、或域名系统标识、或域名系统问题域数据,进行哈希(Hash)计算,根据该哈希得到的数值,对该域名系统请求包中的查询域名字段的字母进行大小写转换。
DNS请求包中通常会包括:源网际协议地址、目的网际协议地址、源端口、目的端口、域名系统标识、域名系统问题域数据等关键字段,DNS服务器返回的DNS应答包中的这些关键字段是和发送出去的DNS请求包一致的,不会发生变化,因此,使用相同的哈希算法,对DNS应答包的这些关键字段进行哈希计算,得到的结果应当和对DNS请求包的这些关键字段进行哈希的结果一致,因此可以对DNS应答包的这些关键字段的任意一个进行哈希,使用获取的哈希结果对DNS请求包中的查询域名字段的字母进行大小写转换,具体转换的方法可参考上文的描述。
第四种、如果收到的域名系统应答包中查询域名字段的字母大小写分布为全部大写或全部小写,表明收到的DNS应答包是第一次收到,查询域名字段的字母尚未经过大小写转换,则转换时可以使用收到的域名系统应答包中的源网际协议地址、或目的网际协议地址、或源端口、或目的端口、或域名系统标识、或域名系统问题域数据、或回答字段进行哈希计算,根据所述哈希得到的数值,对所述域名系统请求包中的查询域名字段的字母进行大小写转换。
其中,在使用回答字段进行哈希计算时,可以避免目标域名系统客户端收到“回答字段”被替换的DNS应答包。
现以实例对本发明实施例提供的防御域名系统欺骗攻击的方法进行说明,在单向环境中,本发明提供的防御域名系统欺骗攻击的方法实施例一流程如图1所示:
101、防御域名系统欺骗攻击的设备接收域名系统应答包,域名系统应答包中包含有查询域名字段;
由于在单向环境中,域名系统客户端只收不发,因此防御域名系统欺骗攻击的设备不会收到来自域名系统客户端的DNS请求包;但是本系统也可以用于双向环境;
102、防御域名系统欺骗攻击的设备获取域名系统应答包中查询域名字段的字母大小写分布;
在该域名系统应答包中查询域名字段的字母大小写分布为全部大写或全部小写时,执行步骤103;
在该域名系统应答包中查询域名字段的字母大小写分布符合该预定的规则时,执行步骤104;
在该域名系统应答包中查询域名字段的字母大小写分布不符合该预定的规则,且不为全部大写或全部小写时,执行步骤105;
103、根据该域名系统应答包构造相应域名系统请求包,将该相应域名系统请求包中的查询域名字段的字母按照预定的规则进行大小写转换,并发送,执行步骤106;
由于本实施例适用于单向环境,在单向环境中,域名系统客户端只收不发,因此防御域名系统欺骗攻击的设备不会收到来自域名系统客户端的DNS请求包,DNS服务器直接发向DNS客户端的DNS应答包,由于不是应DNS请求包发送的DNS应答包,该DNS应答包中查询域名字段的字母尚未经过大小写转换,防御域名系统欺骗攻击的设备收到该DNS应答包后,会根据该DNS应答包构造一个DNS请求包,并对该DNS请求包的查询域名字段的字母进行大小写转换,之后防御域名系统欺骗攻击的设备将构造好的DNS请求包向DNS应答包的源地址发送,如果对方是一个合法的DNS服务器,就会应该DNS请求包的请求向DNS客户端第二次发送DNS应答包,第二次发送的DNS应答包内容与第一次发送的DNS应答包基本一致,只有查询域名字段的字母大小写分布与DNS请求包一致,是被转换过的;
因此防御域名系统欺骗攻击的设备需要判断收到的DNS应答包是否是第一次收到,查询域名字段的字母尚未经过大小写转换,如果是第一次收到,则该DNS应答包的查询域名字段的字母应当全为大写,或全为小写,因此在该域名系统应答包中查询域名字段的字母大小写分布为全部大写或全部小写时,可以判断收到了查询域名字段的字母尚未经过大小写转换的DNS应答包,需要转换为DNS请求包,并对查询域名字段的字母进行大小写转换;
DNS应答包的数据格式通常如表1所示:
表1、DNS应答包的数据格式
根据收到的DNS应答包构造DNS请求包时,资源记录数、授权资源记录数、额外资源记录数字段都置为0;回答、授权、额外信息字段全部丢弃;标志字段中根据标准规定进行相应变化;标识、问题数字段值不变;
然后根据收到的DNS应答包中的相关字段,例如该DNS应答包中的源网际协议地址、或目的网际协议地址、或源端口、或目的端口、或域名系统标识、或域名系统问题域数据、或回答字段进行哈希计算,根据哈希得到的数值,对所述域名系统请求包中的查询域名字段的字母进行大小写转换;
此处采用的哈希算法可任意设计,以计算量小、随机性强为好的算法为优选,哈希值位数(bit)32位或64位皆可,然后将DNS应答包中查询域名字段的所有字母按照哈希得到的数值依次进行大小写转换;
假设哈希得到的数值为H,如果H的第一比特为1,查询域名字段的第一个字母变为大写,否则为小写;如果H的第二比特为1,查询域名字段的第二个字母变为大写,否则为小写,直到查询域名字段的最后一个字母进行完转换。如果查询域名字段的字母个数多于H值位数,H值则可以循环使用;
将用户数据报协议(UDP,User Datagram Protocol)头的源端口号与目的端口号对换,将IP头的源IP与目的IP对换,并将正确的长度、校验和等字段填入对应位置;
此时完成DNS请求包的构造,将该DNS请求包向DNS应答包的源IP地址发送;
如果收到的DNS应答包是一个合法的DNS应答包,则DNS服务器在收到该DNS请求包后会返回一个和前一个DNS应答包关键字段一致,查询域名字段不变的DNS应答包,此时再用相关字段进行哈希计算,使用哈希结果进行验证则可以通过;如果收到的DNS应答包不是一个合法的DNS应答包,则其源IP地址大部分都指向无效地址,将无法返回新的DNS应答包;
在使用DNS应答包的回答字段进行哈希计算时,如果收到的DNS应答包是一个被替换过查询域名字段、回答字段的DNS应答包,其返回的DNS应答包将无法通过获取。
104、将该域名系统应答包向目标域名系统客户端转发,执行步骤106;
域名系统应答包中查询域名字段的字母大小写分布符合该预定的规则,则判断该域名系统应答包是安全的,可以向目标域名系统客户端转发。
105、丢弃该域名系统应答包;
域名系统应答包中查询域名字段的字母大小写分布不符合该预定的规则,且不为全部大写或全部小写时,说明该域名系统应答包不是第一次收到未经大小写转换的域名系统应答包,也不符合预定的规则,该域名系统应答包很有可能是被黑客替换过,或黑客发过来的伪装域名系统应答包,因此应当丢弃处理。
106、等待接收新的域名系统应答包。
流程结束。
采用本发明提供的防御域名系统欺骗攻击的方法实施例一后,防御域名系统欺骗攻击的设备不需要记录DNS请求包即可防御域名系统欺骗攻击,大大节省了防御域名系统欺骗攻击的设备的存储资源。
在双向环境中,本发明提供的防御域名系统欺骗攻击的方法实施例二流程如图2所示:
201、防御域名系统欺骗攻击的设备接收域名系统请求包,域名系统请求包中包含有查询域名字段;
防御域名系统欺骗攻击的设备接收来自域名系统客户端的域名系统请求包;
202、将该相应域名系统请求包中的查询域名字段的字母按照预定的规则进行大小写转换,继续发送;
转换方式可参考上文描述,在此不再重复;
203、防御域名系统欺骗攻击的设备接收域名系统应答包;
204、防御域名系统欺骗攻击的设备判断域名系统应答包中查询域名字段的字母大小写分布是否符合该预定的规则;是,则执行步骤205;否,则执行步骤206;
205、将该域名系统应答包向目标域名系统客户端转发;
域名系统应答包中查询域名字段的字母大小写分布符合该预定的规则,则判断该域名系统应答包是安全的,可以向目标域名系统客户端转发。
流程结束。
206、丢弃该域名系统应答包;
由于在双向环境中每一个DNS应答包都是DNS服务器应一个DNS请求包请求的回复,因此可以认为不符合预定的规则的都是非法DNS应答包,应当丢弃处理;
流程结束。
采用本发明提供的防御域名系统欺骗攻击的方法实施例二后,防御域名系统欺骗攻击的设备不需要记录DNS请求包即可防御域名系统欺骗攻击,大大节省了防御域名系统欺骗攻击的设备的存储资源。
本发明实施例提供的防御域名系统欺骗攻击的设备结构如图3所示,包括:
大小写转换单元301,用于将域名系统请求包中的查询域名字段的字母按照预定的规则进行大小写转换;
发送单元302,用于发送所述大小写转换单元301转换过的域名系统请求包;
第一接收单元303,用于接收域名系统应答包;
获取单元304,用于获取所述第一接收单元303接收到的域名系统应答包中查询域名字段的字母大小写分布;
转发单元305,用于在所述获取单元304获取域名系统应答包中查询域名字段的字母大小写分布符合所述预定的规则时,将所述域名系统应答包向目标域名系统客户端转发。
进一步,在双向环境中,还包括:
第二接收单元,用于在所述大小写转换单元将域名系统请求包中的查询域名字段的字母按照预定的规则进行大小写转换之前,接收域名系统客户端发送的域名系统请求包。
第一丢弃单元,用于在所述第一接收单元接收到的域名系统应答包中查询域名字段的字母大小写分布不符合所述预定的规则时,丢弃所述域名系统应答包。
进一步,在单向环境中,还包括:
请求包构造单元,用于在所述获取单元获取所述域名系统应答包中查询域名字段的字母大小写分布之后,所述第一接收单元接收到的域名系统应答包中查询域名字段的字母大小写分布为全部大写或全部小写时,根据所述域名系统应答包构造相应域名系统请求包,控制所述大小写转换单元将所述相应域名系统请求包中的查询域名字段的字母按照预定的规则进行大小写转换,并发送。
第二丢弃单元,用于在所述获取单元获取所述域名系统应答包中查询域名字段的字母大小写分布之后,所述第一接收单元接收到的域名系统应答包中查询域名字段的字母大小写分布不符合所述预定的规则,且不为全部大写或全部小写时,丢弃所述域名系统应答包。
本发明实施例提供的防御域名系统欺骗攻击的设备的具体使用方式可参考上文对本发明实施例提供的防御域名系统欺骗攻击的方法的描述;
采用本发明实施例提供的防御域名系统欺骗攻击的设备后,防御域名系统欺骗攻击的设备不需要记录DNS请求包即可防御域名系统欺骗攻击,大大节省了防御域名系统欺骗攻击的设备的存储资源。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括如下步骤:
一种防御域名系统欺骗攻击的方法,包括:
将域名系统请求包中的查询域名字段的字母按照预定的规则进行大小写转换;
发送所述域名系统请求包;
接收域名系统应答包;
获取所述域名系统应答包中查询域名字段的字母大小写分布;
在所述域名系统应答包中查询域名字段的字母大小写分布符合所述预定的规则时,将所述域名系统应答包向目标域名系统客户端转发。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种防御域名系统欺骗攻击的方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。