软件学报  2017, Vol. 28 Issue (9): 2370-2387   PDF    
面向主干网的DNS流量监测
张维维1,2,3, 龚俭1,2,3, 刘尚东1,2,3, 胡晓艳1,2,3     
1. 东南大学 计算机科学与工程学院, 江苏 南京 210096;
2. 江苏省计算机网络重点实验室, 江苏 南京 210096;
3. 计算机网络和信息集成教育部重点实验室(东南大学), 江苏 南京 210096
摘要: 面对ISP主干网,为了检测威胁其管理域内用户安全的僵尸网络、钓鱼网站以及垃圾邮件等恶意活动,实时监测流经主干网边界的DNS交互报文,并从域名的依赖性和使用位置两个方面刻画DNS活动行为模式,而后,基于有监督的多分类器模型,提出面向ISP主干网的上层DNS活动监测算法DAOS(binary classifier for DNS activityobservation system).其中,依赖性从用户角度观察域名的外在使用情况,而使用位置则关注区域文件中记录的域名内部资源配置.实验结果表明:该算法在不依赖先验知识的前提下,经过两小时的DNS活动观测,可以达到90.5%的检测准确率,以及2.9%的假阳性和6.6%的假阴性.若持续观察1周,准确率可以上升到93.9%,假阳性和假阴性也可以下降到1.3%和4.8%.
关键词: DNS监测     域名检测     上层DNS流量     DNS活动分析     多分类器    
DNS Surveillance on Backbone
ZHANG Wei-Wei1,2,3, GONG Jian1,2,3, LIU Shang-Dong1,2,3, HU Xiao-Yan1,2,3     
1. School of Computer Science and Engineering, Southeast University, Nanjing 210096, China;
2. Jiangsu Provincial Key Laboratory of Computer Network Technology, Nanjing 210096, China;
3. Key Laboratory of Computer Network and Information Integration of Ministry of Education(Southeast University), Nanjing 210096, China
Foundation item: National Key Technology Research and Development Program of the Ministry of Science and Technology of China (2008BAH37B04); National Program on Key Basic Research Program of China (973) (2009CB320505); National Natural Science Foundation of China (60973123)
Abstract: Focusing on ISP backbone, this paper presents a method to detect malicious activities such as botnets, phishing and spam that threaten user security in the domain by monitoring DNS interaction messages through the network boundary in real time. The method depicts DNS behavior patterns based on dependency and position attribute. Then, the paper proposes a supervised classifier based DNS activity detecting algorithm DAOS (binary classifier for DNS activity observation system). Dependency attribute is used to describe external usage of the domain name from perspective of DNS customer, while position attribute is used to describe resource allocation of records in the zone file. Experimental results show that the algorithm, with a DNS data source in 2 hours, can achieve 90.5% of accuracy, 2.9% of false positive, and 6.6% of false negative without prior knowledge. If the observation is kept for a week, accuracy rises up to 93.9%, false positive and false negative can descend to 1.3% and 4.8%.
Key words: DNS surveillance     domain name detection     upper DNS traffic     DNS activity analysis     multi-classifier    

随着Internet的日益普及, 网络的重要性及其对社会的影响越来越大, 网络安全问题也随之突显出来. Internet设计之初考虑最多的是网络互联, 几乎没有考虑到安全问题, 导致Internet具有许多固有的安全问题; 其次, 入网计算机数量的增加意味着更多的可攻击对象, 尤其是防御力差且性能适中的个人主机和移动设备, 降低了攻击成本, 提高了攻击收益; 同时, 网络应用数量的快速增长增加了可利用的软件漏洞, 尤其是电子商务的出现, 使得传统以恶作剧、破坏为主的黑客更趋于经济利益的获取; 此外, 黑客间的分工协作和攻击手段的工具化, 也使得越来越多的业余团体和个人可以参与到产业链中牟取利益[1].作为当前Internet最严重的安全威胁之一, Botnet提供了一个高度可控的攻击平台, 方便攻击者发起各种类型的网络攻击.Incapsula在2015年的安全报告中指出, Bot流量近几年来一直保持在30%左右[2].APWG(国际反网络钓鱼工作组)在2016年3月一共检测到28.9万个钓鱼网站, 相比2015年10月增加250%.其中, 中国以4.16%的感染用户数排名第二, 且以51.35%的恶意软件感染率排名第一[3].综上可知:Botnet和钓鱼网站已经成为Internet的主要安全威胁, 且中国已经成为安全问题最严重的国家之一.网络安全问题空前严峻, 亟待解决.

DNS作为互联网的重要基础设施, 承载着域名与IP地址间相互映射的重任, 网络中各种应用活动都与之密切相关, 如电子邮件、网站服务、及时通信、微博等.与此同时, 域名解析服务也成为各类互联网安全威胁的重要工具, 如僵尸网络在其扩散与通信中使用DNS技术定位C & C(命令控制服务器), 网络钓鱼和恶意代码下载等通过频繁变更域名对应的IP地址或NS记录隐匿背后真实的服务器.DNS数据可以作为已有检测系统的补充, 用于恶意网络活动的检测[4].与全报文网络流量相比, DNS数据量相对较小且不加密, 可以有效地缓解性能压力, 实现大规模网络环境下的实时安全监测.另外, 各种网络应用都需要事先请求域名解析获取通信IP地址, DNS数据可以进行事前检测, 即, 在攻击活动开始之前完成检测.

近年来, 通过分析DNS活动行为以检测恶意服务的实时流量监测技术得到了广泛地研究.该类算法需要对网络中的DNS交互报文进行实时或准实时的DPI检测, 通过挖掘恶意服务有别于合法服务的DNS活动特征, 以发现恶意活动及其域名.算法的关键在于检测所依据的活动特征, 而可选用的特征测度又与流量监测点所处DNS层次密切相关.如图 1所示, 根据监测点所处DNS层次的不同, DNS流量大致可以分成两类.

Fig. 1 Classification of DNS traffic based on the hierarchy of the DNS in its monitoring points 图 1 DNS流量按其监测点所处DNS层次分类

(1)   下层DNS流量, 是真实终端用户和本地缓存名字服务器RDNS间交互的DNS请求和响应报文, 可以直接从用户网边界的本地缓存名字服务器RDNS获取;

(2)  上层DNS流量, 是从顶级域名服务器TLD(或者权威名字服务器NS)采集的DNS交互报文, 或者从本地缓存名字服务器RDNS上方采集的DNS交互报文:前者囊括授权域所管辖的所有域名的全球DNS解析请求和响应报文, 但是该数据的获取需要拥有这些域名服务器的管理员权限; 后者是用户网的本地缓存名字服务器RDNS和权威名字服务器NS(或者顶级域名服务器TLD)之间交互的DNS请求和响应报文.

目前, 大量研究工作主要围绕本地缓存名字服务器处获取的下层DNS流量开展, 从用户角度观测域名的DNS活动行为特征.相关工作有:Chatzis等人依据“邮件蠕虫感染主机的DNS MX流量在传播地址和流量特征方面具有高度相似性”提出一系列邮件蠕虫检测方法[5-8];Choi等人通过观测域名查询请求者的群体活动特性(即, 大量僵尸主机在很短的时间间隔内集中查询某个域名), 在大规模网络环境下实现对Botnet(包括变种和未知类型的Botnet)及其迁移活动的实时检测[9, 10];Jiang等人利用失效的DNS查询请求构造域名和查询主机间的二部图, 通过图形分解提取图形结构特点来检测各种网络异常活动[11];Yadav等人同时关注查询成功的域名及其附近查询失效的域名, 通过测量二者间的时间相关性以及域名集信息熵的相似性, 提出一个快速的Botnet检测算法[12].近年来, 攻击者为逃避检测, 开始使用多域名、异步访问、僵尸分组等策略加大检测难度.为此, Lee提出域名查询序列相关性的概念, 并基于此构建域名关系图.而后, 通过对图形进行边切割划分域名组, 以组为单位查询黑名单进行检测.该算法可以有效地检测使用非集中式通信模型的Botnet[13, 14].

本文为了保障ISP主干网运行安全, 需要实时检测流经主干网边界的上层DNS流量.上层DNS流量的客户端是ISP各个用户网的本地缓存名字服务器RDNS, 而非真实终端用户.为了提高域名查询效率和缓解网络带宽开销, 本地缓存名字服务器在一次成功域名解析后的TTL时间段内, 会继续使用其缓存记录向下层用户网提供域名解析服务, 而不是重新查询权威名字服务器.DNS缓存机制会屏蔽下层终端用户的IP地址, 聚合它们的解析请求, 使得上述从终端用户的角度测量域名访问模式相似性的下层DNS流量检测算法失效.另一方面, 现有针对上层DNS流量的检测算法相对较少, 代表工作有Kopis[15]和Tomas[16].这些算法的基本思路都是基于顶级域名服务器处采集的上层DNS流量, 从本地缓存名字服务器RDNS的视角观察DNS访问模式, 借用下层DNS流量分析中相同的检测模型, 通过测量缓存名字服务器的IP地址集相似性、空间分布以及查询时间相关性等特征进行检测.但是从顶级域名服务器处可以观察到域名全球范围的DNS解析请求和响应报文, 即, 进行DNS查询的缓存名字服务器数量庞大且地域分布广泛.而本文从ISP主干网边界采集的上层DNS流量, 其所辖的本地缓存名字服务器数量少且相对集中, 从而降低了上述基于IP地址集相似性和空间分布特征的上层DNS流量分析手段的准确率.

除DNS访问模式外, 域名资源记录信息也可用于检测上层DNS流量中的恶意活动.僵尸网络和钓鱼网站等恶意服务越来越多地使用FFSN来隐匿背后真实的服务器站点(mothership), 具有显著的IP-Flux和NS-Flux活动特征, 分别对应域名资源记录“A”和“NS”.相关工作有:Holz从垃圾邮件语料库中提取域名, 使用dig工具主动测量A记录数目、NS记录数目、A记录所属自治系统数目, 而后构建线性分类函数检测FFSN[17];Caglayan同时进行主动和被动DNS流量采集, 选取TTL值、A记录数目及其空间分布这3方面测度, 使用贝叶斯置信网络构建分类器, 实时检测FFSN[18].与此同时, ICP出于负载均衡的考虑, 会在全球范围内布署节点服务器构建CDN网络, 并使用DNS轮询机制分发用户请求, 同样表现出IP-Flux特征.因此, 虽然IP-Flux和NS-Flux作为检测恶意FFSN最显著的DNS活动特征, 却很难区分开合法的CDN网络.

另外, 为了提高上层DNS流量检测算法的准确率, 可以综合考虑多方面的DNS活动特征.如Antonakakis结合域名字面特征、资源记录特征以及证据特征, 提出一个动态信誉计算系统Notos, 实时评估给定域名的信誉度[19].Bilge同时统计域名查询请求的时间分布、域名映射IP地址的空间分布、TTL时间长短以及域名字面特征, 并应用有监督的决策树算法J48, 提出一个通用域名检测系统Exposure[20, 21].

本文研究适用于ISP主干网的上层DNS活动监测技术, 通过融合主干网边界采集的上层DNS流量和流测量数据, 综合考虑时间和空间两个维度, 从域名的依赖性和使用位置两个方面观察域名的DNS活动特征.其中:域名依赖性通过测量用户规模和活跃度, 衡量域名对用户的重要程度; 域名使用位置通过统计域名资源记录“A”和“NS”的IP-Flux和NS-Flux特征, 评估用于承载服务的网络基础架构的可靠性.而后, 应用有监督的机器学习模型, 提出一个适用于上层DNS流量的实时检测算法, 能够同时兼顾恶意域名检测的及时性和准确率.

1 上层DNS活动规律

为了保障ISP主干网运行安全, 本文基于主干网边界采集的DNS交互报文, 研究适用于上层DNS流量的恶意域名检测算法.其中, 算法的关键在于检测所依据的特征测度.为了寻找适用于上层DNS流量检测的域名活动特征, 本文连续3个月(2015年3月1日~5月31日)采集流经江苏省教育和科研计算机网(JSERNET)边界的DNS交互报文.选取Alex[22]网站连续3次排名前1万的域名以及僵尸网络[23, 24]、钓鱼网站[25]、垃圾邮件[26]和恶意软件[23, 24]黑名单中出现过的恶意域名, 从域名的依赖性和使用位置两个方面观察用户使用域名的外在活动规律以及域名的内部资源部署.为了后续形式化描述的方便, 首先给出本文的符号定义.

1.1 符号定义

(1) 域名集合D={d1, d2, d3, …, d|D|}

由于同一个二级域名通常对应ICP的一组相关服务, 因此, 论文以二级域名作为DNS流量监测的基本对象, 整个待观测域名集合包含|D|个二级域名对象dl(1≤l≤|D|).

dlD, 1≤l≤|D|, CDl={dlm|1≤m≤|CDl|}表示域名dl所辖所有子域名集合.

(2) DNS请求集合Q={q1, q2, q3, …, q|Q|}

qiQ, 1≤i≤|Q|, qi=〈t, c, s, d, type〉表示本地缓存名字服务器ct时刻向上层权威名字服务器(或顶级域名服务器)s发送域名dtype类查询请求.

(3) DNS响应集合${{R}_{1}}=\{{{r}_{1}}, {{r}_{2}}, {{r}_{3}}, ..., {{r}_{|{{R}_{1}}|}}\}$

riR1, 1≤i≤|R1|, ri=〈t, c, s, d, type, rcode, aa_flag〉表示上层权威名字服务器(或顶级域名服务器)st时刻回复本地缓存名字服务器c对于域名dtype类查询的解析结果, 其中, rcode=0表示解析成功, 否则为解析失败; aa_flag为授权回答标志位, aa_flag=1表示s为权威名字服务器.

(4) A类查询的域名解析结果集合${{R}_{2}}=\{{{r}_{1}}, {{r}_{2}}, {{r}_{3}}, ..., {{r}_{|{{R}_{2}}|}}\}$

riR2, 1≤i≤|R2|, ri=〈t, d, a〉表示t时刻域名dA类查询结果为a.

(5) NS类查询的域名解析结果集合${{R}_{3}}=\{{{r}_{1}}, {{r}_{2}}, {{r}_{3}}, ..., {{r}_{|{{R}_{3}}|}}\}$

riR3, 1≤i≤|R3|, rit, d, ns〉表示t时刻域名d的NS类查询结果为ns.

(6) 流摘要记录集合F={f1, f2, f3, …, f|F|}

fkF, 1≤k≤|F|, fkftime, ltime, sip, sport, cip, cport, proto, pkts, octets〉表示从ftimeltime时间段, 主机sip使用sport端口与主机cipcport端口进行单方向通信(sipcip), 协议号为proto, 报文数目为pkts, 字节数为octets.

(7) 时间参数W(当前时间窗口), W'(历史时间窗口), WpreWpost分别表示前后两个时间窗口.

1.2 域名依赖性

域名访问是指用户发出的关于该域名解析请求的行为, 为了检测域名访问异常, 本文提出域名依赖性的概念.依赖性是从域名解析请求的用户角度, 通过测量用户规模和活跃度, 衡量域名对用户的重要程度.但是DNS缓存机制的存在, 会屏蔽终端用户的DNS查询请求.值得庆幸的是, 网络流测量数据(如NetFlow流数据)中详细地记录了主机与主机之间的通信会话摘要, 可以用于弥补上层DNS流量中终端用户不可见的不足.如图 2所示, 终端用户在访问目标服务器(如百度搜索引擎)之前, 需要根据其域名(baidu.com)查询该服务器的IP地址(180.149.132.47), 而后才能与该IP地址建立通信连接, 最终获得所需服务.

Fig. 2 The entire interaction process of users accessing Baiduweb site 图 2 终端用户访问百度网站的整个交互过程

在上述终端用户的整个访问过程中, 上层DNS流量可以提供域名和所绑定服务器IP间的映射关系(域名⇔服务器IP), 而流测量数据又可以给出终端用户与服务器之间的通信关系(终端用户⇔服务器IP).因此, 结合主干网边界采集的上层DNS流量和流测量数据, 可以最终得到域名与终端用户间的关联关系(域名⇔服务器IP⇔终端用户), 进而统计域名依赖性的相关测度.

1.2.1 用户规模

(1) 用户IP地址数目ipNum:

$ resolvedIpSet\left( {{d}_{l}}, W \right)=\{a\left( {{r}_{i}} \right)|\forall {{r}_{i}}\in {{R}_{2}}, d\left( {{r}_{i}} \right)={{d}_{l}}且t\left( {{r}_{i}} \right)\in W\} $ (1)
$ \begin{align} &ipSet({{d}_{l}}, W)=\{cip({{f}_{k}})|\forall {{f}_{k}}\in F, sip({{f}_{k}})\in resolvedIpSet({{d}_{l}}, W)且ltime({{f}_{k}})\in W\}\cup \\ &\text{ }\{sip({{f}_{k}})|\forall {{f}_{k}}\in F, cip({{f}_{k}})\in resolvedIpSet({{d}_{l}}, W)且ltime({{f}_{k}})\in W\} \\ \end{align} $ (2)
$ ipNum\left( {{d}_{l}}, W \right)=\left| ipSet\left( {{d}_{l}}, W \right) \right| $ (3)

(2) 用户逻辑归属分布:平均每个单位用户IP数ipNumPerUnit; 平均每个单位的用户IP数目占该单位活跃IP总数的比重ipRatioPerUnit:

$ unitSet\left( {{d}_{l}}, W \right)=unit\left( ipSet\left( {{d}_{l}}, W \right) \right)=\{unit\left( ip \right)|\forall ip\in ipSet\left( {{d}_{l}}, W \right)\}~ $ (4)
$ unitNum\left( {{d}_{l}}, W \right)=\left| unitSet\left( {{d}_{l}}, W \right) \right| $ (5)
$ ipNumPerUnit({{d}_{l}}, W)=\frac{ipNum({{d}_{l}}, W)}{unitNum({{d}_{l}}, W)} $ (6)
$ ipRatioPerUnit({{d}_{l}}, W)=\frac{\sum\limits_{u\in unitSet({{d}_{l}}, W)}{\frac{|\{ip|\forall ip\in ipSet({{d}_{l}}, W)且unit(ip)=u\}|}{ipSumOfUnit(u)}}}{unitNum({{d}_{l}}, W)} $ (7)

(3) 用户地理位置分布:平均每个城市的用户IP数ipNumPerCity:

$ citySet\left( {{d}_{l}}, W \right)=city\left( ipSet\left( {{d}_{l}}, W \right) \right)=\{city\left( ip \right)|\forall ip\in ipSet\left( {{d}_{l}}, W \right)\} $ (8)
$ cityNum\left( {{d}_{l}}, W \right)=\left| citySet\left( {{d}_{l}}, W \right) \right| $ (9)
$ ipNumPerCity({{d}_{l}}, W)=\frac{ipNum({{d}_{l}}, W)}{cityNum({{d}_{l}}, W)} $ (10)

用户规模通过统计访问域名的用户IP地址数目、逻辑归属分布和地理位置分布, 从空间角度测量域名的依赖性.作为评估域名依赖性的基础测度, 用户IP地址数目的统计需要结合域名A类查询的解析结果和流测量数据.在W时间窗口内, 首先根据域名检索其A类查询解析结果, 得到所有解析IP地址集合(公式(1)), 而后查询流测量数据, 找到这些解析IP地址所有通信会话的对端IP集合(公式(2)), 用户IP地址数即为该集合的大小(公式(3)).如图 3所示, 僵尸网络域名拥有最大的用户群, 其中, 75.7%的域名拥有10个以上用户; 也有25.1%的合法域名, 其用户数超过10;而只有3.7%的钓鱼网站、9.6%的垃圾邮件以及13.4%的其他恶意软件域名拥有相同数目的访问用户.观察结果表明:用户IP地址数可以区分开合法域名和恶意域名, 尤其是僵尸网络域名.

Fig. 3 Cumulative distribution of domain names according to their user numbers according to the average users count ratio of each 图 3 域名按其用户IP地址数目的累积分布图

用户IP地址数目仅能反映总量的多少, 为了细粒度地刻画用户的空间分布规律, 本文从逻辑归属和地理位置两个空间维度, 分别观察用户空间范围和各个子空间的用户密度.传统DNS流量分析中提出组织机构数目(如BGP前缀数、自治系统AS数、ISP数和单位数)和国家地区数目(如国家数、城市数)作为测量空间范围的二级测度.但是对于ISP主干网而言, 由于用户局限于其所在的ISP、AS和国家, 因此只需要选取其中的单位数目(公式(5))和城市数目(公式(9)).实验观察发现:各类域名按单位数目或者城市数目的累积分布曲线与图 3相似, 僵尸网络域名的用户群空间分布最广, 与其他类别域名的曲线区别显著, 但是合法域名与垃圾邮件域名的两条累积分布曲线距离相差只有10%左右, 即, 从空间范围很难区分开这两类域名.

为此, 本文提出二级测度平均每个单位(或者城市)的用户数(公式(6) 和公式(10)), 用以测量子空间密度.观察发现:平均每个单位的访问用户数超过1.5的僵尸网络域名有83.1%;而只有42.9%的合法域名、11.5%的钓鱼网站域名、14.1%的垃圾邮件域名和27.8%的其他恶意软件域名, 其平均每个单位的访问用户数超过1.5.若不考虑其他恶意软件域名, 则合法域名和垃圾邮件域名(或钓鱼网站域名)的两条累积分布曲线的距离相差接近30%, 具有明显的差异.此外, 考虑到各个子网拥有的IP地址数目差别较大, 大的用户子网可能包含几个B类地址, 而小的用户子网只有1~2个C类地址, 若对所有单位计算平均用户数则不公平.因此, 进一步提出二级测度平均每个单位的用户IP数占该单位活跃IP总数的比重(公式(7))来测量子空间密度.实际观察结果表明(如图 4所示):考虑各个用户网的实际活跃IP数后, 当平均每个单位的用户比重超过10-4时, 僵尸网络域名数占总数的累积比重为84.6%, 而合法域名数占总数的累积比重仅为29.9%, 相差54.7%, 即能够更加准确地识别僵尸网络域名.

Fig. 4 Cumulative distributionof domain names unit to the whole network 图 4 域名按其平均每个单位用户比重的累积分布图

1.2.2 活跃度

(1) 域名生命周期liveSpan:

$ liveSpan\left( {{d}_{l}} \right)=\left\lceil (ltime\left( {{d}_{l}} \right)-ftime\left( {{d}_{l}} \right))/3600 \right\rceil $ (11)

(2) 域名活跃频率clientAppearFreq:

$ clientAppearFreq({{d}_{l}})=\frac{|\{h|\forall 0\le h < liveSpan({{d}_{l}}), ipNum({{d}_{l}}, h)>0\}|}{liveSpan({{d}_{l}})} $ (12)

(3) 周期性clientLineDistance:

$ clientLineDistance({{d}_{l}})=\sum\limits_{0\le h < 24}{\left( \frac{ipNum({{d}_{l}}, h+24)-ipNum({{d}_{l}}, h)}{ipNum({{d}_{l}}, h)} \right)} $ (13)

(4) 用户群稳定性clientDiffRatio:

$ clientDiffRatio({{d}_{l}}, {{W}_{pre}}, {{W}_{post}})=1-\frac{|ipSet({{d}_{l}}, {{W}_{pre}})\cap ipSet({{d}_{l}}, {{W}_{post}})|}{|ipSet({{d}_{l}}, {{W}_{pre}})\cup ipSet({{d}_{l}}, {{W}_{post}})|} $ (14)

(5) 用户访问突发性abruptRatio:

$ abruptRatio({{d}_{l}}, W)=1-\frac{Avg(ipNumSereis({{d}_{l}}, ftime({{d}_{l}}), ltime({{d}_{l}})))}{Max(ipNumSereis({{d}_{l}}, ftime({{d}_{l}}), ltime({{d}_{l}})))} $ (15)

(6) 解析失败率failureRatio:

$ failureTimes\left( {{d}_{l}}, W \right)=\left| \{{{r}_{i}} \right|\forall {{r}_{i}}\in {{R}_{1}}, d\left( {{r}_{i}} \right)={{d}_{l}}且t\left( {{r}_{i}} \right)\in W且rcode\left( {{r}_{i}} \right)\ne 0\}| $ (16)
$ failureRatio({{d}_{l}}, W)=\frac{failureTimes({{d}_{l}}, W)}{|\{{{r}_{i}}|\forall {{r}_{i}}\in {{R}_{1}}, d({{r}_{i}})={{d}_{l}}且t({{r}_{i}})\in W\}|} $ (17)

活跃度关注域名的存活时间和活动频率, 从时间角度测量域名的依赖性.针对长期存活的域名, 探查域名活动的周期性和活动频率; 而对于短期存活的域名, 则通过观察用户群稳定性, 用户访问突发性以及Domain-Flux特征, 研究域名活动的社区通信特征.此处需要重点说明的是:传统DNS流量分析工作中, 对于周期性和突发性特征的统计, 大多都是建立在对DNS查询次数时间序列的统计上.但是DNS缓存机制的存在, 使得下层用户的域名解析请求, 只有在缓存中没有该资源记录或者TTL超时的情况下, 才会出现在上层DNS流量中.即:在上层DNS流量分析中, 对DNS查询次数的统计将失去原先意义.为此, 本文借助流测量数据中提供的主机通信关系, 统计域名各个时间片的用户IP数.与DNS查询次数相比, 用户数可以更直观地体现域名的使用量.而后, 在用户IP数时间序列基础上, 进一步分析域名活动的周期性和突发性.

通常情况下, ICP为了保障用户能够持续获取服务, 一般不会变更域名.而恶意服务为了躲避黑名单过滤, 则会频繁地变更域名, 因此, 合法域名的生命周期远远长于恶意域名.如图 5所示:87.0%的合法域名生命周期长度超过75天, 只有5%左右的僵尸网络和钓鱼网站域名以及15%左右的垃圾邮件和其他恶意软件域名的生命周期长度超过75天.同时, 观察发现:生命周期不足1天的合法域名几乎没有( < 0.4%); 而生命周期不足1天的恶意域名却有一半左右, 其中, 僵尸网络域名69.0%、钓鱼网站域名59.3%、垃圾邮件域名48.1%、其他恶意软件域名45.3%.合法域名和恶意域名的生命周期长度存在显著的差异, 即, 生命周期可以作为一个有效的检测测度使用.

Fig. 5 Cumulative distributionof domain names according to their lifespan according to the distance between two consecutive 图 5 各类域名按其生命周期长度的累积分布图

生命周期的长短只能反映域名存活的时间跨度, 在这段时间内, 域名可能持续活跃, 也可能偶尔活跃.为了观察域名的具体活跃情况, 进一步统计其活跃频率, 即, 整个生命周期中活跃时间所占比重(见公式(12)).实际观察发现:僵尸网络域名由于用户的短时间集中访问, 拥有最大的活跃频率(活跃频率超过97.5%的域名有93.4%); 很多合法域名由于长期间歇访问, 活跃频率反而较小(只有28.8%的域名的活跃频率超过97.5%); 而钓鱼网站、垃圾邮件及其他恶意软件域名的活跃频率则介于两者之间.

对于ISP主干网而言, 由于其用户群属于同一个ISP和地理区域, 大多数用户每天具有相似的域名访问行为.如:JSERNET内, 各个高校的大学生拥有相同的作息时间, 对于知名合法域名的访问具有较强的周期性(T=1天); 而对于钓鱼网站、垃圾邮件等恶意软件域名, 只有受害者才会访问, 表现出相对较弱的周期性, 但是对于僵尸网络而言, 僵尸主机的同步性使得其域名访问活动具有更强的周期性.一个简单的周期性检测方法, 可以通过计算前后两天用户IP地址数时间序列曲线的欧拉距离.但是不同域名所拥有的用户群规模相差较大, 使得大用户群域名曲线的微小变化也会超过小用户群域名曲线的较大变化.因此, 本文在欧拉距离的基础上, 通过比上曲线均值计算相对距离(见公式(13)).实际观察发现(如图 6所示):超过0.39的合法域名有67.7%, 钓鱼网站、垃圾邮件等恶意软件域名有85%左右, 而僵尸网络域名只有14.8%.

Fig. 6 Cumulative distributionof domain names days' time series of the user numbers 图 6 各类域名按前后两天用户IP数时间序列距离累积分布图

短期活跃的恶意服务, 尤其是僵尸网络, 通常拥有稳定的用户群、突发的用户访问量以及频繁变更域名所引发的大量NXDomain响应报文.为此, 本文提出域名活动的社区通信特征:通过统计前后两个时间窗口用户IP地址集合的差异度, 测量用户群的稳定性(见公式(14)); 通过测量用户IP数时间序列曲线中平均值和最大值的相对距离, 评估曲线中存在异常突起的可能性(见公式(15)); 同时, 计量域名的NXDomain响应报文数, 检测Domain-Flux特征(见公式(16) 和公式(17)).实际观察结果表明:僵尸网络域名具有最小的用户IP地址集差异度(如图 7所示, 其中, 差异度超过97.5%的僵尸网络域名只有32.1%, 而合法域名和其他类型的恶意域名至少有65.9%), 说明僵尸网络拥有更加稳定的用户群; 僵尸网络域名的用户IP数时间序列曲线存在异常突起的可能性最大(如图 8所示, 可能性不足0.025的僵尸网络域名只有15%, 而合法域名和其他类型的恶意域名却超过52.5%), 表明僵尸网络的用户访问具有很强的突发性; 僵尸网络域名具有最大的解析失败率(解析失败率不足2.5%的僵尸网络域名仅有32.3%, 而合法域名和其他类型的恶意域名却超过93.0%), 证明僵尸网络使用的Domain-Flux技术会产生大量的NXDomain出错响应报文.

Fig. 7 Cumulative distributionof domain names according to the diversity factor of two IP address sets from two consecutive time windows 图 7 各类域名按前后两个时间窗口用户IP集差异度累积分布图

Fig. 8 Cumulative distributionof domain names according to the burstiness of their user access 图 8 各类域名按访问突发性的累积分布图

1.3 域名使用位置

资源记录ANS中隐含域名的使用位置信息, 前者记录域名的解析IP地址, 表明哪里可以访问域名绑定的服务; 后者记录域名的权威名字服务器, 给出哪里可以查询域名的资源记录信息.与FFSN相比, CDN[27]虽然也使用轮询机制将域名映射到一组IP地址, 但是存在根本的区别.

(1) CDN背后的节点服务器通常是一组高性能专用服务器, 拥有的IP地址集合相对稳定且长期存活.而FFSN背后的僵尸代理主要是受病毒感染的普通用户主机, 由于攻击者无法直接控制机器的开关, 因此, 用作僵尸代理的主机常常短期活跃, 使得集合内的IP地址不断更替(新僵尸主机的加入或原有僵尸主机的退出);

(2) CDN为了提高服务质量, 减少用户访问的响应时间, 尽可能使用户就近获取所需内容.需要在全球范围内均匀部署节点服务器, 并指定离用户最近的服务器IP地址作为域名查询的解析结果.因此, CDN域名解析的IP地址集空间分布广且均匀, 就近原则也使得靠近用户群的服务器IP地址被轮询到的概率变大.对于FFSN而言, 由于同一个组织机构的用户网络存在许多相似的安全漏洞, 很可能成片地受到感染, 即, 攻击者可利用的僵尸代理局部集中分布.此外, 攻击者为了避免黑名单过滤, 会频繁地将域名映射到新的僵尸代理, 随机轮询使得FFSN域名各个解析IP地址被轮询到的概率相当;

(3) ICP部署CDN, 通常在其上提供一组相关服务, 即:CDN节点服务器的IP地址, 常常会反向映射到多个域名, 但是它们具有相同的二级域名; 而FFSN使用僵尸作为其服务代理, 为了提高僵尸主机的使用率, 同一个攻击者(或者不同的攻击者)可以租赁同一个僵尸绑定不同的服务, 即, FFSN域名解析的IP地址可以反向映射到不同的二级域名.尤其是使用Domain-Flux技术的新型僵尸网络, 一个IP地址可以反向映射到一组随机域名.

为了识别混入FFSN的CDN, 降低检测的误报率, 本文在传统测量解析IP地址数目、权威名字服务器数目、空间分布以及TTL值检测IP-Flux和NS-Flux特征的基础上, 根据上述分析提出一组新的测度.从解析IP地址和权威名字服务器两个方面, 通过观察各自对象集合的稳定性、各个对象的存活时间、解析次数分布、反向映射的二级域名数目和TTL分布等, 评估用于承载服务的网络基础架构的可靠性.

1.3.1 IP-Flux特征分析

(1) 解析IP地址集合空间分布特征:各解析IP出现次数的标准方差均值比ripTimesDistribution; 当前时间窗口所有解析IP反向映射的二级域名总数ripSdomainTNum; 历史时间窗口平均每个解析IP曾经反向映射过的二级域名数ripSdomainMnum:

$ ripTimes\left( {{d}_{l}}, W, {{a}_{m}} \right)=\left| \{{{r}_{i}} \right|\forall {{r}_{i}}\in {{R}_{2}}, d\left( {{r}_{i}} \right)={{d}_{l}}且t\left( {{r}_{i}} \right)\in W且\left( {{r}_{i}} \right)={{a}_{m}}\}| $ (18)
$ ripTimesSeries\left( {{d}_{l}}, W \right)=\{ripTimes\left( {{d}_{l}}, W, {{a}_{m}} \right)|{{a}_{m}}\in resolvedIpSet\left( {{d}_{l}}, W \right)\} $ (19)
$ ripTimesDistribution({{d}_{l}}, W)=\frac{Var(ripTimesSeries({{d}_{l}}, W))}{Avg(ripTimesSeries({{d}_{l}}, W))} $ (20)
$ ripSdomainTNum\left( {{d}_{l}}, W \right)=\left| \{d\left( {{r}_{i}} \right) \right|\forall {{r}_{i}}\in {{R}_{2}}, a\left( {{r}_{i}} \right)\in resolvedIpSet\left( {{d}_{l}}, W \right)且t\left( {{r}_{i}} \right)\in W\}| $ (21)
$ ripSdomainMNum({{d}_{l}}, {W}')=\frac{\sum\limits_{{{a}_{m}}\in resolvedIpSet({{d}_{l}}, W)}{|\{d({{r}_{i}})|\forall {{r}_{i}}\in {{R}_{2}}, a({{r}_{i}})={{a}_{m}}且t({{r}_{i}})\in {W}'\}|}}{|resolvedIpSet({{d}_{l}}, W)|} $ (22)

(2) 解析IP地址集合时间分布特征:前后两个时间窗口解析IP地址集差异度ripDiffRatio; 解析IP地址的平均生命周期长度ripLiveMSpan:

$ ripDiffRatio({{d}_{l}}, {{W}_{pre}}, {{W}_{post}})=1-\frac{|resolvedIpSet({{d}_{l}}, {{W}_{pre}})\cap resolvedIpSet({{d}_{l}}, {{W}_{post}})|}{|resolvedIpSet({{d}_{l}}, {{W}_{pre}})\cup resolvedIpSet({{d}_{l}}, {{W}_{post}})|} $ (23)
$ ripLiveMSpan({{d}_{l}}, W)=\frac{\sum\limits_{{{a}_{m}}\in resolvedIpSet({{d}_{l}}, W)}{(\left\lceil (ltime({{a}_{m}})-ftime({{a}_{m}}))/3600 \right\rceil )}}{|resolvedIpSet({{d}_{l}}, W)|} $ (24)

CDN的就近原则使得靠近用户群的服务器IP地址被轮询到的概率大, FFSN的随机轮询使得各个解析IP地址被轮询到的概率相当.为了观察这一现象, 测量解析IP地址出现次数的分布特征.作为评估数据集离散程度的重要测度, 标准方差的主要思想是计算各个数据偏离平均数的距离.但是对于不同域名, 其解析IP地址出现次数的均值各不相同, 单独统计标准方差, 无法直观地刻画不同域名间解析IP地址出现次数的分布特征, 因此, 本文在标准方差计算的基础上进一步比上平均值, 提出了标准方差均值比(见公式(20))这一测度, 其中, 参数ripTimesSeries表示某个域名对象在时间窗口W内的所有解析IP地址的出现次数序列(公式(19)).实验观察发现:解析IP地址出现次数的标准方差均值比超过0.6的CDN域名有53.3%, 而FFSN域名只有17.5%.这符合CDN的就近访问原则以及FFSN的随机轮询机制.

传统的FFSN检测算法大多只关注域名→解析IP地址的映射关系, 而忽略解析IP地址→域名的反向映射关系.为了避免域名单点失效, 攻击者会使用Domain-Flux技术, 通过DGA算法生成一组随机域名, 解析到命令控制服务器.相反, FFSN命令控制服务器的IP地址会反向映射到一组DGA域名.而CDN节点服务器为了提高自身的利用率, 也会在同一台服务器上运行多个服务.即:CDN节点服务器的IP地址集也会反向映射到多个域名, 但是它们常常属于同一个或少数几个二级域名.为了观察上述活动现象, 本文在统计解析IP地址反向映射的域名数[14, 15]基础上进一步测量当前时间窗口W内域名所有解析IP地址反向映射的二级域名总数(见公式(21)).检测算法出于及时性的考虑, W时间长度通常设置的较短.为了弥补当前数据不足的缺陷, 可以使用较长时段的历史相关数据来提高检测准确率.为此, 进一步统计历史时间窗口W内域名平均每个解析IP地址反向映射的二级域名数(见公式(22)).实际观察发现:所有解析IP地址反向映射的二级域名总数超过39的CDN域名只有17.3%, 而FFSN域名却有42.5%;平均每个解析IP地址反向映射的二级域名数超过10的CDN域名仅有15.3%, 而FFSN域名却有45.4%.与FFSN相比, CDN域名的解析IP地址反向映射的二级域名数更少, 这符合理论分析的结果.

CDN部署的节点服务器IP地址集合相对稳定且长期存活, 而FFSN选用的僵尸代理IP地址集频繁变更.为了观察这一现象, 提出二级测度“前后两个时间窗口解析IP地址集合的差异度”(见公式(23))和“解析IP地址的平均生命周期长度”(见公式(24)):前者测量解析IP地址集合的稳定性, 后者关注解析IP地址的活跃时间长度.实际统计发现:解析IP地址集合差异度超过97.5%的CDN域名有31.9%, 而FFSN域名却有65.8%;解析IP地址平均生命周期长度超过12天的CDN域名有89.2%, 而FFSN域名只有69.2%.充分说明CDN域名的解析IP地址集合更加稳定, 且解析IP地址存活时间更久.

1.3.2 NS-Flux特征分析

(1)   权威名字服务器集合空间分布特征:各名字服务器出现次数的标准方差均值比nsTimesDistribution; 当前时间窗口所有名字服务器解析的二级域名总数nsSdomainTNum; 历史时间窗口平均每个名字服务解析的二级域名数nsSdomainMNum;

(2)   权威名字服务器集合时间分布特征:前后两个时间窗口名字服务器域名集合的差异度nsDiffRatio; 名字服务器IP地址集合的差异度nsIpDiffRatio; 权威名字服务器的平均生命周期长度nsLiveMSpan.

仿照IP-Flux特征测度, 设计NS-Flux特征测度, 具体计算方法类似公式(18)~公式(24), 这里不再详细阐述.服务提供商通常会配置一个主DNS服务器和多个备用DNS服务器, 以保证设备在出现故障或者受到恶意攻击时仍然能够继续提供域名解析服务.具体工作时, 本地缓存名字服务器在接收到域名请求后会查询首选DNS服务器, 只有当首选DNS服务器无法正常解析域名时才使用备用DNS服务器.而FFSN使用僵尸主机充当域名解析代理, 通过代理的频繁变换, 避免受胁迫DNS服务器出现单点失效问题.因此, CDN域名的NS查询结果比较集中, 而恶意FFSN域名的NS返回结果相对均匀.为了描述这一活动现象, 提出了域名各权威名字服务器出现次数的标准方差均值比.实际观察发现:各权威名字服务器出现次数的标准方差均值比超过0.15的CDN域名有30.1%, 而恶意FFSN域名只有14.0%, 与理论分析一致.

通常情况下, 用户在域名注册商处注册域名, 由他们负责域名解析.域名注册商部署DNS服务器, 对其管理的大量域名提供解析服务, 即:CDN域名映射的权威名字服务器, 反向映射到大量二级域名.而恶意FFSN会频繁地变更僵尸代理的域名和IP地址, 使得FFSN域名映射的权威名字服务器, 反向映射的二级域名数目较少.为了观察这一活动现象, 测量当前时间窗口W内域名所有权威名字服务器反向映射的二级域名总数, 以及历史时间窗口W'内域名平均每个权威名字服务器反向映射的二级域名数.实际统计可知:所有权威名字服务器反向映射的二级域名总数超过14的CDN域名有58.7%, 而FFSN域名只有40.1%;平均每个权威名字服务器反向映射的二级域名数超过3的CDN域名有67.1%, 而FFSN域名却只有49.1%.与FFSN相比, CDN域名映射的权威名字服务器, 其反向映射的二级域名数更少, 符合理论分析的结果.

最后, 从时间维度观察CND域名和FFSN域名的NS-Flux活动特征.为了保证域名解析服务的性能和安全性, 域名注册商分布式部署的DNS服务器常常是一组高性能的专用服务器, 其域名和IP地址集合相对稳定且长期存活.而FFSN能够选作域名解析代理的僵尸主机主要是受到病毒感染的普通用户主机, 因此, FFSN域名的权威名字服务器通常短期活跃且频繁更替.为此, 提出二级测度前后两个时间窗口权威名字服务器域名集合的差异度、前后两个时间窗口权威名字服务器IP地址集合的差异度以及权威名字服务器的平均生命周期长度.前两个测度用于测量权威名字服务器集合的稳定性, 而后者关注权威名字服务器的活跃时间长度.实验观察发现:前后两个时间窗口权威名字服务器的域名集合差异度超过62.5%的CDN域名只有4.7%, 而FFSN域名有18.7%;前后两个时间窗口权威名字服务器的IP地址集合差异度超过97.5%的CDN域名只有20.0%, 而FFSN域名却有89.5%;权威名字服务器平均生命周期长度超过13天的CDN域名有95.0%, 而恶意FFSN域名只有73.1%.观察结果表明:与恶意FFSN域名的权威名字服务器相比, CDN域名的权威名字服务器的域名和IP地址集合更加稳定, 且权威名字服务器的存活时间更久.

2 DNS流量监测模型

面对ISP主干网, 为了检测威胁其管理域内用户安全的僵尸网络、钓鱼网站以及垃圾邮件等恶意活动, 本文提出一种适用于ISP主干网的上层DNS流量监测模型DAOS.该算法实时监测流经主干网边界的DNS流量, 从时间和空间两个维度观察域名依赖性和使用位置两方面的DNS活动特征, 并分别使用有监督的机器学习算法进行检测.而后, 通过加权平均融合两方面检测结果, 及时准确地识别恶意域名.

图 9所示, 整个DNS流量检测模型包括4个主要功能模块:首先, 通过域名聚类算法将待处理的标准域名集和实测域名集各自划分成组, 以组为最小单元进行观察和检测; 其次, 针对数量庞大的测度集进行测度选取, 消除冗余测度以及特征不明显的测度, 降低计算复杂度和系统开销; 而后, 对每一组域名, 基于ISP主干网边界实时采集的DNS流量和流测量数据, 统计所选测度集中的每一个测度; 最后, 设计多分类器检测模型, 从域名依赖性和域名使用位置两个方面, 分别应用有监督的机器学习方法, 通过标准域名集的训练学习, 检测实测域名集中出现的恶意域名.并在此基础上进一步使用加权平均的数学统计方法, 对上述两方面的检测结果进行数据融合, 以提高最终检测结果的准确率.

Fig. 9 System architecture ofa DNS traffic detection algorithm 图 9 上层DNS流量监测模型DAOS

2.1 域名聚类算法

面对数量庞大的域名集合, 若对每一个域名都进行DNS活动监测, 则系统开销太大.域名聚类的目标在于尽可能地将同一个应用或同一组相近应用划分到一个组, 以组为基本单元, 监测其DNS活动轨迹.常用域名聚类算法主要有3种.

(1)  将具有相同二级域名的所有子域名划分成一组, 如XXX.taobao.com.一个单位或者组织机构通常会注册一个二级域名, 并在其下命名一组子域名, 用以绑定不同的服务或者访问资源.因此, 该域名聚类算法能够有效地聚合同一个单位或者个人提供的一组相关服务;

(2)  按解析IP地址分组域名, 即, 将一个解析IP地址反向映射的所有域名划分到一个分组, 该域名聚类算法能够有效地聚合同一台物理设备上运行的一个或一组服务;

(3)  构建域名集和解析IP地址集间的二部图〈D, S, E〉(D表示域名集合, S表示解析IP地址集合, ∀e=(d, s), 表示域名d的解析IP地址为s), 将同一个连通二部图内的所有域名划分成一组.该域名聚类算法可以有效地发现同时使用IP-Flux技术和Domain-Flux技术的僵尸命令控制器.

为了选择合适的域名聚类算法, 本文从正确分组比例accrurate(Gi)=max(g(Gi)/|Gi|, b(Gi)/|Gi|)和压缩比例compression_ratio=1-|G|/|D|两个方面进行评估.首先, 对于一个聚类算法而言, 需要尽可能地将同类对象划分到一个分组, 不同类对象划分到不同分组.为了计算正确分组比例, 分别计算分组中合法域名所占比例以及恶意域名所占比例, 而后, 选择两者中较大的一个作为最终结果(其中, g(Gi)和b(Gi)分别表示分组Gi中的合法域名数和恶意域名数).如图 10所示, 3种域名聚类算法都能将99%以上的分组进行100%的正确划分.此外, 由于现有黑名单列表都是以二级域名或者三级域名的形式进行罗列, 按照二级域名进行聚类, 几乎所有(99.99%)域名分组都能得到100%的正确划分.其次, 聚类算法需要在保证分组正确性的前提下, 尽可能多地减少分组数目.本文通过计算1-|G|/|D|来衡量域名聚类算法的压缩率, 其中, |G|为聚类后的分组数, 而|D|为聚类前的域名数.如图 11所示:按照二级域名的聚类算法有97.4%左右的压缩率, 依据连通二部图的域名聚类算法有95.6%压缩率, 而按照解析IP地址的域名聚类算法只有86.4%的压缩率.

Fig. 10 Cumulative distributionof domain name groups according to their correct clustering proportion 图 10 各组域名按其正确分组的域名比例的累积分布图

Fig. 11 Compressibility comparison of the three domain name clustering algorithms 图 11 3种域名聚类算法的压缩率比较

综合上述两方面评估结果, 按照二级域名的聚类算法同时拥有最大正确分组比例和最大压缩比例.因此, 本文选取该聚类算法, 分别对标准域名集和实测域名集进行分组, 以组为DNS活动监测的基本单元.

2.2 测度选择

为了观察域名的DNS活动规律, 本文从依赖性和使用位置两个方面提出两组特征测度:前一组从用户角度观察域名的外在使用情况; 后一组关注区域文件中记录的域名内部资源配置.虽然两组测度集彼此独立, 但是数目较大.一方面会增加测度计算的复杂度, 进而增大系统开销和时间开销; 另一方面, 冗余测度也会降低检测结果的准确率.为此, 本文针对两组测度, 分别运用测度选择算法CFS[28]选取最优测度集.对于依赖性测度组, 选取测度(1) ipNum, (2) ipRatioPerUnit, (3) ipNumPerCity, (4) liveSpan, (5) clientAppearFreq, (6) clientLine Distance和(7) abruptRatio; 而对于使用位置测度组, 选取(8) ripTimesDistribution, (9) ripSdomainTNum, (10) rips domainMNum, (11) ripDiffRatio, (12) nsDiffRatio和(13) nsLiveMSpan.此处需要说明的是:在这13个测度中, 除测度(1) 和测度(4) 是已有测度外, 其余11个测度都是改进测度或者新测度.针对单位数/城市数两个空间测度无法有效区分合法域名和垃圾邮件域名, 测度(2)、测度(3) 进一步测量空间密度; 为了进一步观察长期活跃域名的活跃情况, 测度(5) 继续测量活跃频率; 测度(6) 可以缓解欧拉距离测量中, 曲线绝对高度对周期性检测的影响; 测度(7) 通过平均值和最大值的简单比值运算, 可以降低CUSUM等算法在曲线变点分析时的计算复杂度; 最后, 为了识别混入FFSN的CDN, 降低检测的误报率.本文通过分析两者间的内在差异, 提出一组新的测度(测度(8)~测度(13)), 用于评估承载服务的网络基础架构的可靠性.

2.3 多分类器检测算法

目前, 关于分类算法的研究已经相当成熟.Statlog项目针对卫星影像等8个实际分类问题, 考察了18种有监督的机器学习算法的分类效果.研究结果表明, 没有一个算法能够同时适用于上述所有类别的分类问题.本文并不研究具体算法的改进和优化, 而是关注何种分类器或者分类器组合更适合本文的数据集.

为了检测恶意域名, 本文从依赖性和使用位置两个方面提出两组特征测度.若使用单个分类器进行异常检测, 则需要同时统计和分析两组测度.考虑到高维数据的处理系统开销大, 且两组测度之间彼此独立, 本文提出多分类器检测模型DAOS:针对两组特征测度, 各自选用准确率高且时间开销低的分类器进行检测, 而后, 通过加权平均的数学统计方法对上述两方面的检测结果进行数据融合, 得到最终结果.实验观察发现, C4.5分类器对两组测度都拥有最大的检测准确率、最小的假阳性和假阴性以及较小的时间开销.因此, 选用C4.5分类器分别对两组测度进行DNS活动异常检测.为了后续叙述的方便, 不妨假设对于任意一个域名对象dl, C4.5分类器使用依赖性测度组将dl检测为恶意域名的置信度为Pdep(dl, CBad), 而使用使用位置测度组将dl检测为恶意域名的置信度为Ploc(dl, CBad).

$ p\left( {{d}_{l}}, {{C}_{Bad}} \right)=a*{{P}_{dep}}\left( {{d}_{l}}, {{C}_{Bad}} \right)+(1-a)*{{P}_{loc}}\left( {{d}_{l}}, {{C}_{Bad}} \right) $ (25)
$ \psi ={{\sum\limits_{{{d}_{l}}\in D}{({p}'({{d}_{l}}, {{C}_{Bad}})-p({{d}_{l}}, {{C}_{Bad}}))}}^{2}} $ (26)

为了合并两方面检测结果, 采用加权平均的数学统计方法进行融合(见公式(25)), 其中, 参数α和1-α分别表示两组测度检测结果的权重, 且α∈[0, 1].为了估计参数a, 本文在标准样本集的基础上, 采用最小二乘法(见公式(26)), 其中, P'(dl, CBad)表示各域名样本的实际置信度:若dl是恶意域名, 则值为1;否则为0.当α=0.55时, ψ值最小, 此时, 多分类器算法DAOS的检测准确率为93.9%, 假阳性为1.3%, 假阴性为4.8%, 时间开销为1.94s.如图 12图 13所示:在单分类器算法中, C4.5分类器具有最高的检测精度(准确率93.7%, 假阳性1.7%, 假阴性4.6%)和相对较小时间开销(1.98s).与之相比, 本文提出的多分类器算法提高0.2%的准确度, 降低0.4%的假阳性和0.4s(相对降低20.2%)的时间开销, 但假阴性增加0.2%.

Fig. 12 Accuracy comparison of these classification algorithms 图 12 各分类算法检测准确率比较

Fig. 13 Time overhead comparison of these classification algorithms 图 13 各分类算法时间开销比较

3 实验结果 3.1 数据集

(1) 实测数据集

主干网DNS流量JSERNET_DNS:2015年3月1日~5月31日, 在中国教育科研网江苏省网边界一个接入点路由器上, 连续3个月采集流经的DNS交互报文.

主干网流测量数据JSERNET_NETFLOW:同样, 从2015年3月1日~5月31日, 在中国教育科研网江苏省网边界同一个接入点路由器上, 连续3个月采集流经的NetFlow流数据.

(2) 标准域名集

合法域名集Good_Domain_Set:考虑到越普及通用的域名, 其为合法域名的可能性越大.本文选取Alex[22]网站连续3次排名前1万且在JSERNET_DNS中出现过的域名, 同时去除曾经在黑名单中出现过的域名.合法域名集一共包含5 438个二级域名对象, 其中包含161个CDN二级域名对象.

恶意域名集Malicious_Domain_Set:选取僵尸网络[23, 24]、钓鱼网站[25]、垃圾邮件[26]和恶意软件[23, 24]等黑名单中出现过、并且在JSERNET_DNS中出现过的域名.为保证恶意样本集的干净, 进一步删除Alex网站3次排名前100万的域名.恶意域名集一共包含5 533个二级域名对象, 其中, 僵尸网络二级域名对象2 846个、钓鱼网站二级域名对象663个、垃圾邮件二级域名对象937个、其他恶意软件二级域名对象1 087个.

3.2 准确率

对于DNS流量检测算法而言, 设计和实现的关键在于检测所依据的测度和采用的分类算法.目前, 关于分类算法的研究无论是有监督的机器学习算法还是无监督的聚类或者分类算法都相当成熟.因而, 测度的选取成为当前各DNS流量检测算法关注的重点.表 1中, 与本文DAOS系统在检测目标、数据源和实验环境上相似的工作有Notos[19], Exposure[20, 21]和Kopis[15], 它们都是针对上层DNS流量的通用域名检测算法, 都使用了域名访问活动特征和资源记录特征, 此外, 3项先前的工作还增加了域名字面特征和黑名单证据特征.

Table 1 The list of DNS traffic detection algorithms 表 1 DNS流量检测算法列表

DAOS从依赖性和使用位置两个方面, 一共提出13个测度.为了证明该测度集的重要性, 本文基于相同的标准数据集和分类算法, 分别选用4项工作中不同的测度集C1~C4, 比较它们的检测准确率, 具体实验过程如下:首先, 选取标准域名集Good_Domain_SetMalicious_Domain_Set中标记过合法/恶意的二级域名作为观测对象集O; 其次, 基于DNS数据JSERNET_DNS和NetFlow数据JSERNET_NETFLOW, 根据文献中测度集Ci的具体定义, 统计每个二级域名对象的测度组; 而后, 统一使用单个C4.5分类器对标记过的二级域名对象集进行分类, 有监督的机器学习方法需要提供训练集和测试集, 本文采用十字交叉验证法, 将域名对象集O划分成10份, 每次选9份训练1份测试, 最终得到的检测结果为这10次的平均结果; 最后, 从检测准确率、假阳性和假阴性3个方面比较4个测度集相应的检测结果.这里有两点需要说明:(1) 只关注域名访问活动特征和资源记录特征两方面的测度, 由于域名字面特征检测精度不高, 证据特征过多依赖外界黑名单的正确性, DAOS现阶段并未考虑这两方面的特征测度, 但是下阶段仍然可以增加它们作为辅助测度, 因此算法比较时, 出于公平性的考虑, Notos, Exposure和Kopis这3项工作也不计算域名字面特征和黑名单证据特征; (2) 多分类器虽然在时间开销上优于单分类器(降低20%), 但是在检测准确率上相差不大(准确率只有0.2%的增加), 因此, 该节对于所有测度集都使用单个C4.5分类器进行分类.

图 14所示, DAOS虽然只使用了13个测度, 却具有最高的检测精度(准确率93.7%, 假阳性1.7%, 假阴性4.6%).为了探查其原因, 本文基于表 1给出的测度集进行分析.

Fig. 14 Accuracy comparison of these DNS traffic detection algorithms 图 14 各DNS流量检测算法准确率比较

●  首先, Notos关注资源记录A的地理位置分布和逻辑归属分布, 但是忽略了访问活动特征; 而Kopis观测域名访问活动中, DNS查询者“RDNS”的空间分布和用户规模, 却未使用资源记录特征.与之相比, DAOS结合了域名的访问活动特征和资源记录特征, 因而检测精度具有较大幅度的提升:比Notos准确率提高9.5%, 假阳性降低7.4%, 假阴性降低2.1%;比Kopis准确率提高8.3%, 假阳性减少5.6%, 假阴性也降低2.7%;

●  其次, Exposure虽然也综合了访问活动特征和资源记录特征, 但是只观察资源记录A以及TTL的空间分布特征, 只测量访问活动中DNS查询的时间分布特征; 而DAOS全面分析了资源记录A, NS以及TTL的时间和空间分布特征, 并借助流数据间接测量用户访问活动的时间和空间分布特征;

●  另外, 实际观察发现:平均每个域名的查询用户数有340个, 而RDNS数只有210个.即, 从用户视角可以比RDNS视角更好地观测访问活动特征.因此, DAOS比Exposure拥有更高的检测精度(准确率上升2.8%, 假阳性减少2.8%, 假阴性不变);

●  最后, 值得说明的是:Notos使用了18个测度, Exposure使用了24个测度, Kopis使用了23个测度; 而本文通过使用测度选择算法CFS, 只选取了13个测度, 大概只有它们的一半.

实验结果表明:本文从依赖性和使用位置两个方面提出的两组特征测度, 要优于现有检测算法所使用的域名访问活动特征测度和资源记录特征测度.因而, 可以改进和补充现有检测算法中的测度, 提高主干网DNS流量实时检测的精度.

3.3 影响因子

恶意域名的识别, 需要事先观察和统计该域名对象的DNS活动特征.一般而言, 观测的时间越长, 检测的准确率越高; 观测的时间越短, 检测的准确率也会相对下降.即, 准确率和观测时间长度此消彼长.如何根据用户对检测实时性的需求选择两者间合适的平衡点, 是需要研究的一个重点.

本节重复第3.2节中的实验过程, 保持数据集、测度集(13个测度)和多分类算法不变, 调节测度统计的时间窗口长度(2小时、4小时、8小时、16小时、1天、2天、1星期), 即, 每个域名对象需要持续观测的时间长度.而后, 同样使用十字交叉验证法, 从准确率、假阳性和假阴性这3个方面评估算法的检测精度.如图 15所示:随着观测时间窗口长度的增加, 算法的检测准确率确实有所增加, 但增幅不大; 与此同时, 假阳性和假阴性也稍有减少.

Fig. 15 Correlation between theobservation intervaland the algorithm's detection accuracy 图 15 算法准确率与观测时间长度之间的相关性

当观测时间长度从2小时增加到1星期后, 检测准确率从90.5%上升到93.9%(增加3.4%), 假阳性从2.9%下降到1.3%(减少1.6%), 假阴性也从6.6%下降到4.8%(减少1.8%).结果表明:DAOS具有较高的实时检测能力, 经过2个小时的实时监测, 就能达到90.5%的准确率.若用户期望获得较高的准确率, 则需要适当延长域名观测的时间长度.

3.4 实用性测试

为了验证DAOS检测算法的实用性, 本文在中国教育科研网江苏省网边界的一个接入点路由器上, 实时采集流经的DNS流量和NetFlow流记录数据, 同时转发给后端DAOS检测服务器.DAOS系统运行前, 设定时间窗口长度为2小时, 同时选用第3.1节中的两个标准域名列表Good_Domain_SetMalicious_Domain_Set作为最初的训练样本集.DAOS实际运行过程中包含3个重要环节:首先, 当标准域名列表发生变更时, 系统在接下来的一个时间片内, 需要重新统计标准域名列表中所有标记域名的测度值, 生成新的训练样本集; 其次, DAOS维护着一张二级域名列表, 当出现新的二级域名对象时, 才统计其测度值, 并使用多分类器和训练样本集进行分类; 最后, 系统定期从检测结果中, 选择置信度较大的二级域名对象, 更新标准域名列表, 实现DAOS算法的自学习.

从2015年6月1日~6月30日, 平均每天新出现的二级域名对象有2.89万个, 而DAOS每天检测到的可疑二级域名对象有2 852个, 一个月共发现8.57万个可疑域名对象.为了验证检测结果的准确率, 采用抽样检测的方法, 通过统计抽样样本的准确率来评估整个检测结果集的准确率.本文选用千分之一的抽样比例, 从可疑域名对象集中随机抽出857个二级域名样本, 通过查询在线黑名单[23-26]和可疑文件分析服务网站VirusTotal[29], 或者手工验证的方法确定样本类别.其中, 出现在钓鱼网站[23]中的域名有1个, 出现在恶意域名黑名单[23, 24]中的域名有3个, DGA域名有22个.VirusTotal确定为恶意的域名有31个, 安全的域名有53个.另外, 有179个域名未经注册, 有137个域名所辖网站包含色情、赌博和恶意销售等内容, 75个域名所辖网站无效、过期或者正在维护中, 224个域名在一个月内的活跃时间长度不足1小时, 还有132个域名无法进行确认.

此外, 针对上述75个无效、过期和正在维护中的域名网站进行追踪分析:首先, 这75个域名网站在原始DNS数据中存在正确的解析响应报文, 能够提取出域名映射的IP地址; 同时, 在流测量数据中也可以找到这些IP地址的通信会话信息, 说明它们当时都活跃着.但是现在进行手工检测发现, 这些域名网站都不再提供正常服务.其中, 2个网站长期处于维护中, 47个域名已经过期超过3个月; 剩余26个网站无响应.通常情况下, 一个合法网站是不会停止服务、不续费域名以及长期进行维护的.为了验证这一假设, 本文关注2015年6月Alex网站排名前2万名中的1万个网站(绕过知名网站), 发现其中96.5%的网站在2016年9月还活跃着.也就是说, 这75个域名网站如果是合法网站的话, 则1年后至少应该有72个网站能够正常提供服务.另一方面, 恶意网站存活时间都不长.如图 5所示, 生命周期长度超过85天的恶意域名不超过5%.换句话说, 这75个域名网站如果是恶意网站的话, 则1年后最多只有4个网站还能够正常提供服务.最后, 综合两方面的假设分析可知, 这75个域名网站是恶意网站, 置信度超过95%.

综上所述, 若除去无法确认的132个域名, 则剩余725个域名.其中, 能够确认的安全域名有53个, 即误报率至少为7.3%.而能够确认的恶意域名有269个(包括4个黑名单域名, 22个DGA域名, 31个VirusTotal确认的恶意域名, 137个色情、赌博和恶意销售网站, 75个无效、过期和正在维护中的网站).考虑到合法域名的生命周期长度基本上都超过1天, 且正常情况下, 未经注册的域名是不应该出现在DNS报文中, 若把224个活跃时间长度不足1小时的域名以及179个未经注册的域名也看成恶意域名, 则DAOS检测准确率可以达到92.7%.这与第3.3节中统计时间窗口设定为2小时的准确率90.5%和误报率2.9%相符, 说明DAOS在实际运行时也能保证较高的实时性和检测精度.

4 总结

为了保障ISP主干网运行安全, 本文实时检测流经主干网边界的DNS交互报文, 研究适用于主干网环境的上层DNS流量检测算法.

首先, 借助主干网边界采集的流测量数据, 间接获取域名与终端用户间的相互关系, 来弥补DNS缓存机制屏蔽终端用户解析请求的不足; 并在此基础上提出域名依赖性的概念, 通过测量用户的空间规模和活跃度, 从用户角度观察域名的外在使用情况; 而后, 为了提高算法的检测精度, 观察资源记录ANS中隐藏的域名使用位置信息, 从域名自身角度关注其内部资源部署情况.在传统测量IP-Flux和NS-Flux特征的基础上, 通过分析CND和FFSN内在的差异性, 提出一组新的测度以识别混入FFSN中的CDN; 再者, 主干网DNS流量检测需要对海量的域名对象进行实时或准实时地DPI检测.为了提高算法的检测效率, 一方面按照相同的二级域名将域名划分成组, 以组为单位进行检测; 另一方面使用CFS算法选择最优测度集, 并基于两个测度集提出多分类器的检测模型; 最后, 为了兼顾检测算法的及时性和准确率, 同时关注域名的当前活动特征和相关对象的历史活动行为, 使用较长时间的历史相关数据来弥补当前时间窗口长度较短导致数据不足的问题.

实验观察发现:对于某个域名对象, 在不依赖于先验知识的前提下, 经过两个小时的DNS活动监测, 检测准确率可以达到90.5%, 假阳性和假阴性分别为2.9%和6.6%.若用户期望获得更高的检测精度, 持续监测一周, 准确率可以提升到93.9%, 假阳性和假阴性也能减少到1.3%和4.8%.同时, 观察发现:在不依赖域名字面特征和黑名单先验知识的前提下, 本文的DAOS算法与现有面向上层DNS流量的通用域名检测算法Notos, Exposure和Kopis相比, 虽然使用最小数目的测度集, 但是具有最高的检测精度.最后, 在实用性测试中, 当统计时间窗口设定为2小时时, DAOS也能获得92.7%的准确率和7.3%的误报率.

综上所述, 本文提出的依赖性和使用位置测度组以及多分类器模型, 可以有效地用于主干网环境下的实时DNS流量监测; 也可以作为现有算法的补充, 提高它们的检测精度.

参考文献
[1]
Levchenko K, Pitsillidis A, Chachra N, Enright B. Click trajectories:End-to-End analysis of the spam value chain. In:Butler K, ed. Proc. of the IEEE Symp. on Security and Privacy. IEEE, 2011. 431-446.[doi:10.1109/SP.2011.24]https://uic.pure.elsevier.com/en/publications/click-trajectories-end-to-end-analysis-of-the-spam-value-chain
[2]
[3]
APWG phishing activity trends report. 2016. http://www.antiphishing.org/resources/apwg-reports/
[4]
Schonewille A, Helmond DJV. The domain name service as an IDS[MS. Thesis]. University of Amsterdam, 2006. http://staff.science.uva.nl/~delaat/snb-2005-2006/p12/report.pdf
[5]
Chatzis N, Popescu-Zeletin R. Flow level data mining of DNS query streams for email worm detection. In:Corchado E, Zunino R, Gastaldo P, Herrero A, eds. Proc. of the Int'l Workshop on Computational Intelligence in Security for Information Systems (CISIS 2008). Berlin, Heidelberg:Springer-Verlag, 2009. 186-194.[doi:10.1007/978-3-540-88181-0_24]https://link.springer.com/chapter/10.1007/978-3-540-88181-0_24
[6]
Chatzis N, Popescu-Zeletin R. Detection of email worm-infected machines on the local name servers using time series analysis. Journal of Information Assurance and Security, 2009, 4(3): 292–300.
[7]
Chatzis N, Popescu-Zeletin R, Brownlee N. Email worm detection by wavelet analysis of DNS query streams. In:Dasgupta D, Zhan J, eds. Proc. of the IEEE Symp. on Computational Intelligence in Cyber Security (CICS 2009). Nashville:IEEE, 2009. 53-60.[doi:10.1109/CICYBS.2009.4925090]
[8]
Chatzis N, Brownlee N. Similarity search over DNS query streams for email worm detection. In:Awan I, ed. Proc. of the 2009 Int'l Conf. on Advanced Information Networking and Applications (AINA 2009). Bradford:IEEE, 2009. 588-595.[doi:10.1109/AINA.2009.132]
[9]
Choi H, Lee H, Kim H. Botnet detection by monitoring group activities in DNS traffic. In:Wei D, ed. Proc. of the 7th IEEE Int'l Conf. on Computer and Information Technology (CIT 2007). Fukushima:IEEE, 2007. 715-720.[doi:10.1109/CIT.2007.90]
[10]
Choi H, Lee H, Kim H. BotGAD:Detecting botnets by capturing group activities in network traffic. In:Bosch J, Clarke S, eds. Proc. of the 4th Int'l ICST Conf. on Communication System Software and Middleware (COMSWARE 2009). Dublin:ACM Press, 2009. 2-2.[doi:10.1145/1621890.1621893]
[11]
Jiang N, Cao J, Jin Y, Li LE, Zhang ZL. Identifying suspicious activities through DNS failure graph analysis. In:Gunes MH, ed. Proc. of the 18th IEEE Int'l Conf. on Network Protocols (ICNP 2010). Kyoto:IEEE, 2010. 144-153.[doi:10.1109/ICNP.2010.5762763]
[12]
Yadav S, Reddy ALN. Winning with DNS failures:Strategies for faster botnet detection. In:Rajarajan M, Piper F, eds. Proc. of the Security and Privacy in Communication Networks. London:Springer-Verlag, 2012. 446-459.[doi:10.1007/978-3-642-31909-9_26]
[13]
Lee J, Kwon J, Shin HJ, Lee H. Tracking multiple C&C botnets by analyzing DNS traffic. In:Fahmy S, ed. Proc. of the 6th IEEE Workshop on Secure Network Protocols (NPSec 2010). Kyoto:IEEE, 2010. 67-72.[doi:10.1109/NPSEC.2010.5634445]
[14]
Lee J, Lee H. GMAD:Graph-Based malware activity detection by DNS traffic analysis. Journal Computer Communications, 2014, 49(12): 33–47. [doi:10.1016/j.comcom.2014.04.013]
[15]
Antonakakis M, Perdisci R, Lee W, Li NV, Dagon D. Detecting malware domains at the upper DNS hierarchy. In:Wagner D, ed. Proc. of the 20th USENIX Conf. on Security (SEC 2011). San Francisco:USENIX, 2011. 27-27.
[16]
Thomas M, Mohaisen A. Kindred domains:Detecting and clustering botnet domains using DNS traffic. In:Chung CW, eds. Proc. of the 23rd Int'l Conf. on World Wide Web. New York:ACM Press, 2014. 707-712.[doi:10.1145/2567948.2579359]
[17]
Holz T, Gorecki C, Rieck K, Freiling FC. Measuring and detecting fast-flux service networks. Network and Distributed System Security Symp., 2008, 1(5): 487–492.
[18]
Caglayan A, Toothaker M, Drapeau D, Burke D, Eaton G. Real-Time detection of fast flux service networks. In:Walter E, ed. Proc. of the 2009 Cybersecurity Applications & Technology Conf. for Homeland Security (CATCH 2009). Washington:IEEE, 2009. 285-292.[doi:10.1109/CATCH.2009.44]
[19]
Antonakakis M, Perdisci R, Dagon D, Lee W, Feamster N. Building a dynamic reputation system for DNS. In:Goldberg I, ed. Proc. of the 19th USENIX Conf. on Security (SEC 2010). Berkeley:USENIX, 2010. 18-18.
[20]
Bilge L, Kirda E, Kruegel C, Balduzzi M. Exposure:Finding malicious domains using passive DNS analysis. In:Nishide T, ed. Proc. of the 18th Annual Network and Distributed System Security Symp. (NDSS 2011). Virginia:Internet Society, 2011. 195-211.http://www.eurecom.fr/en/publication/3281/detail/exposure-finding-malicious-domains-using-passive-dns-analysis
[21]
Bilge L, Sen S, Balzarotti D, Kirda E, Kruegel C. Exposure:A passive DNS analysis service to detect and report malicious domains. ACM Trans. on Information and System Security (TISSEC), 2014, 16(4): 14–14. [doi:10.1145/2584679]
[22]
[23]
DNS-BH malware domain blocklist. 2015. http://www.malwaredomains.com
[24]
Malware domain list. 2015. http://www.malwaredomainlist.com
[25]
PhishTank. 2015. http://www.phishtank.com
[26]
Blacklist provided by joewein.net (JWSDB). 2015. http://joewein.net/spam/blacklist.htm
[27]
Krishnamurthy B, Wills C, Zhang Y. On the use and performance of content distribution networks. In:Paxson V, ed. Proc. of the 1st ACM SIGCOMM Workshop on Internet Measurement (IMW 2001). New York:ACM Press, 2001. 169-182.[doi:10.1145/505202.505224]
[28]
Hall MA. Correlation-Based feature subset selection for machine learning[Ph.D. Thesis]. Hamilton:University of Waikato, 1999.
[29]
VirusTotal. 2016. https://www.virustotal.com