APP下载

面向数字货币特征的细粒度代码注入攻击检测

2021-06-04李占魁马建峰乔新博

计算机研究与发展 2021年5期
关键词:勒索攻击者内存

孙 聪 李占魁,2 陈 亮 马建峰 乔新博

1(西安电子科技大学网络与信息安全学院 西安 710071) 2(华为技术有限公司 西安 710075)

数字货币在近年来长足发展的同时,已被广泛用于勒索软件等恶意程序[1].此类恶意程序的传播和注入过程常依赖于系统漏洞和通用恶意行为,如代码注入攻击[2].此外,勒索软件通常为被攻击者生成唯一的勒索地址,或要求被攻击者发送支付交易哈希值,以便于数字货币兑换[3],此类恶意特征在勒索软件有效载荷及其进程内存地址空间中具有特定特征,因而,面向数字货币相关的内存特征进行代码注入攻击检测是发现勒索软件攻击的有效手段.

代码注入攻击指注入者实体复制代码到受害者实体,并在受害者上下文中执行恶意代码的行为.基于主机的代码注入攻击[4](host-based code injection attack, HBCIA)相比远程代码注入攻击[5]隐蔽性更高:注入者与受害者均为驻留在同一操作系统上的进程,注入者进程利用系统调用接口对受害者进程地址空间实施代码注入,从而访问受害者进程空间中所有信息并实施恶意行为.目前HBCIA检测方案可分为动态和静态2类.动态检测通过监控实时的系统调用序列和进程、线程环境变化发现HBCIA[6-8];静态检测则通过静态分析代码[9-10]或内存取证(即检测恶意软件执行一段时间后的系统内存转储文件)[11-13]识别HBCIA行为.静态检测相比动态检测开销较小,准确性和安全性较高.

现有主流HBCIA静态检测系统通过在内存转储文件中提取包括进程钩子、系统调用序列、网络字符串、内存页特征、shell code等细粒度内存特征来检测注入攻击行为[12-13],但所考虑的特征不包括数字货币相关的特征,无法区分勒索软件和一般恶意程序.而现有针对勒索软件的内存取证检测方案,只针对勒索软件相关的内存特征[2-3]或仅考虑比特币客户端软件的内存特征[14]及与内核对象数量有关的粗粒度特征[15],没有充分结合当前细粒度HBCIA检测方法的分析能力,也难以检测出勒索软件对较新的代码注入攻击的利用.

针对这些问题,本文提出一种面向数字货币特征的细粒度HBCIA检测方法(digital currency oriented fine-graind HBCIA detection, Dicof). Dicof在现有检测方案的38种内存特征基础上,首先提出全局类、内存类和木马类共13种细粒度的通用内存特征,对现有检测方案进行扩展;然后,针对勒索软件利用数字货币进行赎金支付的特点,提出了2种与数字货币支付有关的勒索行为内存特征.基于新特征方案,本文实现了一个细粒度HBCIA静态检测系统,分别使用基于树的分类模型和多层感知器神经网络模型对所提出内存特征方案进行性能评价,在Windows 10系统应用程序样本集上的实验评估结果表明,新特征方案的15种特征有效提升了现有检测系统Quincy对HBCIA的检测性能,恶意软件家族检测度提升了1.1个家族,恶意软件家族检测完整度提升了1.2个家族,查准率提升了5.7%,查全率提升了3.4%;对于典型勒索软件的查准率和查全率分别提升了38.7%和37.3%. Dicof系统还具有较好的内存特征提取性能及对未知恶意软件家族的检测能力.

本文的主要贡献包括3个方面:

1) 提出了一种细粒度基于主机的代码注入攻击内存取证特征方案,其中包含13种能有效提升现有系统恶意软件家族检测度的通用内存特征;

2) 针对勒索软件的支付行为,提出了2种面向数字货币的内存特征,使得基于主机的代码注入攻击检测系统能够准确检测勒索软件行为;

3) 实现了内存特征提取算法和相应检测系统,评估结果显示相比现有细粒度检测系统具有更高的恶意软件检测度和性能,并显著提升了对勒索软件的检测能力.

1 相关工作

内存取证分析旨在从不同操作系统和硬件平台的易失存储器出发获取有效的语义信息,从而获得恶意行为执行的证据.从一个正在运行的系统的内存转储文件出发,发现恶意行为的运行时特征,已在内核层面[16-17]和应用程序层面[11-13,18-19]均被证明可行.在内核层面,结合静态分析和内存遍历可识别内核代码和数据的完整性,用于检测rootkit恶意行为[16];通过从内存转储构造内存图,可将内核对象识别问题转化为内存图特征的深度学习问题,从而避免内存遍历和签名扫描的局限性,并用于检测直接内核对象操作(direct kernel object manipulation, DKOM)攻击[17].在应用程序层面,内存取证已用于推断即时消息应用的关键信息和操作[18]、检测内存代码的完整性[19]、检测恶意软件的代码加载行为[11]、基于主机的代码注入攻击[12]及注入代码执行页隐藏[13].在发现应用程序的恶意行为时,此类方法通常依赖于内存结构列表遍历和基于签名的扫描来发现恶意特征.与依据动态监测结果构建内存转储的检测[8]不同,Quincy系统[12]在内存转储上通过签名扫描方法发现细粒度内存特征并构建特征向量,其特征粒度比Membrane[11]更细,且利用监督学习检测注入攻击行为,获得了更高的检测精度.

2 Dicof内存特征方案

本节提出一种包含数字货币特征的细粒度HBCIA内存特征方案,用于对内存转储中的关键恶意特征及勒索软件特征进行识别.分通用内存特征和数字货币内存特征进行介绍.

2.1 通用细粒度内存特征

针对现有细粒度HBCIA内存特征方案[12]在识别全局特征、隐蔽通信和木马行为方面的不足,本文提出13种新内存特征,用以识别相关的恶意进程行为,提高HBCIA检测的准确度.具体特征类型及描述如表1所示.全局特征类从进程或线程属性侧面区分HBCIA攻击者进程和被攻击者进程,其中的特征能够快速划分大量良、恶性内存区域;内存类特征包含HBCIA攻击者或被攻击者进程利用隐蔽通信机制相关的内存特征;木马类特征包含了与反取证临时文件删除、网页重定向、自动传播、剪切操作相关的木马类恶意内存特征.

Table 1 The Type, Description and Usage of General Memory Features of Dicof表1 Dicof内存特征方案的通用内存特征类型、描述及用途

特别地,在木马类特征中引入了对勒索软件加密行为内存特征的判定.当前常见勒索软件行为包括用户机加锁和目标文件加密2类.加密勒索相比用户机加锁,要求的系统权限更少因而更灵活.加密勒索的注入过程一般会搜索有价值的用户文件类型,如WannaCry[20]一般加密预定的178种文件扩展名[2],动态生成对称密钥加密用户文件,并利用预置的强公钥加密对称密钥,要求被攻击者支付赎金以获得攻击者控制的远程服务器上的解密私钥.典型的例子包括CTB-Locker[21].因识别密钥本身较困难,针对已介绍的勒索注入行为,在特定进程内存页中查找是否同时存在文件类型(扩展名)扫描、对称加密和公钥加密相关的系统调用和字符串,从而有效判定加密勒索恶意行为.

2.2 数字货币内存特征

表1中的勒索行为特征,虽然具有一定区分度,但一些安全通信应用仍具有类似的代码特征,因而本节进一步结合勒索软件的支付行为,提出相关的数字货币内存特征,便于实现更准确的勒索软件恶意行为检测.

为获得勒索赎金,攻击者通常要求使用满足2个条件的支付系统:1)被攻击者支付便利;2)攻击者接收赎金时能保持匿名性.满足这2个条件的支付系统包括2类:1)数字货币.基于数字货币匿名交易机制的溯源困难性,勒索软件(如CryptoLocker[22])要求使用比特币进行交易支付赎金.2)支付券.勒索软件(如TeslaCrypt[23])要求购买支付券并发送支付码给攻击者.此外,为被攻击者支付方便,勒索软件一般提供直接URL链接指向支付和私钥获取页面,并将其实现为一个TOR(the onion router)网络服务,勒索软件实例包括CTB-Locker,TeslaCrypt,CryptoWall[24],KeRanger[25],Cerber[26]等,由于TOR网络的匿名通信特性,保证了很难识别出提供恶意服务的物理主机.提出内存特征:

1) dcurrency_static.在内存转储的每个内存区域中查找是否含有与数字货币交易相关的字符或常量,包括发送地址、接收地址、交易ID、本地备份wallet文件的路径名.查找内存转储中是否存在与支付券有关的字符串常量或购买链接(典型的支付券包括Paysafecard,MoneyPak,CashU等),从而识别本特征.

2) dcurrency_TOR.在内存转储的每个内存区域中查找是否含有形如http://id1.hostname/id2的域名及包含“onion”字符串的域名,或是否含有TOR浏览器安装链接信息.以上域名中id1为多个勒索攻击共用的隐藏服务ID,id2为一个针对被攻击者的唯一比特币勒索地址.被攻击者通过URL访问为其定制的TOR页面从而获得id2和勒索金额.

2.3 内存特征提取算法

算法1.Dicof内存特征提取算法.

输入:特征集合F,内存区域集合M={m1,m2,…,mn},特征模式PatternPool=F|→pattern_listf∈F;

输出:特征向量映射F:f|→V.

①V←0;

③ for eachmk∈Ms.t. (addr+offProtection)∈mkdo

④F(glb_proc_protection)←

IsSet(mk[addr+offProtection]);

⑤ for eachthrd∈ETHREAD[1..s]∧

⑥F(glb_thrd_delay)←∨thrd(mk2

mk[addr+offcreate_time]>ΔT);

⑦F(glb_thrd_promote)←∨thrd(mk2

⑧ end for

⑨ end for

⑩ for eachf∈FAPIdo

F(f)←∨m∈MbPMatched(m,

PatternPool(f));

(m,domainsbank)|>0);

PatternPool(f)), s.t.tr∈backCFA

(CFG(mk),random()/DeleteFile(),

N);

3 Dicof系统实现

Dicof系统结构如图1所示:

Fig. 1 Dicof system architecture图1 Dicof系统结构

首先,使用Antivmdetection[27]对VirtualBox虚拟机进行硬化,并使用VirtualBox内存转储功能,输出获取运行过良性或恶意二进制样本的内存转储文件(即算法1中的内存区域集合M).虚拟机硬化能防止如CryptoWall等勒索软件的反仿真模块实施沙箱规避隐藏.其次,Dicof系统的内存分析模块解析内存转储文件,一方面获取转储时刻每个进程和线程对应的2个重要的内存数据结构(EPROCESS和ETHREAD)的属性信息,另一方面,所有与代码调用模式相关的特征捕获均基于对内存转储中二进制的静态反汇编,获得可能的控制流集合,用于后续特征识别.其中基本内存区域分析和内核对象分析使用Volatility,二进制分析使用IDA Pro.第三,Dicof系统的特征提取模块执行算法1,分别实现对Dicof内存特征方案所述15个关键特征的复杂模式匹配、阈值比较和特征向量生成.根据分析粒度需要,在执行算法1的具体步骤时,需要以具体操作的内存区域为粒度构建特征向量.最后,这15个新HBCIA特征与Quincy系统特征提取模块输出的38个HBCIA特征一起,提交给分类与评估模块,执行对不同机器学习分类模型的性能评估.

4 性能分析与评价

4.1 样本集

本文实验采用Windows 10系统平台上的应用程序样本集,该样本集由977个良性二进制样本、87个恶意二进制样本及对应的恶意二进制样本签名3部分组成.其中,良性二进制样本一部分是对Windows 10系统目录中的标准可执行文件的执行转储,另一部分是对第三方软件库[28]的各类标准可执行文件的执行转储,第三方软件的类型覆盖了压缩工具、进程查看工具、CPU状态查看工具等.恶意二进制样本中,73个取自Quincy系统公开的HBCIA恶意样本集[12],其中的每个HBCIA恶意二进制样本都代表一个恶意软件家族,良性及恶意样本的签名见文献[29].另外14个是对从github和VirusTotal[30]下载的勒索软件进行虚拟机执行转储得到的,使用的勒索软件包括HiddenTear,Cerber,WannaCry,CryptoWall,TeslaCrypt的开源版本和VirusTotal版本.针对每个恶意二进制样本,人工编写恶意二进制样本签名.

应用程序样本经内存转储后,单个内存转储文件可划分为大量内存区域.内存区域数量与用于内存转储的虚拟机客户机内存大小相关,本文设置虚拟机客户机内存为1.1 GB.表2为对内存区域的去重前/后结果.

Fig. 3 Ranking of the importance of features for random forest图3 基于随机森林模型的特征重要性

为去重后的每个内存区域获取一个53维的HBCIA特征数据条目,维度与总特征数量一致.每个数据条目均以所属进程名,内存区域虚拟地址组成的ID作为索引.根据内存区域是否匹配恶意二进制样本签名,为每个数据条目打上良或恶性分类标签.获取到的所有具有良或恶性标签的数据条目构成机器学习初始数据,完成特征提取过程.

4.2 内存特征提取时间评价

图2为在本文样本集中的单个应用程序内存样本上提取每个内存特征的平均时间.由图2可见,相对于内存转储文件规模而言,特征提取时间开销在合理范围内.对于Fseq中与序列行为有关的特征,计入使用IDA Pro对指定内存区域进行二进制静态反汇编及生成控制流路径集合的时间,因而消耗时间更长.此外,良性二进制样本和恶意二进制样本对应的特征提取时间开销无明显差异.

Fig. 2 Average extraction time cost of the 15 memory features图2 15个内存特征的平均提取时间

4.3 内存特征重要性评价

本节讨论本文提出的15种内存特征与Quincy系统38种内存特征之间的相对重要性.针对本文15种内存特征与Quincy的38种内存特征组成的特征集合,基于随机森林模型执行结合5折交叉验证过程的递归特征擦除过程(recursive features elimination with cross validation, RFECV),以选择最佳的特征子集.在此过程中获取本文内存特征方案中的每个特征的相对重要性.

图3展示了重要性排在前35的特征,其中包含13种本文提出的内存特征.仅6种特征的重要性对模型的平均贡献超过了3.5%,其中包含本文提出的特征glb_thrd_delay.可见,本文提出的多数内存特征对现有细粒度HBCIA检测性能的提升有明显贡献.特别地,与数字货币和勒索软件相关的特征troj_ransom,dcurrency_static,dcurrency_TOR贡献度相对有限,原因是本文用于训练的恶意二进制样本中,由勒索软件产生的转储区域较少(14个勒索软件,87个恶意二进制样本),导致相关内存特征的贡献度较低.

4.4 Dicof系统分类模型性能评价

本节采用4种基于树的分类模型(Adaboost,extremely randomized trees,gradient boosting,random forest)以及多层感知器(multi-layer perception, MLP)神经网络模型,评估对比Dicof系统与现有Quincy系统的检测性能差异.MLP神经网络的输入层(第0层)接受一个n维特征向量(f1,f2,…,fn)作为输入,其中fk对应每个内存区域的第k个HBCIA内存特征,每个fk均以浮点数表示.隐藏层(第1层)由m个神经元构成的全连接层组成.根据神经元权重、神经元偏差及第0层输出,采用ReLU函数作为激活函数计算神经元输出.输出层(第2层)为由单个神经元构成的全连接层.采用Sigmoid函数作为激活函数计算分类模型输出.超参数空间如表3所示:

Table 3 The Hyperparameters of MLP表3 多层感知神经网络方法参数

本文采用的性能度量指标主要包括:

1) 恶意软件家族检测度(D).检测到的恶意软件家族总数.其中,某恶意软件家族被检测到当且仅当该恶意软件家族对应的所有恶意数据条目中至少有一个被检测到.

2) 恶意软件家族检测完整度(C).完整检测到的恶意软件家族总数.其中,某恶意软件家族被完整检测到当且仅当该恶意软件家族对应的所有恶意数据条目都被检测到.

3) 查准率Precision=TP/(TP+FP).

4) 查全率Recall=TP/(TP+FN).

5)AUC值.ROC曲线下的面积,用于度量分类模型的正确率.

其中,TP(true positive)为预测为恶意的实际恶意样本数;FP(false positive)为预测为恶意的实际良性样本数;FN(false negative)为预测为良性的实际恶意样本数.

对于所有特征数据条目按照6∶4比例随机划分训练集和测试集.其中,对于恶意数据条目,以恶意软件家族为单位划分训练集和测试集,勒索软件作为其中1个恶意软件家族.为减小训练集和测试集划分的偶然性,选择对训练集和测试集随机划分10次,分别训练不同分类模型,对各分类模型在对应测试集上进行预测,求得各个性能指标均值,作为该分类模型评估的最终结果.Quincy系统和Dicof系统10次随机划分下的各指标均值,在不同分类模型上的性能比较结果分别如表4所示.进一步横向对比MLP神经网络模型和基于树的分类模型,我们发现MLP分类模型整体性能并未体现优势.一方面说明本文HBCIA的局部特征间缺乏特有的关联性,难以发挥深度学习模型的优势,另一方面本文场景的数据规模也制约了深度学习分类模型的性能.根据分析,以基于树的分类模型的性能均值作为最终指标值,得出Dicof系统相比Quincy系统,恶意软件家族检测度提升了1.1个家族,恶意软件家族检测完整度提升了1.2个家族,查准率提升了5.7百分点,查全率提升了3.4百分点.

Table 4 Performance Comparison of Dicof and Quincy Under Different Classification Models表4 Dicof系统与Quincy系统在不同分类模型下的性能对比

进一步比较Dicof系统与Quincy系统在典型勒索软件检测方面的性能.将14个勒索软件转储得到的二进制样本和相应的161个恶意内存区域单独生成的恶意特征数据条目,与所有良性特征数据条目一起,进行训练集和测试集6∶4随机划分10次,记录查准率、查全率和AUC指标均值,在Quincy系统表现较好的Adaboost分类模型下的度量结果及度量指标均值结果如表5所示.对于本文所选的勒索软件样本,Dicof的查准率和查全率分别提升了38.7百分点和37.3百分点.另一方面亦可见,虽然Quincy系统的内存特征并未考虑勒索软件,但仍能达到一定的检测精度,说明现有勒索软件在实施攻击时仍在一定程度上蕴含着主流的HBCIA行为.

Table 5 Performance Comparison of Dicof and Quincy Towards Classifying Ransomware

4.5 对未知恶意软件家族的检测能力评价

为评估Dicof系统对未知的HBCIA恶意软件的检测能力,首先根据本文样本集中所有恶意软件在VirusTotal上的公开时间,对样本集中恶意软件家族按照公开时间先后进行排序.然后,依据该次序以6∶4比例产生一个较早期训练集和一个较新测试集,在测试集中将已经出现在训练集中的恶意软件家族的恶意样本删除,仅保留在训练集中未出现的恶意软件家族对应的恶意样本,最终训练集和测试集分别保留554和175个恶意内存区域.训练集和测试集中的良性内存区域按照6∶4随机划分.选择MLP神经网络,在较早期训练集上生成一个MLP神经网络分类模型,在较新测试集上评估模型的分类性能.图4以ROC曲线的形式展示了Dicof系统和Quincy系统对未知恶意软件家族的分类性能.由图可见在MLP分类模型上,Dicof系统和Quincy系统均表现出良好的分类性能,AUC值均在0.99以上,说明本文内存特征方案具备检测未知HBCIA恶意软件家族的能力.

Fig. 4 Detection ability on unknown malware families图4 对未知恶意软件家族的检测能力评估结果

5 总 结

本文提出了一种细粒度的HBCIA内存特征方案,在引入多种细粒度通用内存特征的基础上,提出与勒索软件行为检测相关的数字货币内存特征,并实现了兼容勒索软件内存取证的HBCIA检测系统Dicof.从特征提取开销、特征重要性、分类性能、未知恶意软件家族检测能力等方面对系统进行评价,实验结果表明,新内存特征方案具有较显著的HBCIA特征描述能力,特征提取开销较小;Dicof系统比现有Quincy系统具有更强的恶意软件家族检测能力和勒索软件检测能力,并具备较好的未知恶意软件家族检测能力.未来工作将通过研究HBCIA行为之间的深度关联性,定义和识别更为复杂的时态关系特征,进一步提升HBCIA分类检测的精确性.

猜你喜欢

勒索攻击者内存
基于贝叶斯博弈的防御资源调配模型研究
情绪勒索:警惕以爱之名的伤害
遭遇勒索
勒索
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
正面迎接批判
正面迎接批判
内存搭配DDR4、DDR3L还是DDR3?
上网本为什么只有1GB?