贾云刚,孙诗慧,孙嘉伟,孙捷
(1.国家互联网应急中心天津分中心,天津300100;2.中国电子科技集团第十五研究所,北京100083;3.中国科学院信息工程研究所,北京100093)
现代恶意软件使用域名中继以传播恶意软件、CC服务器、发送垃圾邮件、托管诈骗和网络钓鱼网页。构建本地域特征分类器通常用于检测恶意软件域名。然而,由于局部特征(例如域时间模式和字符特征)不太稳健,特别是在攻击者可以在不影响现有攻击的情况下改变他们的字符特征从而毫不费力地逃避检测。由于DNS的灵活性和可重用性,其已成为攻击者的关键组件。近年来出现了各种类型的病毒变种浪潮,对基于域名局部特征甚至基于行为的特征的规避尤为突出,已经出现了逃避DNS局部特征检测的网络攻击。尤其是深度学习的快速发展,使得攻击者甚至有针对性地利用深度学习来混淆和逃避检测。没有成功检测到这些攻击也就不足为奇了。然而,当我们针对另一个变体调整我们的检测策略时,这些攻击仍在进化以逃避我们的特征检测。
基于行为的检测不同于构建局部域特征的一般方法。虽然攻击者也可以改变其行为特征来逃避检测,但攻击者必须个性化每个受感染的客户端。这种策略极大地限制了攻击者可用的资源,增加了沉重的成本并损害了他们的利益。现实情况是,他们总是会重用某些资源,从而导致他们的访问或控制行为的关联。但攻击者仍然狡猾地尽可能地改变其行为特征,例如使用虚假查询和客户端子分组、一次性查询和域通量、随机查询等以及其他规避策略。这些规避方法的共同点之一是降低域名的查询率,从而隐藏受感染主机的查询行为。因此,我们认为DGA检测中低查询率场景的覆盖对于基于行为的检测方法至关重要。我们利用流量中的时间相似性(来自同一源客户端的不同域名的共现)和空间相似性(域名被多个客户端访问)的关联规则提供了一种研究网络攻击的有力方法,它可以进一步帮助我们检测低查询率场景中的恶意域。
恶意域名检测一直是僵尸网络检测中的热门问题。与其他方法相比,DNS流量的检测的数据量更低,且发生在攻击之前,易于预防,而且DNS的公开透明特性和防火墙的穿透特性使得域名成为了攻击者的首选。过去几年已经针对僵尸网络提出了大量的研究进展。这些研究工作主要分为两类,基于域名特征的检测和基于行为特征的检测方法。
基于特征的方法通常使用特征工程和机器学习的手段用以检测DGA域名。Antonakakis等人[4]提出的Pleiades的DGA僵尸网络检测技术通过检查NXDo⁃mains的统计特征进行聚类(域名长度、访问频率等),然后使用统计多分类模型和隐马尔可夫模型分别来标记数据集和检测CC域名。该研究依赖于域名的词法特征和结构特征,专用于查找CC通信的域名。Yadav和Reddy[5]提出的方案利用成功解析域名的DNS响应和NX响应来检测基于DGA僵尸网络的C2服务器IP地址标识的系统。该系统使用成功解析的DNS流量,成功查询附近的NX响应以及失败和成功DNS查询的熵进行检测作为特征进行检测。
基于行为的方法通常使用域名的周期行为特征,组行为特征,域名的共现等网络或者主机的关联行为来检测恶意域名。Jehyun Lee等人[6]提出的GMAD通过构建具有时间和空间关联的域名旅行图来聚类相关联的域名,并通过恶意域名种子区分良性域名和恶意域名。Pratyusa等人[7]通过服务器日志构建域名访问的主机域名二分图,在该图上使用新年传播算法预测域名是恶意域名的概率。Issa Khali等人[8]提出了用域名解析出的IP间的共现情况,利用恶意域名种子利用宽松的共现规则去推理关联域名的恶意概率。
我们实现了FProbe的原型系统,其中包括以下组件模块:预处理模块(Preprocessing)、关联IP矩阵模块(Associated IP matrix,AIM)、频繁序列树模块(Frequent sequence tree,FST)和组分析器模块(Group analyzer),如图1所示。
我们在图1中简要说明了FProbe的系统架构。关联的IP矩阵和频繁序列树共同完成聚类功能。预处理模块用于采取一系列过滤策略来减少要处理的DNS流量的数据规模,AIM用于从大型IP-IP矩阵中提取关联主机,FST模块用于聚类相关域,组分析器模块最后使用图神经网络方法对这些同族DGA进行分类。关联的IP矩阵和频繁序列树共同完成聚类功能。
图1 检测模型系统架构
进一步来说,我们减少了正常用户和网络活动产生的噪音,同时保留了低查询率的可疑的DNS流量。对于剩余的NX域名,我们使用广泛用于产品推荐和词频共现中的共现矩阵来聚类受感染的主机。
对于共现矩阵给定一组关联主机,FProbe首先收集只涉及关联查询的DNS查询流,这将大大提高FST挖掘的性能。关联的IP矩阵的每一行都是无关的,我们可以并行运行后面的FST关联阶段。
2.1 急诊专科护士主观幸福感得分 128名急诊专科护士主观幸福感得分总分为(70.38±11.86)分,与全国女性常模(71.0±18.0)分比较差异无统计学意义(t=0.596,P>0.05)。各维度得分:对健康的担心(7.25±2.83)分,精力(17.73±3.41)分,生活的满足和兴趣(3.27±1.17)分,忧郁或愉快的心境(17.05±2.92)分,对情感和行为的控制(12.41±2.37)分,松弛和紧张(15.25±3.99)分。
然后利用宽松关联规则提取共现的多个NX域来识别所有可疑的相关AGD(Algorithm Generated Do⁃mains),缩小可疑NX域的数量。最后,这里的群组活动和特征构成了区分可疑域的特征。组分析器组件利用监督学习来区分AGD组。
首先,我们过滤掉多个客户端请求的DNS流量中的热门域名。请求域名的客户端越多,可疑的可能性就越小。通过这种方式,可以过滤掉大量的公共服务域、云服务器和流行的内容交付网络(CDN)。此外,我们还使用Alexa前100万个域作为白名单,以减少被动DNS数据量。对于剩余的数据,我们过滤掉流行软件或本地硬件生成的一次性域名,例如以“tracker”结尾的BitTorrent域名、以“in.arpa”结尾的路由器域名、以“McAfee”结尾等众多一次性域名。其次,NX域名可以由DGA恶意软件和良性主机生成,因此我们消除了与可疑NXDomains无关的噪音,例如滥用DNS、错误配置DNS。噪声滤波器阶段不仅减少了计算时间,而且提高了False Positive(FP)和False Negative(FN)精度。
在预处理阶段之后,我们仍然需要过滤掉与DGA恶意软件感染域无关的NXDomains,这是由每个NX⁃Domains之间的客户端共现度(CCD)决定的。
CCD使用源客户端的相似度进行估计,源客户端定义为关联IP矩阵的元素值。
相关的IP矩阵如图2所示。
图2 IP矩阵
关联的IP矩阵不同于360netlab的共现矩阵的方法。我们将共现矩阵用于不同的目的,我们使用该矩阵查找关联主机,360netlab使用矩阵直接查找关联域。在360netlab的方法中,他们计算域与矩阵的相似度,但是存在一个问题,他们使用的权重阈值不小于3,但这可能被攻击者利用,通过规避技术来逃避检测,例如“客户端子分组”[2]和一次生成域[1],可通过低查询率绕过此域相似性聚类。我们不计算域的相似度,而是使用矩阵的计算原理来计算查询客户端的相似度。一个域名的查询次数可以通过低查询率规避,但是源客户端的请求很难隐藏,如图3所示[3],在360netlab的矩阵,它的每个元素的权重为2,小于阈值3,但是,我们方法中源客户端的相似度,它的权重为4。
图3 一次生成域
AIM模块将最小化必须同时分析的DNS查询数据。域IP矩阵A定义为布尔矩阵A,Hosts和NX域名之间的查询关系以布尔矩阵中的一行布尔表达式来表示。
从计算原理可以看出,矩阵B的元素值为两个源客户端之间NX域的重合数。因此,基于域的重合数,我们可以很容易地得到IP对等点的相似度,可以从这个相似度矩阵中提取关联的客户端。
关联IP矩阵的另一个优点是每一行的关联IP与其他行无关,每一行都包含了所有关联关系,所以我们可以很容易地并行处理。另外,尽管ISP流量中的源客户端和域的数量非常大,但是网络中NX域名的重叠率很低,所以实际并行处理的关联域名请求流的数量是有限的。
该模块的目的是提取共现伴随关系,特别是检测由客户端子分组逃避行为(低查询率)引起的弱关联关系。FST使用树表示将域表示为节点,两个节点之间的边用于表示时间共现关联。时间共现是源客户端查询列表中的顺序访问关系。我们将客户端的查询列表作为一个整体处理,使用源客户端的整个域访问顺序作为节点关系,而不是仅仅使用两个域之间的共现关系。因此,在域关系切割阶段,我们不仅切割树的边缘以过滤出查询相似度低的域名,而且还重构树以保留来自同一来源的域的宽松关系。特别是,我们会重新连接一组请求中的断边(例如图4中的虚线)。
例如,在图4中,我们将数据流2和数据流3作为分支连接到数据流1的关联节点的骨干,例如,在图4中,我们将数据流2和数据流3作为分支连接到数据流1的关联节点的骨干上,根据前面提到的松弛关联规则,删除每个数据流中客户端相似率低的节点,并将同一流中的节点之间的断边连接为顺序关系边。
图4 频繁序列树
客户端相似度是衡量具有Jaccard相似度的域之间关联性的一个权值,已被应用于包括安全上下文在内的许多应用中。这里的相似度定义为首先第一步是从AIM的每一行构造FST,第二步在此树结构上迭代此过程,累加所有的树结构。
组分析器处理是从域名组中确定AGDS。根据DNS流量上的群组行为活动的公共属性来评估属于FST集合的域名。通过对群体行为活动特征的提取,确定提取的FST关联集合是否是基于DGA的僵尸网络。使用图神经网络进行有监督的学习分类,将每个群集的域名作为图卷积网络的节点,域名间的关系作为图卷积网络的边。基于僵尸网络的群体行为分析,我们定义了三种关系特征来检测每个子图内的行为一致性:①组内访问特征关系;②组内结构特征;③组内语言特征。
在访问特征的一致性方面,考虑到正常域更容易以随机的时间间隔分布,而恶意软件的访问更容易被规则行为触发,我们使用序列域间隔时间和查询计数的间隔时间作为图神经网络边的关联权重。
我们还使用查询次数的一致性来检测其组活动行为,因为正常域更可能分布在随机查询中,而恶意软件的访问更容易被组行为活动触发。
我们还利用域名长度和子域长度作为结构一致性的特征,字母数字字符的比例,聚类域中重复字符的比例作为语言一致性的特征,以一元、二元、三元分布特征作为统计一致性的特征,共使用7个特征,分别代表每个簇的通达特征分布、结构特征分布、语言特征分布和统计特征分布。然后使用图神经网络方法来区分每个集群是否是恶意的。在经过前期对于关联恶意域名的过滤和提取,数据的规模适用于图卷积网络。
图卷积神经网络(CNN)中的卷积本质上是一个共享参数滤波器(核),通过计算中心点和邻近点的加权和来提取空间特征。在给定属性无向图G=(V,E),其中V是一组大小为M的节点,E是一组边。还假设X∈RM×N是具有每个节点v∈V的N维属性的特征矩阵,而A∈RM×N是Ai,j=ai,j的邻接矩阵,如果存在具有相应权重ai,j的边e=,否则Ai,j=0。多层GCN的分层传播:
其中D-1/2A~D-1/2是对称归一化拉普拉斯矩阵,A~=A+I~,I是M维恒等矩阵,D是对角度矩阵。W(L)是层l的权重矩阵,H(L)是层l的输入激活,H(0)=X。σ表示激活函数(例如,RELU(.)=max(0,.))。只考虑2层GCN时,正向模型变为以下形式:
这里,W(0)∈RM×H是隐含层具有H特征映射的输入-隐含权重矩阵。W(1)∈RH×F是假设输出具有F个类别的隐藏到输出权重矩阵。Softmax激活函数将向量x的每个元素范围定为[0,1],并将所有元素的总和定义为1
对于每个时间窗口内的数据集,FProbe的方法都显示出了超过96%的TPR,并且平均误报率低于2%。根据表4,FProbe在每个小时的数据集中最多时有1.3%假阳性的错误检测。该假阳性产生的主要原因是由于Alexa域名的白名单或者公共服务器引起的,某些合法域名被用于恶意活动,导致与该域名关联的其他域名被错误地认为是恶意域名。但是客户端共享率能够尽可能多地明显阻断这种关联。
最后,将我们的方案与公开可用的FANCI进行了比较,它设计了3个方面,总共21个特征对NXDo⁃mains进行特征提取,通过随机森林分类器将NXDo⁃mains分类为DGA域名或良性域名。我们在数据集上应用FANCI的检测方法,结果如表1所示。两个方案都取得了很好的结果。但是FANCI仅用了域名的本地特征,我们的方案与FANCI相比,我们的方法不仅在组内关联特征上进行了分类,更在结构特征上构建了时间依赖性特征(顺序访问关系)和空间依赖性(NX⁃Domains的共现关系)。显然,我们的准确率明显优于FANCI,达到了很好的效果。
检测恶意软件的一个重大挑战就是恶意软件的逃避行为。多域名冗余、随机间隔活动、客户端子分组等恶意域名逃避行为为恶意软件的逃避检测提供了便利。这些方法都指向了低查询率的逃避方案,因此检测方法应该能够处理这种低查询率场景下的检测。我们将FProbe与FANCI、GMAD、BotGAD的低查询率性能进行比较。BotGAD在恶意软件DNS查询中使用时间同步DNS查询,以及在查询客户端集之间的相似性并考虑了几种规避技术,例如休眠和随机间隔活动,它还考虑了词汇相似性和网络IP地址特征检测,但是在词汇相似性和网络相似性差异很大的逃避行为中,其检测准确度较差。GMAD使用域名旅行考虑了每两个访问域名之间的时间顺序关系和空间上共同访问的共现关系,但是其只考虑域名两两之间的关系,没有考虑域名在其源客户端的整条访问流之间的关联关系,会导致某些关联域名之间的联系被切割,而且由于其是使用已知恶意域名去定位恶意域名组,因此恶意域名种子的选择影响非常大。FProbe与GMAD差异的区别主要是,FProbe对于被相同恶意软件感染的低查询率的源客户端的聚类能力使得其能够快速定位关联域名,BotGAD检测不到低访问率的组活动,而GMAD也具有低查询率的检测能力,但是由于单一的查询依赖关系会丢失分组中的部分域名见表1。
表1 实验结果
攻击者为了逃避检测系统实施了各种逃避方法,不止从域名特征上进行逃避,还从行为特征上进行逃避,越来越智能的恶意软件对检测系统提出了挑战,在本文中,我们提出了一种名为FProbe的僵尸网络DGA检测方案,该方案使用关联矩阵发现有关联的受感染主机,然后使用频繁序列树聚合有时间访问关联的域名和空间上共现的域名,最后以监督的方法使用共同的组行为活动区分僵尸网络组和良性域名组,关联矩阵和树聚类整形的功能同时保证了低查询率恶意域名的检测能力。我们在校园网数据集中实施了FProbe,其结果表明我们的方案具有更高的精度和可扩展的能力。我们的方法将有助于更有效地防止僵尸网络的感染造成的损害。