APP下载

一种在大规模网络中挖掘恶意软件分布的方法

2020-07-29邱凌志顾弘

计算机与网络 2020年9期
关键词:报文后缀域名

邱凌志 顾弘

1引言

恶意软件是互联网中最严重的网络安全威胁之一,受害主机一旦感染恶意软件便可能被用作发送垃圾邮件、进行拒绝服务攻击以及窃取敏感数据。作为攻击的关键步骤,攻击者需要将恶意软件安装在尽可能多的受害主机上。攻击的过程一般分为3个步骤:①注入代码,这一阶段攻击者的目的是在受害主机上执行一小段代码,这段代码通常被称为shellcode。比如,攻击者首先准备一个包含漏洞利用代码的网站,当受害者访问恶意网页后,漏洞利用代码强制浏览器执行shellcode;②注入成功后,shellcode下载真正的二进制恶意软件并加载;③恶意软件一旦启动,这一阶段将呈现其恶意行为,典型的行为比如连接远程命令控制服务器(C&Cserver)。

对于保护用户避免受到恶意软件侵害,过去的研究主要关注于第①阶段与第③阶段。一部分工作是通过对挂马网页的检测,将相关域名或url列入黑名单,阻止浏览器访问恶意页面;另一部工作则是聚焦于控制阶段,目的在于检测终端恶意代码的执行,例如,反病毒软件通过特征识别恶意软件。然而,恶意软件可以通过域名变换、文件重打包和分布式主机等手段逃避检测。

目前为止,很少有研究关注到第②阶段,即shellcode下载恶意软件安装的过程。shellcode通常利用http请求从远端服务器下载程序,并在本地安装执行恶意软件。这些请求一般通过用户浏览器进行简单的功能调用,从网络角度来说,与用户的正常软件下载请求很难区分。可是,当进入大规模网络,便会发现大量恶意软件通过不同主机下载,而这些恶意主机又均与某一服务端相关,呈现出恶意软件基础设施分布,这种分布与CDN网络有些类似,但仍有不同。

本文提出一种在大规模网络中检测恶意软件分布的方法,该方案聚焦于恶意软件基础设施之间的网络关系,在大规模网络中区分正常和恶意流量,用以发现传统检测方法无法检测到的恶意软件。作者已经实现了方案的原型系统,并使用真实的2天城域网级别流量作为训练集、7天城域网级别流量作为测试集进行实验评估,结果表明方案能够在大规模网络中有效挖掘恶意软件网络分布,2个数据集对应的检测准确率分别为87.3 %,64.2 %。此外,实验表明方案还具备检测未公布的恶意软件网络基础设施的能力。

2恶意软件研究

作者对超过500条近半年的互联网公开威胁情报研究发现,恶意软件无论是利用暴力破解各类服务端口方式传播、或者是利用钓鱼邮件方式传播、亦或是利用浏览器漏洞的水坑攻击方式传播,在注入shellcode之后,会从服务端下载真正的恶意程序,然后开展挖矿、勒索、信息窃取、组成僵尸网络等恶意行为。上述行为可以使用洛克希德·马丁公司提出的威胁情报驱动防御模型“网络杀伤链(Cyber-Kill-Chain)”进行描述。该模型用于指导识别攻击者为了达到入侵网络的目的所需完成的活动,共7个步骤:侦察跟踪、武器构建、载荷投递、漏洞利用、安装植入、命令与控制、目标达成。发现前4个步骤的攻击方式具有变化多、更新快的特点,恶意软件使用加密、混淆方式逃脱检测,甚至利用“0day”“1day”“Nday”等最新漏洞,不利于提炼通用的恶意软件检测方法。后面2个步骤———安装植入、命令与控制呈现出一定通用性,一般利用木马后门通过Web访问方式下载真正的恶意程序。我们的研究正是聚焦于这一阶段。

基于这500多条公开威胁情报的IOCs信息,提取了992条恶意url记录。其中使用https协议的记录为57条,占比5.7 %;剩余935条记录全部使用http协议,占比达到94.3 %。可以看出,虽然越来越多的互联网应用使用加密的https协议,但恶意软件由于成本低、传播便利的因素,大多数仍使用http协议。因此,我们的研究对象也聚焦于http协议报文。

在这992条恶意url中,按照文件后缀类型统计,exe后缀最多,txt后缀次之,占比分别达到41 %,8 %。我们对所有恶意url进行重放,检测访问请求所下载的文件类型,选取部分代表性的后缀类型。我们发现,exe后缀对应的文件100 %为可执行类型application/octet-stream;zIP后缀对应的文件75 %为可执行类型application/octet-stream,25 %為html文本类型text/ html;而png后缀对应的文件无一例图片类型image/gif,50 %为普通文本类型text/plain,41.7 %为可执行类型application/ octet-stream,剩余8.3 %为html文本类型text/html。可以看出,恶意软件通过改变文件后缀躲避检测,我们的检测系统将会识别这种情形。

3系统设计

MDD系统的整个检测过程可以分为3个阶段:提取阶段、筛选阶段、分析阶段。

3.1提取阶段

MDD系统的输入数据为大规模网络中的http流量。根据ISP提供的流量数据,每日的http请求报文数量达到10亿级别。我们不可能直接检测这一数量级的报文,因此,在这一阶段我们的目的是利用白名单方法过滤掉大部分非恶意流量。

正如第二章讨论的那样,恶意软件经常修改后缀类型,因此,不能基于http返回报文中的Content-Type字段判断文件类型。我们需要重放http请求报文,根据下载文件的MIME字段判断文件的真实类型,结果如在预先制定的白名单范围内,则过滤掉该报文。否则,我们提取源IP、目的IP、文件hash、完整请求url等字段生成待检测记录。

3.2筛选阶段

在筛选阶段,针对恶意攻击者常用的4种技术进行检测。

①服务端多态。为了躲避检测,恶意攻击者会经常改变服务端恶意文件下载路径,甚至使用不同的域名,这些方式被称为服务端变化。对此特性,我们将进行检测。

②分布式主机。恶意攻击者为确保恶意服务端有效,通常会使用多个服务端,这种分布式的主机与CDN网络有些相似。在这里,我们使用机器学习的分类算法区分正常CDN与恶意分布式网络。

③专用恶意主机。恶意攻击者可能通过重定向技术将受害主机重定向至恶意域名,而这些专用恶意域名与正常网页在html页面、CSS文件、JavaScript脚本程序方面有许多不同。我们对此加以区分。

④挂马网页。受害主机首先通过浏览器访问恶意网页,被注入shellcode后会再次连接恶意服务端,我们可考虑利用User-Agent字段识别这样的网络行为。但用户使用不同浏览器访问同一网站或者NAT网络可能造成误报,对此我们需要加以区分。

3.3分析阶段

基于上述2个阶段筛选出的可疑记录,生成恶意软件基础设施网络分布图,直观展现恶意软件的网络分布。恶意软件基础设施网络分布图是无向图,由以下元素构成:完整url、文件路径uri、文件名file、服务端IP、客户端IP、完整域名FQDN、顶级域名domain以及文件hash值。

4系统实现

4.1过滤预处理

在提取阶段,首先将存储在HDFS的海量http流量请求报文检索出来。为了提升下一步重放报文的效率,检索过程同样采用域名白名单的方法。域名白名单的制定由统计平均和经验总结相结合,包含传统互联网头部企业域名,例如baidu.com,qq.com,也包含新兴流行互联网应用域名,例如yximgs.com, miwifi.com。由此,我们制定了域名白名单top100。

第二步,遍历检索出的http请求报文,如果包含文件下载的请求,则重放该报文。然而,下载文件开销很大,尤其是大文件。幸运的是,我们可以使用wget命令只下载文件的前1kb。此后,通过linux的file命令判断文件类型,file命令通过文件头判断文件真实类型,而不依据文件后缀。如果命中MIME白名单(如视频、音频、图片等格式)则舍弃,否则计算文件hash值,并提取IP,url,user-agent等字段作为一条记录,进入下面检测阶段。

4.2服务端多态检测

第一个检测机制是捕捉恶意软件发布者尝试绕过反病毒软件基于签名检测的行为。反病毒软件会对已识别的恶意程序进行hash签名,为了避免在终端被检测到,恶意软件发布者频繁地变更他们的恶意文件。典型的,恶意软件发布者利用一系列不同的加密密钥对恶意程序进行重打包。检测方法是检索满足如下2个条件的下载记录:①只有单一的uri;②下载超过个不同的文件,文件依据上一阶段的hash值进行区分,的取值我们在实验中将进行评估。实际的例子触发这一检测机制的uri如/dlq.rar,该uri有多种域名变化,如www.9530.ca,585872. com。可以看出,发布者不仅重打包恶意软件,而且通过域名变换增加了恶意软件的鲁棒性。

4.3分布式主机检测

恶意软件发布者大多会采取一些手段确保自己的恶意软件长期有效,从而获取更多收益,因此,会在许多服务主机及域名上对恶意软件进行备份,这与传统的内容分发网络CDN类似。但是和传统的CDN有些不同的是,恶意软件发布主机需要防止杀毒软件的封杀,因而会对恶意软件发布集群进行一些改造,我们的研究正是利用这些被改造的特性来分类恶意软件发布集群。我们的方法分为2个阶段:首先,我们试图找到CDN;然后我们使用一个分类器区分正常CDN与恶意CDN。

第一步,根据文件hash值将所有记录进行聚类,即当2条下载记录拥有相同的hash值h,而对应的url分别为u1和u2时,将这2条记录关联,形成一个cluster。如果2个cluster存在相同的domain或服务端IP,则将这2个cluster合并为一个。我们认为所有的cluster至少包含2个记录,否则无法构成CDN网络。

第二步,使用机器学习的方法在上一阶段的结果中区分正常CDN与恶意cluster,检测分布式恶意软件主机,通过对数据手工打标签的方式,训练我们的分类器。在此选择随机森林的算法作为分类器,以满足需求。根据对恶意软件基础设施的研究,我们总结以下6个分类特征:

域名共存:为了减少开销,恶意软件常常将很多域名放在同一台服務器上,这台服务器提供同一个恶意软件,只是软件名不同,正常CDN不会出现这种情况,因为这种行为违反了信息冗余性和负载均衡,这个特征值等于一个cluster中所有的域名数、IP数。

顶级域名数:为了逃避域名黑名单的检测,恶意软件通常会使用一系列不同的顶级域名,正常的CDN一般使用同一顶级域名下的二级域名。

每个域名上的路径数、文件名数:正常的CDN为了使用户下载更加方便快捷,会有良好的目录组织而发布恶意软件的集群逃避黑名单检测,通常会在集群主机中设置不一样的目录结构与文件名。对于上述特征我们计算路径数、文件名数或域名数。

每个域名上的uri数量:恶意软件发布者在每个域名上通常只使用很少的uri数量,最常见的情形只有一个。相较而言,正常的CDN有大量的目录结构。我们将此作为筛选恶意软件的一个指标。对于这一特征,我们计算集群域名中所有uri数量或域名数。

文件类型:正常CDN会提供不同的文件类型供用户下载,而恶意软件服务端提供最多的是可执行文件。我们计算集群中所有主机的可执行文件数或所有文件数,作为特征指标。

4.4专用恶意主机

恶意软件发布者经常使用专用主机隐藏在僵尸网络幕后,因此,难以被检测到。但是,这些专用恶意主机也有很明显的特征,我们注意到,这些主机通常只会存放少量的可执行文件,很少有其他类型的文件,最多包含个别html页面,因为它的首要目的就是发布恶意软件。这与提供正常Web服务的主机有很大不同,正常主机包含了html页面、css文件以及JavaScript脚本等,利用这个特征,可以检测出专用恶意主机。据此,我们发现了112adfdae.tk这个域名,它被KingMiner挖矿网络用来传播挖矿程序。

4.5挂马网页

受害主机通过浏览器访问恶意网页,被注入shellcode后会再次连接恶意服务端,在某些情况下,存在shellcode的服务器和存放恶意软件的服务器是同一个主机。观察这种情形的网络流量行为特征:连续2条请求报文,一条来自浏览器,一条来自shellcode。因此,我们的目标是寻找来自同一源IP,但user-agent字段有不同的连续http请求报文。其中,第一个请求的文件类型必须是可执行文件。然而,NAT环境会对检测产生干扰,对此,我们可以设定一个请求报文的时间间隔阈值,实际检测过程中设定为1分钟,当时间间隔小于这个阈值时,则认为其是恶意软件行为。符合这一策略的是znshuru.com域名下的setup_pgytg001.exe文件,浏览器下载后会再次下载.dat格式的恶意文件,user-agent字段为NULL。

4.6恶意软件基础设施网络分布图

正如3.3节所述,定义恶意软件基础设施网络分布图为筛选出的可疑记录之间存在关系的恶意行为集合。一个最简单的网络图由8个节点构成,我们关心以下节点之间的关系:

url属于同一完整域名FQDN或顶级域名domain;

同一url下载的不同文件hash;

同一服务端IP的不同域名;

相同uri或文件名file。

开始图中只有一个url节点,然后我们添加url到各节点的边,当2条记录存在上述关系时,合并2条记录。如此迭代,直到图无法增长或达到预先设定的大小(比如800个节点)。

一旦恶意软件基础设施网络分布图生成,安全分析人员可以直观地看出图中的哪个url节点或服务端节点(包括域名、IP)是恶意的。这基于简单的规则:如果节点越孤立,则可能性越低,否则,属于恶意的概率越大。当然,为了量化这一概率,我们需要先对边赋值:

边url-hash,权重为1;边url-server,权重为1;边url-client,权重为4;其余的边权重均为2,然后,我们给出节点j的恶意概率j的计算公式:

5结果分析

在讨论实验结果之前,需要先明确判断下载文件是否为恶意软件的标准。使用virustotal检测url、域名以及IP,virustotal使用多个反病毒引擎,当有2个及以上反病毒引擎检测结果为恶意时,我们判断该对象为恶意的。对于那些可疑,但virustotal未检测为恶意的,通过沙箱结合人工的方式进行验证。此外,实验中使用的恶意样本集为通过互联网公开威胁情报收集的url、域名和IP等信息。

服务端多态:的目标是检索那些url相同,但文件hash不同的记录。我们在4.2节讨论过,不同文件hash数量n的取值,我们在实验中进行评估。在训练集中,当= 2时,检测恶意url的数量为55。然而此时,反病毒软件的升级请求数量为423,会造成大量误报,极高的假阳率影响检测。因此,我们一方面通过域名白名单对反病毒软件进行过滤,另一方面根据实验结果,取= 10。改善后,该方法的检测准确率达到93.4 %,假阳率仅为6.6 %。

分布式主机:实验中使用随机森林作为分类器区分正常CDN和恶意CDN。在训练集中,初始参数的随机森林成绩仅有0.87左右,经过参数调整优化,方案对分布式主机的检测准确率达到92.1 %。在测试集中,经验证实际的准确率稍有降低,数值为85.2 %。

整体评估:专用恶意主机,检索只有一个可执行文件的域名,此外最多可有一个html或js页面。挂马网页,检索域名、源IP相同,user-agent字段不同的记录集合,且集合中至少包含一个可执行文件下载记录。实验中发现这2种检测方法相较前2种方法准确率稍微低一些,这是因为有小部分正常的流量请求也满足检索条件。将4种检测方法结合,在表1中给出整体实验结果,评估方案的有效性。

在训练集中,检测结果去重后给出166条恶意记录,通过验证后,发现其中存在21条误报,准确率为87.3 %。在测试集中,检测结果去重后给出369条恶意记录,通过验证后,发现其中存在132条误报,准确率为64.2 %。可以看到,随着测试数据的增多,系统的准确率也出现了下降。幸運的是,由于恶意软件基础设施变化较快,检测对象为一段时间T内的流量数据,T的取值一般为最近一天,最长一周。如果T时间太长,许多设施便会无法访问。

此外,使用样本集共161条恶意流量数据进行测试,MDD共检测出其中108条,假阴率为32.9 %。这是因为,样本集中有一些独立的恶意url,比如doc,jar为后缀的,与其他url未呈现相关性,MDD对此难以识别。不过,传统恶意软件可以通过黑名单的方式检测,我们的目标是辅助传统检测方法,而不是代替它。

最后,在2019年11月的测试集中,MDD检测到一个恶意域名es.ldbdhm.xyz,它被用作发布众多jpg后缀的恶意文件,这些文件实际上是可执行pe文件。我们关注到,2019年12月互联网公开了相关威胁情报,它是“紫狐”木马使用的最新恶意域名。由于未被标记,传统的黑名单检测方法无法检测到该域名,而MDD却可以挖掘到该恶意软件的最新基础设施,这表明了MDD的有效性。

恶意软件基础设施网络分布图中包含14条检测记录,由于部分节点相同,因此节点数小于14乘以字段数8,实际共79个节点。实验中,我们在训练集、测试集中分别生成了30、66幅恶意软件基础设施网络分布图,它们按照大小进行统计的结果,占比最多的为节点数小于50的生成图。节点数小于50的生成图网络关系比较简单甚至无相关性,因此MDD的误报也集中在这一区间。

6结束语

本文提出一种新的在大规模网络中挖掘恶意软件分布的方法。区别于传统恶意软件检测方案,MDD不使用黑名单或终端行为特征检测技术,而是聚焦于挖掘恶意软件网络基础设施,辅助发现那些多变化的恶意软件,弥补传统检测方案的不足。然而,在大规模网络流量中区分正常和恶意报文给我们的工作带来挑战,我们使用白名单、机器学习分类技术,结合网络关系可视化,完成了检测方案的设计。本文实现了MDD系统的原型,分别选择真实的2天http城域网级别流量作为训练集、7天城域网级别http流量作为测试集,对系统进行了评估。实验表明,MDD系统能够有效检测大规模网络中的恶意软件网络分布关系,以及尚未公布的恶意软件网络基础设施。

猜你喜欢

报文后缀域名
海法新港一期自动化集装箱码头电子数据交换报文系统设计与实现
基于报文类型的限速值动态调整
《江苏教育研究》官方网站域名变更公告
《江苏教育研究》官方网站域名变更公告
倍增法之后缀数组解决重复子串的问题
用户设备进行组播路径追踪的方法及系统
两种方法实现非常规文本替换
从型号后缀认识CPU性能