基于静态及动态特征的恶意域名检测系统

1.前言

互联网的产生是应用需求驱动的结果,强大的需求牵引其高速发展,在这一过程中,对于各种技术、协议的设计者,首要目标是解决面前的问题,在急切的需求面前投入太多精力去考虑其他问题似乎是奢侈的,正因如此,解决应用问题与制造安全问题的交织出现在网络安全领域屡见不鲜,随着众多网络技术的普遍采用,大量安全问题也随之而来。

域名系统及其扩展是一个典型的事例,它的设计初衷是提升互联网的易用性,其在一定程度上促成了互联网的快速发展;以其为基础的内容分发网络技术,是一种广泛应用的负载均衡技术;泛域名解析技术,是Web2.0发展过程中的底层技术之一;在复杂网络架构中,域名系统也被采用以提升网络的鲁棒性和可用性。然而,以上这些技术并非只有正常的使用方式,结合其他恶意网络技术,它们往往可以制造出令人头疼的网络安全问题。本文尝试从大数据的角度出发来考虑与此相关的网络安全问题,基于已知域名的某些特征,建立分类模型,通过数据来预测数据,从而发现那些被恶意使用的域名。

2.技术背景

DNS及其配套技术,具有使ip与域名解耦的功能,以及灵活配置的特点,DNS已成为互联网不可或缺的技术,是极大多数用户与应用系统的互联网入口,近年来随着Round-robin DNS、CDN(Content Distribution Networks,内容分发网络)等技术逐渐普及,DNS技术在负载均衡、高可靠性网络架构设计等方面获得了广泛应用。

但随之而来的是,DNS技术的利用也受到了黑客的关注,目前DNS已经成为黑客的保护屏障,由于这道屏障建立成本很低,并且效果较好,当前流形的僵尸网络往往都会利用DNS技术将C&C服务器进行隐藏,其中常用技术主要包括Domain Flux和IP Fast Flux(又称为FFSN,Fast Flux Service Networks)两类。

带有恶意域名系统的僵尸网络整体,包括多台C&C服务器(或称为mothership),多台C&C代理服务器,以及多台被控主机(或称肉鸡)。一个恶意域名,指向多台C&C代理服务器,当一个肉鸡获取命令时,通过该域名获取到一个C&C代理服务器的ip。当某个C&C代理服务器被破坏时,某个肉鸡被“升级”为C&C代理服务器,填补空缺位置。在整个过程中,mothership的ip都没有暴露,其ip只有C&C代理服务器知道,通过监听肉鸡和C&C代理服务器间的通信,无法得知,因此保护了实际的C&C服务器,这是FFSN的运作原理,这种网络结构具备极高的可用性。

FFSN DNS的通常在间断请求过程中,体现出一些动态特征,这些特性可做为鉴别FFSN DNS的依据,比如NXDomain返回频率,ip切换频率,TTL时间长度等。值得注意的是,这些特征并非非常明显,大量情况会使得恶意DNS与正常DNS的动态特征十分相似,如:一些国际性大站,往往采用了CDN技术;一些关闭的站点;无效的P2P资源服务器等。

另一种恶意域名相关的技术是Domain Flux,该技术一般利用泛域名解析等技术,将多个FQDN(Full Qualified Domain Name,完整域名)域名对应到一个恶意ip,该恶意ip对目标主机的危害行为被逻辑地分散到多个FQDN,或者结合FFSN技术,每个恶意代理被控主机一个FQDN,使得针对FQDN域名的统计值失效。另一种可能的作用是,结合FFSN技术,当FFSN的C&C服务器暴露时,黑客会建立新的C&C服务器,没死掉的agent基于DGA(Dynamic Generate Algorithm,动态生成算法)技术主动连入新的C&C服务器,重新接管僵尸网络。

本文所述系统旨在解决上述恶意域名问题,其主要的途径为,将用于Domain Flux检测的静态特征,与用于Fast Flux Service Networks检测的动态特征相结合,配合常规的黑白名单过滤方法,构建以黑白名单检测、针对Domain Flux的静态特征分类器、针对FFSN的动态特征分类器为主体,具备黑白名单自维护、分类模型自学习的恶意域名识别系统。

3.具体实施方式

本节介绍本文所述系统的具体实施方式,首先笼统介绍系统框架,及系统的工作流程做一说明,然后对其中重要环节再做阐述,它们包括针对Domain Flux的静态特征分类器,针对FFSN的动态特征分类器。

3.1 系统框架及其工作流程

本文所述的静态及动态特征相结合的恶意域名识别系统,用于解决单一网络(下文称为防护目标网络)相关的恶意DNS识别问题,也就说发生在防护目标网络内的DNS查询情况将被捕捉,经系统的三层分析后给出是否是恶意域名的判断,相关结果提供给用户作为决策参考。其系统框架如下图1所示:

恶意域名检测1图1 系统框架

如上图1所示,整个系统由数据采集层、静态检测层、动态检测层、用户接口层构成。各层依职能划分,其基本职能为:

数据采集层:负责对防护目标网络的DNS请求监听,产生诊断目标(域名);同时负责动态特征原始数据的采集(通过DNS查询来采集,采集间隔与次数由用户指定,经验参数为针对一个诊断目标,每3小时采集一次,共采集24次,即3天后完成动态特征原始数据的采集);

静态检测层:负责对检测目标进行黑、白名单过滤;若黑、白名单未命中,则提取其静态特征,利用静态特征分类器来进行检测,这一分类器主要针对Domain Flux问题,对于高可信度的诊断结果(采用支持向量机算法,并利用相适应的概率估计算法),直接给出判别结论,对于其他诊断结果,判别为‘可疑域名’,其留待后续程序处理。

动态检测层:负责判断可疑域名是否为恶意域名,在数据采集层提供的动态特征原始数据基础上,建立动态特征,并利用动态特征分类器来进行检测,这一分类器主要针对FFSN问题,,对于高可信度的诊断结果(采用支持向量机算法,并利用相适应的概率估计算法),直接给出判别结论,并将恶意域名加入黑名单,或将正常域名加入白名单;对于可信度低的诊断结果,只给出诊断结果,不对黑白名单做出修改。

用户接口层:负责向外部系统提供软件接口,这些外部接口包括用户界面、IDS(入侵检测系统)、IPS(入侵防护系统)、Information Securitry Management Systems(信息安全管理系统)等。

系统共包括三个主要的工作流程,它们是检测流程,静态特征分类器的训练建模流程与动态特征分类器的训练建模流程。后面两个流程,周期性启动(周期由用户指定,依经验可设定为30天)训练样本集构造、特征提取、支持向量机(Support Vector Machine, SVM)建模流程,用以更新相关的分类器模型。这里主要说明检测流程,其可由下图2表述。

恶意域名检测2878

图2 检测流程

检测流程由防护目标网络中的DNS查询捕捉事件触发,一个诊断目标首先经过白名单过滤器、黑名单过滤器,若命中则立即给出结论并结束流程,否则向后进行;诊断目标的静态特征将被提取,之后使用静态特征分类器来做出判断,对于高可信度的判断结果,直接给出结论,结束流程,对于其他判断结果,判别为‘可疑域名’进入后续流程;诊断目标的动态特征将被提取,之后使用动态特征分类器来做出判断,对于高可信度的判断结果,给出结论并将诊断目标放入相应的黑或白名单中,对于其他判断结果,只给出结论,不修改黑白名单。

整个检测流程,最多会进行四次判断,即白名单过滤器、黑名单过滤器、静态特征分类器与动态特征分类器。

3.2 黑白名单数据库的初始化

在本文所述系统中,黑白名单数据库是自维护的,在系统运行过程中,经动态特征分类器诊断的高可信结果将导入到黑白名单数据库,以提升检测效率,但在系统正式启动前,黑白名单数据库需要初始化,加入常见的白名单与确定的黑名单。

白名单初始化的方式——取Alexa排名靠前的域名,该列表可以从top.chinaz.com、www.alexa.cn等网站通过爬虫获取。

黑名单初始化的方式——有两种途径,其一、从挂马举报平台通过爬虫获取被挂过木马的域名,如www.anva.org.cn/virusAddress/listBlack,untroubled.org/spam/等;其二,利用公开的垃圾邮件数据库,提取其中的域名。挂马和垃圾邮件是僵尸网络的主要用途,因此其中涵盖大量恶意域名。

3.3 静态特征分类器

静态特征分类器主要针对于Domain Flux技术相关的恶意域名进行实时检测,它的检测原理基于这样的前提假设,良好的(或正常的)域名构造方式是有一定统计规律的,如长度不宜过长,即使有数字但也不会太多,数字与字母交替的情况一般不超过两次,这些构造规律本质上是保证域名可以被人们轻易记住,印象深刻,有益于网站的推广,值得注意的是,这种域名往往很早被抢注甚至炒作,因此注册成本很高;相反,僵尸网络利用域名的目的并不是让人去记住,而是用于计算机间的连接,结合注册成本的考虑,根本不会考虑上述构造规律,因此以这些规律出发,可以有效建立区分恶意/正常域名的统计特征。

本系统涉及以下静态特征:

1)域名长度——

FQDN的总长度,如www.163.com的长度为11。

2)数字比例

其中为FQDN中数字的数量。

3)数字与字母切换比例——DigitCharRatio

相邻两个字符称为一个“相邻字符对”,若一个相邻字符对中只存在一个数字,则为一个“数字与字母切换”,该特征为数字与字母切换总数与相邻字符对总数的比例。

4)站点名与主域名长度比例

其中为FQDN中站点名称的长度,为主域名的长度。如:www.163.com的站点名称为www,,主域名为163,。

5)连接符的数量——ConnectcharNum

FQDN中连接符“-”的个数。

6)最大词长度

MaxWordLength为以小数点“.”为分隔符,将FQDN分割为多个字符串,其中最长的字符串的长度。

7)国家顶级域名的类型——CountryCode

如“cn”,”jp”等。

8)国际顶级域名的类型——InterCode

如“com”,”net”等。

9)二级国际顶级域名的类型——Inter2Code

如“edu”,“gov”等。

如图1所示,静态特征分类器的训练样本来自现有黑白名单,针对每一个FQDN可以直接计算上述静态特征,从而形成训练样本,样本依黑白名单,标注为两类——正常域名、恶意域名。针对这些样本,利用SVM算法建立分类器模型,该分类器模型除判别类别外,还支持输出概率。

3.4 动态特征分类器

动态特征分类器主要针对于FFSN技术相关的恶意域名进行实时检测,它的检测原理基于这样的前提假设,正常的域名一般是分为两类,其一、一个域名就对应一个ip,TTL(域名缓存时长)一般较大,这是最常见的情况;其二、一个域名对应一组固定的ip,这些ip基本是固定的,且物理位置基本固定,这种情况一般发生在访问量很大的站点,这些站点利用CDN技术,实现负载均衡。

对于其他情况则很可能是僵尸网络利用恶意域名在维护网络整体的通信的表象。例如,由于僵尸网络的脆弱性,C&C代理主机经常性失效,此时一个恶意域名对应的ip就需要被替换为新的C&C代理主机,因此ip经常性变换、地理位置分布变化等就是一些明显的现象。基于这些现象,可以建立一下统计特征,对于同一诊断目标(域名),采集N次(经验值20次,间隔3小时)DNS请求返回的结果:

1)IP信息熵

该动态特征构造的基本思路是,把DNS结果中的IP分为4个字节,形成一个字节数组,以字节的频度为基础建立熵,用来评估返回ip的稳定性。

形式化定义:

恶意域名检测4878,其中恶意域名检测4923为第i次DNS请求的返回的第k个IP,IPSet为返回的IP集合。

恶意域名检测4999 ,为算子从IP中以“.”分割,提取4个字节(此处假设IPv4,IPv6的处理方式与此类似)。

恶意域名检测5088其中P(B)表示一个字节B的概率,B∈[0,254]  ,N为总共返回结果的次数。|·|算子表示集合的基,即元素个数,注意即使恶意域名检测5302 ,它们只是值相同,但仍代表两个不同的元素。

恶意域名检测5366

从而上面给出IP信息熵的定义。

2)IP一致度

该动态特征构造的基本思路是,IP去重总数*请求次数/IP不去重总数,正常的域名应该为1.0,而恶意域名往往大于1。

沿用1)中假设,

恶意域名检测5497

恶意域名检测5541,只表示它们值相同,但仍为两个元素。

3)IP变化次数

该动态特征构造的基本思路是,统计每次DNS查询返回的一组IP集合发生变化的频度,若相邻两次查询的返回结果(两个IP集合),完全相同,则视为无变化,否则计数加1。

4)IP国家分布变化次数

该动态特征构造的基本思路是,计算每一次DNS查询结果的IP所属国家的比率,若相邻两次查询的IP所属国家的比率完全相同,则视为无变化,否则计数加1。

Country={中国,美国,日本,……法国}

IP国家分布变化次数的形式化定义为恶意域名检测5835,其中R(c)为国家c的占比,

恶意域名检测5929 恶意域名检测5972 为算子,提取恶意域名检测6019所属国家。

5)查询失败的频度

该动态特征构造的基本思路是,当没有成功查询到域名时,DNS服务器会返回NxDomain状态,该特征为此状态出现的次数。

6)TTL_MIN

每一个DNS查询结果都附带一个TTL属性,告知缓存服务器建议在TTL秒后更新该域名的缓存记录,最小TTL指N次查询返回结果中最小的TTL值。

7)TTL_MAX

最大TTL指N次查询返回结果中最大的TTL值。

8)TTL_AVG

TTL均值指N次查询返回结果中的TTL值的平均值。

9)TTL_STD

TTL标准差指N次查询返回结果中的TTL值的标准差。

10)别名个数

该动态特征构造的基本思路是,一个域名有时会设置别名,正常域名的别名应该是固定的,该特征是N次查询返回结果中出现的别名个数。

11)权威DNS服务器主域名一致率

该动态特征构造的基本思路是,一般来讲,一个域名的所有权威服务器的主域域名是一致的,主域域名的数量远远小于权威服务器FQDN的数量,该特征是权威服务器的主域域名的最高频度与权威服务器的主域域名总频度的比率。

与静态特征分类器的训练过程类似,仍然从黑白名单中获取训练样本,有所不同的是,这里需要依静态特征对黑名单进行过滤,这是因为黑名单的标注来源于互联网的一般用户,其标注可靠性较低,在建立模型前有必要提高标注精度,而静态特征可有效区分恶意与正常域名。

过滤的规则由人工进行设定,经验地,可采用:

数字比例<0.5 or数字与字母切换比例>0.3 or域名长度>10

样本形成后,通过DNS的定时查询,完成上述动态特征的原始数据获取及其统计值,最后利用SVM算法完成动态特征分类器的建模。

4.原型系统

相应的原型系统依照上述原理所设计,系统原型采用久经考验的高并发服务框架Twisted作为底层框架,前端展现采用了Zend Framework,数据持久化采用了Mongodb,系统运行于Ubuntu12,系统语言采用python,因此系统具备跨操作系统的可移植性。

4.1 系统功能

1)实时查询

除了直接将判断结果展示给用户外,本系统最大的意义在于,向其他安全产品提供恶意域名相关的数据信息,以支持这些安全产品达到更好的检测效果,这些外延设备、软件系统可以通过http请求的方式,获得相关数据,例如curl命令:

curl http://192.168.55.100:8080/?IP=192.168.55.11&DNS=www.163.com

该命令以Json格式返回,对应域名的动/静态恶意域名概率(如果建立动态特征的原始数据量不足,则相应值为None),其结果如下:

{‘filter’: ‘Norm’, ‘ip’: ‘192.168.55.11’, ‘static’: {u’NormPossibility’: u’0.838253′, u’timepoint’: 1398411842, u’MaliPossibility’: u’0.161747′}, ‘timepoint’: 1400728820, ‘dns’: ‘www.163.com’}

其中,Filter项表示黑白名单过滤结果,’Norm’与’Mali’分别表示命中白与黑名单,static项表示基于静态特征的判断结果,dynamic项表示基于动态特征的判断结果。

相应的,下文介绍的界面展示的信息,基本上都可以通过http协议来获取,如:

curl http://192.168.55.100:8081/? DNS=www.163.com&detail=1

上面的命令可以获得相应域名的基本信息,包括动态特征、静/动态模型的判断结果,以及本地ip的历史请求信息,与历史解析信息。

2)域名信息查询

域名信息包括该域名的动态恶意域名概率、静态恶意域名概率,解析情况的历史,在什么时间被解析为哪些ip地址,这些ip的物理位置,有哪些本地ip对其进行过查询,以及频度比例,原型界面如下:

恶意域名检测3

图3 域名信息查询

这里提供了系统主要的判断依据,包括一些动态统计特征,如TTL、IP集合变化均值等,静态特征没有显示,但通过http协议也可以请求到Json格式的动/静态特征数据,它们是概率生成的基础;同时该界面还提供了,解析ip的物理位置,其是动态的,如下图展示了ak.exe.imgfarm.com的解析历史情况,这些信息对于进一步对域名进行定性,提供了丰富有效的信息;右侧提供的本地ip对该域名的请求情况,为定位僵木蠕的被控主机提供了直接信息。

恶意域名检测4图4 域名解析IP地理位置分布

上图是一个动画的截图,该动画提供了域名ak.exe.imgfarm.com在不同时间点的,解析ip的物理位置变化情况,如上图所示,该域名每隔10小时,往往会变化所解析的ip,同时物理位置不断变化,横跨美国、日本、欧洲,极不稳定,从动态特征的角度,十分可疑。

3)本地ip信息查询

系统内部维护了本地ip查询dns的历史记录,基于这个数据我们可以获得一个本地ip近期访问可疑域名的情况,原型界面如下:

恶意域名检测5图5 本地ip信息查询

以上界面为用户提供了,这个ip在什么时间,访问了哪些可疑域名,这些可疑域名的动/静态恶意域名概率,以及访问可疑域名的频率,结合其他网络安全检测信息,如流量特征、命中规则情况,可进一步确定该本地ip的网络安全状况。

注:本界面所展示信息,同样支持http请求获得Json格式的相同数据,外延产品可以方便地获取及处理。

4)全局信息查询

全局信息查询,相当于一套恶意域名检测系统的监控平台,可以提供所防护网络近一段时间,与dns请求相关的一些情况,原型界面如下:

恶意域名检测6图6 全局信息查询

该界面从全局dns请求的视角,告诉用户近一段时间:

1)动态恶意域名概率的均值波动情况;

2)静态恶意域名概率的均值波动情况;

3)出现了哪些动态恶意域名概率高的域名,以及访问它的本地ip;

4)出现了哪些动态恶意域名概率高的域名,以及访问它的本地ip。

在分析开始时,用户可以从以上这些信息入手,定位在何时、哪些本地ip访问了哪些可疑域名,这是一个较好的分析入手点。

注:本界面所展示信息,同样支持http请求获得Json格式的相同数据,外延产品可以方便地获取及处理。

4.2 应用方式

本系统的设计初衷是实现一个独立运行的系统,通过http协议的API对外提供支持服务。对于允许Internet访问的环境(准确的说,是访问dns服务器)下,本系统直接部署,自行运维,包括建立动态特征的原始数据的自动采集,与模型更新。

对于不允许访问dns服务器的环境下,可通过以下方式使用本系统提供的服务或数据:

1)部署本系统,但关闭建立动态特征的原始数据的自动采集,通过定期手工更新模型,此种方式下,静态特征及其分类器可用,但动态特征及其分类器只支持数据库中已更新的域名;

2)部署本系统,将建立动态特征的原始数据的自动采集关闭,但建立一个API(目前未开发),外延设备通过它将dns请求信息的返回结果导入到本系统数据,达到类似于‘原始数据的自动采集’的作用,这种情况下,静/动态分类器可工作,但由于‘自动采集’是周期性采集,而外延设备的注入信息可能在时间长度和数量上都会不足,对于动态分类器判断的及时性和有效性都会有一定影响(然而,由于有了网络中真实的dns请求行为数据,有可能诱导出基于请求行为的新的检测技术,这是好的一方面);

3)不部署本系统,本系统只负责导出白名单及其相关解析IP列表,和可疑域名名单及其相关解析IP列表(需要从数据库中以一定指标过滤,目前未开发),讲这些数据直接推送给外延设备,供其利用。

5.结束语

相较于一个成熟的产品,本文所述的恶意域名检测方法及其原型系统必然有很多不足和缺陷,然而笔者认为其仍是填补国内相关空白的积极尝试,随着研究进程的发展,笔者感到这一领域依然存在着很大的挑战,诸多问题对于恶意域名检测效果会产生严重的影响,如中西方不同的域名构成习惯,CDN等技术对动态特征的混淆等等,这些问题还有待我们去深入研究;在系统的普适性方面,对于在与外部网络隔绝的部署环境下,如何利用本地产生的DNS请求与解析信息建立动态特征,也是一个非常有意义的研究方向。

发表评论

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