Systematic Mining of Associated Server Herds for Malware Campaign Discovery(SMASH)阅读笔记
基本概念
1. 恶意软件
恶意软件是互联网上存在的重要威胁之一。2012年以来,基于Web的攻击数量增长了近三倍,75%的恶意软件使用HTTP协议进行攻击和通信。
恶意软件使用HTTP协议作为传播和攻击的媒介的原因:
1. 大多数网络都使用HTTP协议,因此恶意软件使用HTTP协议传播更容易感染受害者,使用HTTP协议通信更方便;
2. 现行网络存在大量的正常HTTP通信包,恶意软件的流量可以很容易隐藏其中;
3. 大多数HTTP请求使用域名查找服务器,恶意软件可以通过使用Fast-Flux来避免IP屏蔽或者隐藏自己。
2. 恶意软件的通信行为与攻击行为
通信行为指恶意软件与其服务器的通信;攻击行为指恶意软件针对良性服务器的攻击。
在上图所示的通信行为(a)中,两个客户端向多个C&C域名服务器利用login.php发送HTTP请求。恶意软件通常使用类似的域名机制来避免检测,它们实际上共享同一IP地址。这里的所有C&C域名服务器构成一个恶意活动群体。
上图所示的攻击行为(b)是一个ZmEu扫描攻击活动,两个客户端在利用已知的代码注入漏洞扫描七个良性服务器的setup.php。在这个事例中,客户端扫描phpAdmin的默认路径来尝试注入,这些良性服务器上都有目标文件setup.php。这七个目标良性服务器共同构成了一个恶意活动群体。
研究现状
现有的检测工作主要针对恶意行为,包括依赖于签名、客户端行为的模式匹配和对于某个服务器的监督学习。
对于一个普通的服务器来说,普通用户的行为与恶意软件有明显区别。对于普通的服务器来说,提供许多不同的script或页面供用户访问,用户倾向于访问不同页面,执行不同的操作。然而恶意的服务器是为了明确的目的搭建的,如恶意软件下载,它只需要少数几个明确的script和页面来处理被感染机器的请求。本文发现在同一类型的恶意行为中,服务器之间存在一些关联。例如,它们尽管拥有不同的域名但是有相同的IP地址,或者它们的域名由同一机构在相近的时间注册。
1.基于DNS的恶意软件检测
Antonakakis和Bilge等学者提出,使用不同的域名特征来评估单个域名的可靠程度的方法,如顶级域名的数量、与域名相关的恶意软件样本数量和域名请求数量的变化等。但是这些检测方法无法检测攻击涉及到的服务器,并且需要使用恶意域名的种子来训练检测系统。 Antonakakis还提出了一种针对由DGA生成的恶意域名的检测方法,这个方法对于其他恶意域名生成方法则不适用。Kopis方法可以被用于检测一般的恶意域名,但它需要监测DNS上层结构中的流量,限制了它的应用领域。
2.基于签名的恶意软件检测
Nelms和Perdisci等学者提出了基于签名的恶意域名检测方法,通过提取恶意软件流量中的签名再将签名应用于实时网络监测中。Perdisci提出一个将恶意软件请求样本进行聚类,生成结构特征的检测系统,生成的结构特征用于在实时网络中检测被感染的主机。Gao研究服务器之间的时间关系来推测那些容易出现在种子域名中的恶意域名。Li研究了恶意软件服务器之间的拓扑结构,能够从一小组种子服务器推断出其他的恶意服务器。但是上述方法的性能都局限于恶意域名种子,因此不能够用于检测新的、未知种子的恶意软件活动。
3.基于集群的恶意软件检测
基于集群的检测技术在垃圾邮件和恶意软件的检测方面也有广泛应用。Zhang提出了一种利用普通服务器之间的关系来检测垃圾邮件的方法。近期,Invernizzi提出了一个检测恶意软件分发网络的系统,该系统使用了四种技术来对候选连接分组,再使用邻接图来进一步降低误报。Stringhini提出了一种通过HTTP重定向设置来检测恶意网页的方法,该方法首先根据TLD、域名、页面、IP、和参数的不同组合对URL进行分组,再使用28个特征对这些分组进行分类。上述检测系统的缺陷在于,要么需要针对特定的攻击渠道,如论坛垃圾邮件、HTTP重定向、恶意软件分发网络,或者需要庞大且富有多样性的用户群,这些需求限制了检测方法的实用性。
4.其他检测方法
Gu等人提出了一种通过客户端主机上寻找类似网络行为的基于异常的僵尸网络检测体系,该系统将拥有相同异常模式的一组机器判定为僵尸网络。
Yen等人提出了一种在有相似操作系统的内部主机之间通过聚合有共同的目的地址或拥有相似载荷的流量来检测恶意软件的方法。
上述工作都基于感染相同木马病毒的主机拥有共同的C&C通信模式,因此都通过分析客户端之间的关系来判断感染木马的主机。
系统设计与实现
相关服务器集群的系统挖掘(Systematic Mining of Associated Server Herds,SMASH)的主要目的是通过检测网络范围内的HTTP通信来检测参与恶意活动的服务器集群。其中恶意活动包括向良性服务器通过HTTP协议发起攻击和恶意服务器之间通过HTTP进行的通信。不同于前文提到的独立研究单个服务器的方法,本文提出的检测方法研究存在相似行为的所有服务器之间的不同关系。本文将这些参与同一恶意行为的所有服务器称为一个恶意活动群体。
SMASH的架构如下图所示。SMASH以HTTP网络流量作为输入,包含五个组件,分别为流量预处理、ASH挖掘、ASH关联、筛选和恶意活动群体推测。
1.流量预处理
流量预处理的目的是筛选输入流量,减少SMASH需要处理的流量。筛选过程分为两步。
首先,假设拥有相同二级域名的域名属于同一群体,例如 a.xyz.com.cn和b.xyz.com.cn均属于xyz.com.cn,基于服务器的角度,这二者可以认为是一个服务器,不做区分。一些CDN(Content Delivery Network)网络服务器和云服务器会因此被认为是一个服务器,例如Facebook的CDN服务器都会被聚合为"fbcdn.net";亚马逊的云服务器被聚合为"amazonaws.com"。按照这个聚合方案,可以减少60%需要处理的服务器。
随后根据域名的声誉将知名的域名默认为良性服务器不作为后续检测的目标,本文将服务器的声誉定义为与其通信的客户端数量,通过利用客户端的请求来将公共服务器从输入列表中移除。在这里利用逆文本率(IDF)来筛选公共服务器的声誉值,将IDF的筛选阈值设置为200,这个阈值非常谨慎地仅仅将非常热门的服务器过滤,留下了99%的服务器。
经过上述两个步骤后,输入流量减少了58.6%。
2.相关服务器集群挖掘
ASH的目的是找到在同一恶意活动群体中密切相关的服务器集群。在此,本文定义了一个主要维度和三个次要维度来描述服务器之间的关系,并且系统地挖掘相关服务器集群。尽管每个维度自身生成的相关服务器集群不能够区分恶意活动群体和良性服务器,但是多个维度的结果相关联后更有可能发掘出恶意活动群体内的服务器集群。
按照各个维度的特征提取,将服务器以特征向量的形式表示,以此聚类,寻找相似的服务器。由于恶意活动群体在不同维度上聚类的结果中被选出来的服务器会不同,所以很难给每个维度赋予唯一权重。为了解决这个问题,本文使用客户端相似度作为主要维度,因为同一恶意活动群体的恶意服务器的客户端往往相似(但不是相同),这样既可以抵御攻击者的混淆手法在各个维度特征造成的影响,又可以实现更可靠的聚类分组。每个次要维度从特定的角度来表征不同服务器之间的关系。本文设计的SMASH是一个可拓展系统,当发现了新的感兴趣的维度时可以将其添加到新的维度中。
1)主要维度
本文使用客户端相似度作为主要维度,两个服务器之间的客户端相似度取决于与它们连接的客户端的交集。定义服务器Si和Sj之间的客户端相似度计算公式为:
其中,表示与服务器连接的客户端集合,比值表示常见客户端的重要性。这个公式满足本文提出的,当两个服务器的重要客户端十分相似时,两个服务器相似的观点。
由于恶意服务器一般不会被良性客户端访问,而被感染的客户端通常访问同一组可疑服务器,于是可以将有相同经常访问客户端的服务器归为同一ASH。与此同时,系统还会建立一个通信图G=(V,E),其中V代表所有服务器,E中的边表示服务器i和j之间有一组共享的客户端,边上的权重代表了两个服务器之间的客户端相似度。随后在图中使用聚类算法挖掘ASH,它可以在短时间内实现自动化模块分区。
2)次要维度
2.1)URI文件相似度
将URI的相似度作为一个次要维度,是因为同一恶意行为中可能会涉及相同或相似的URI文件,比如针对同一个脆弱文件发起的web攻击,对于不同的目标服务器,需要访问的是同一目标文件。不同的C&C服务器在同一个恶意活动群体中会使用相同的脚本文件来处理客户端的请求,于是它们应该有相同的URI文件。
系统提取向服务器发起的HTTP请求中的所有URL文件,而不是整个URI路径,这是因为服务器的配置不同,同一个文件的访问路径也会略有差异。于是提取URI中最后一个"/"开始直到问号的子串作为URI文件名,这个位置通常是服务器上用于处理客户请求的文件或脚本的路径。
由于攻击者可能对文件名使用混淆技术,使得同一恶意活动群体中不同服务器有看似不同的URI文件。为了避免被混淆技术绕过该维度的检测,本文按如下方法定义两个URI文件之间的相似度。首先定义一个URI文件名的长度阈值len(本文len取25),
如果URI文件名长度小于等于len,定义两个文件的相似度计算公式如下。即当且仅当两个文件名完全相同,才认为这是同一文件。这是出于经过混淆处理过后的文件名往往较长,过短的文件名不会是经过混淆处理的。
如果URI的文件名长度大于len,则根据字符出现的频率来判断其相似度,定义两个文件的相似度计算公式如下。
其中,,指文件的字符分布向量。
两个服务器上文件的相似度计算方法如下。
其中,指服务器上被访问的文件列表中索引为j的文件。
和客户端相似度的计算相似,乘法的左边表示文件对于Si的重要性,右边表示文件对于Sj的重要性,于是,当两个服务器的重要URI文件相似度足够高,它们将被分为同一SAH。
2.2)IP地址集相似度
恶意服务器可能使用fast flux技术来躲避基于域名的检测,因此多个恶意域名可能使用的是同一IP地址。例如数据集中的skolewcho.com, switcho81.com, jikdooty0.com和swltch081.com都使用相同的IP地址。
基于恶意域名可能拥有相似的IP地址的考虑,本文将IP地址的相似度作为一个次要维度来考虑,计算方式如下。
2.3)Whois相似度
通过研究恶意服务器的whois信息及其关系,本文发现恶意服务器极大可能有相同的注册信息,尽管它们的注册人不同,但是注册名称、家庭住址、电子邮件、电话号码和服务器名称相同。本文通过两个服务器Whois信息中共享的字段个数来评估两个服务器的Whois相似度。
3.相关服务器集群的关联
当通过上述维度处理后,得到许多ASH,再将这些ASH关联起来,以发现恶意活动群体。如果一个ASH在多个维度中出现,那么这个ASH参与恶意活动的可能性极大。在这个环节中,将主要维度与次要维度的交集生成为新的ASH。
例如由与组成了一个新的ASH,这个ASH由来自主要维度m的和次要维度d的。本环节使用如下的方式计算每个新生成的ASH的可疑程度。
其中,,erf()是S型高斯误差函数,本系统取,是一个ASH,它包含服务器的维度m,是ASH的密度。
ASH的密度由全连接图的边数|E|与顶点数|v|计算得到,即。一个集群的密度越大,它越有可能属于或包含一个恶意活动群体。
计算完所有新ASH中每一服务器的可疑程度后,把低于阈值的服务器从集群中移除,仅包含一个服务器的集群也不满足需要寻找的恶意服务器集群要求,将服务器从检测目标中删除。
4.筛选
本文定义了两种需要处理的噪音ASH。
1)重定向组:由于属于同一重定向链而被分到同一ASH的服务器集群。
2)引用组:由于被同一登陆服务器所引用而被分到同一ASH的服务器集群。
这是由于在重定向组和引用组中,当一个客户端访问登陆服务器,后续将会自动访问重定向链中的其他服务器或嵌入式服务器。
在处理噪音时,为了不误把恶意服务器认为是噪音而从检测目标中删除,如果噪音组中的服务器有相同的IP地址、URI文件或Whois信息,则使用登陆服务器取代重定向链中的所有服务器,而不是把整个噪音组都删除。
筛选环节通过向ASH中的每个服务器发送HTTP请求来收集访问路径,确定重定向链;通过从输入的网络流量中提取Referrer字段来获取引用者信息,由此判断流量是否属于同一引用组。
5.恶意活动群体推测
本环节通过前述步骤得到的ASH来推测特定的恶意活动,但是得到的参与活动的各个恶意服务器并不一定是完整的恶意活动群体的活动。
例如,某僵尸网络的宿主机会先从某个服务器下载加密文件,在尝试连接其他C&C服务器,从服务器获得下一步指令。那么在ASH推测中,会得到两个不同的集群,其中一个集群由下载文件的行为产生,另一集群由与C&C服务器连接的行为产生。这样会使得对下载文件行为的善恶性判断十分困难。为了解决这样的问题,本文提出一种改进方法,即根据客户端的相似性重建原始攻击行为,合并位于主要维度中同一集群的两个ASH。在主要维度中,捕获的是恶意活动中的连接行为,在该维度中访问不同的文件或IP的客户端仍旧划分到同一ASH。
实验数据
1.网络流量
本文使用的输入数据,来自大型ISP网络边缘的不同时间的住宅用户真实数据,包括流入与流出的流量,包含TCP流量和UDP流量,将流量包中的前5000比特数据(包含目标服务器的IP地址和域名信息)作为样本。数据集选择了不同时间点的流量,以便于考察SMASH随时间推移的表现,数据包含2011年10月某一天的流量(),2012年8月某一天的流量()和2012年8月某一周的流量(),具体数据规模如表I所示。
2.基本事实
基本事实数据是用于验证SMASH检测结果的数据,包含两部分,一个是当下流行的商业IDS的检测结果,另一个是知名在线黑名单。
1)商业IDS:使用当下流行的商业IDS来对同样的流量进行检测,由于IDS的版本不断更新,使用了同一IDS两个时期的不同版本(2012和2013.06)分别对流量进行了检测。
2)黑名单:将服务器域名在知名的黑名单中验证,使用的黑名单包括Malware Domain Block List, Malware Domain List, Phishtank, SpyEye Tracker, ZeS Tracker和一些在线黑名单,如Virustotal, Web of Trust(WOF)与WhatIsMyIPAdress。在任意黑名单中发现该服务器域名,则认为是恶意服务器。
实验结果
1.推测结果
1.1)恶意活动群体的数量
设置不同阈值的检测结果如表II所示。其中
IDS_2012/2013_total 推测结果中的所有恶意服务器均被2012/2013版本的IDS检测出是恶意服务器;
IDS_2012/2013_partial 推测结果中的部分恶意服务器被2012/2013版本的IDS检测出是恶意服务器;
Blacklist_partial 推测结果中的部分恶意服务器在黑名单中得到验证;
推测结果中的恶意服务器既不被IDS认为是恶意服务器,也没在黑名单中匹配到,经过检查HTTP请求响应的状态码并尝试向HTTP服务器发送请求以验证服务器是否存在。如果推测结果中至少一半的服务器返回错误码或服务器不存在,则认为该集群为可疑集群,标记为Suspicious。
有一些恶意服务器由于没有足够的信息而漏报。
误报主要由两大原因构成:Torrent与TeamViewer。Torrent客户端通过请求script.php来与大量的torrent服务器连接,导致这些流量中有相同的文件名和IP地址;TeamViewer有一个庞大的服务器集群,客户端通过它们来检索ID,这导致这些服务器共享相同的共享路径名称。
处理了上述误报后的误报情况记录为FP。
1.2)恶意活动群体中的服务器数量
设置不同阈值的检测结果如表III所示。其中,
IDS_2012 2012版本IDS检测出的恶意服务器数量;
IDS_2013 2013版本IDS检测出的恶意服务器数量;
Blacklist 黑名单匹配到的恶意服务器数量;
Suspicious 符合上文所述的可疑服务器数量;
New Servers 未被IDS和黑名单检测到,但是根据其请求路径、用户代理和参数的模式可以确定是恶意服务器。
结果显示SMASH发现了许多IDS和黑名单无法检测到的恶意服务器,高达86.5%的恶意服务器无法仅通过IDS或黑名单检测出来,这意味着SMASH在检测0day漏洞方面有出色表现。
经过分析漏报数据(False Negative),本文发现了两种会产生漏报的原因:
1.有40个恶意服务器在Cycbot, Fack AV和Tidserv中被标记,但没有被任何次要维度检测到。
2.因为共享了引用者而在筛选过程中被删除。
1.3)恶意活动群体的活动规模
本文使用参与恶意活动的服务器与客户端数量来表示恶意活动群体的活动规模。75%的恶意活动涉及的服务器数量少于18个,这说明大多数的恶意活动群体并不会使用过多的服务器;剩余的涉及大量服务器的恶意活动群体,主要是由Web扫描或iFrame注入攻击的受害服务器构成。75%的恶意活动都只针对一个客户端,这表明基于客户端集群的恶意软件检测方法在这种情况下的检测效果会比较差。
2.检测具有多样性与持续性性的恶意攻击
恶意软件攻击的多样性由恶意通信与Web攻击组成。恶意通信集群由恶意服务器构成,如涉及僵尸网络活动和Web漏洞利用的服务器;Web攻击集群则是由被害服务器构成。
恶意软件活动的持续性指保持与宿主机长时间通信的一组服务器;敏捷性指新发现的被宿主机访问的服务器。
SMASH在对各种类别的恶意软件活动活动群体的检测均有杰出表现,在检测结果中还展示出大多数恶意活动群体是敏捷性的,恶意软件可能会每天都改变恶意服务器域名来避免被基于域名的检测方法所检测。
小结
SMASH旨在监控网络边缘的流量,可以部署在企业内网或者ISP网络。该系统的计算成本主要由计算相似度消耗,若涉及服务器数量为N,则计算复杂度为,可以使用Bloom过滤或稀疏矩阵乘法来加速运算。
SMASH是一个轻量级可拓展的系统的,在主要维度不变的情况下可动态接入新的次要维度作为检测标准。
SMASH是一个基于服务器集群的检测系统,如果恶意软件使用单服务器则无法检测到恶意活动。另外,SMASH使用二级域名作为被检测的服务器单位,所以无法检测到使用动态DNS或托管在第三方云平台上的恶意服务器。
SMASH的检测结果依赖于次要维度产生的ASH与主要维度产生的ASH之间产生关联,攻击者可能通过控制不同维度的检测结果来迷惑本检测系统。例如可以通过访问正常服务器上的同一URI文件来混淆URI文件维度与主要维度的关联,因为正常用户也会访问这些正常服务器,为了应对该策略可以增加相应的筛选措施;或者使不同的木马访问不同的恶意服务器,使得这些服务器不会出现在同一ASH中。