2. 深信服科技股份有限公司, 深圳 518071
2. Sangfor Technologies Inc., Shenzhen 518071, China
高级持续性威胁(Advanced Persistent Threat, APT)是危害企业信息安全的主要攻击形式, 也是当前网络安全布防的重点. 其最常见的方式之一是通过鱼叉攻击诱骗受害者打开恶意邮件的Office附件, 并运行其中的宏病毒程序, 进而入侵受害者的计算机和网络. 例如, 2020年2月, 印度APT组织以新冠肺炎疫情题材的鱼叉邮件对我国卫生部门和相关企事业单位投放宏病毒. 可见, 宏病毒检测是抵御APT攻击的重要环节.
传统反病毒系统对被检测样本做静态分析, 通过查询病毒数据库的方式检测病毒[1,2]. 病毒数据库
变形是病毒绕过反病毒系统的重要手段[1-5]. 令
与传统的Windows PE (Portable Executable)病毒不同, 对宏病毒进行变形无需考虑编译和二进制重写等因素, 因此成本低廉且方式灵活[5,6]. 例如, 通过添加空白字符等简单修改, 即可绕过病毒文件哈希库
研究者提出使用机器学习的方法, 训练模型在高抽象层次上识别变形病毒的不动点, 从而检测变形病毒[5-9]. 然而, 现有方法在特征工程、机器学习算法选型、样本规模和样本真实性方面均存在局限性, 导致了其在效果方面的不足, 限制了其在工业界的应用和推广.
本文介绍一种基于机器学习的变形宏病毒检测方法── OVD (Obfuscated VBA Detector). 与传统反病毒系统不同, OVD不依赖文件的哈希值和病毒规则, 而是使用机器学习算法训练模型, 然后通过模型预测文件是否为病毒. 与现有的基于机器学习的方法相比, OVD在特征工程规模、特征工程精细度、样本规模和样本真实性等方面优于现有工作. 在特征工程方面, 与现有工作[5-9]不超过20维的特征工程不同, OVD采用520维的细粒度特征工程. 在训练集方面, OVD基于用户真实场景的海量样本采集. 在性能方面, OVD以轻量级的词法分析器作为预分析器, 避免对被测文件做重量级的语法分析或语义分析.
在400万个样本上的实验表明, OVD的召回率和准确率分别为97.34%和99.41%; 对比文献[5]的方法在相同样本集上的召回率和准确率分别为72.97%和88.87%. 在机器学习算法选型方面, 实验对比支持向量机[10]、随机森林[11]、梯度提升决策树[12]和多层感知机[13]. 实验数据表明, 在大规模样本集上, 梯度提升决策树的效果最佳.
1 总体框架如图1所示, OVD的总体框架包括训练和查杀两个阶段. 在训练阶段, 首先采集宏病毒样本, 形成文件样本集
2 梯度提升决策树
在有监督机器学习中, 一种典型的集成学习方法是提升法(boosting)[12]. 它迭代地将M个弱学习器(或基函数)
算法1. 梯度提升树算法
输入: 数据集
输出: 梯度提升决策树
1
2
3
4
5
6
7
梯度提升决策树是以决策树为基函数的提升法, 即限定基函数的假设空间H为回归树:
$H = \left\{ {\sum\limits_{t = 1}^T {{c_t}{{I}}\left( {x \in {R_t}} \right)} } \right\}$ | (1) |
其中, T为叶子数量,
基于病毒专家在大量变形宏病毒样本上的研究经验, 将OVD的特征工程分为若干子任务, 如图2所示. 子任务的划分依据病毒专家经验和实验分析. 本章各小节详细介绍各子任务产生的特征与变形病毒属性之间的相关性. 各子任务的必要性和特征工程粒度的合理性在实验中论证(见5.4节). OVD的细粒度特征工程是效果驱动的, 仅考虑对区分变形宏病毒和正常宏程序有贡献的特征; OVD不考虑无效特征, 例如Office文档的内部目录结构和文件修改日期等.
3.1 标记频率分析
通过词法分析, OVD得到宏程序的标记(token)集合, 并统计每种标记的频率. 其意义在于: 变形宏病毒较频繁地使用某些类型的标记, 而较少使用其他类型的标记. 对标记按类型统计频率可以为区分变形宏病毒和正常文件提供重要参考. 例如, 表示字符串拼接的标记“+”和“&”在变形宏病毒中比较常见, 因为字符串拼接是使病毒规则失效的常用手段. 如图3所示的真实病毒样本中的宏程序, 出现了较多的“+”. 再比如, 一种常见的变形手段是将恶意代码隐藏在大量无实际意义的整数常量计算中. 因此, 整数常量的数量是识别变形宏病毒的有效特征之一. OVD的词法分析器识别220种标记, 表1列出了几种对识别变形宏病毒有较大贡献的标记. OVD在样本特征向量中记录每种标识符的数量和频率.
3.2 标识符分析
正常程序一般使用有意义的单词或词组, 通过驼峰法等方式为变量名和函数名等标识符命名. 变形宏病毒程序的标识符与正常程序往往有明显不同, 其典型特点包括: ① 元音字母较少; ② 大写字母占比较高; ③ 数字占比较高; ④ 长度较大; ⑤ 长度方差较小. 例如, 在图4所示的真实宏病毒程序中, 标识符平均长度超过20, 且标识符内容全部为大写字母, 这与正常程序有明显区别. OVD统计宏程序中标识符的平均长度、长度方差、平均元音字母占比、平均大写字母占比、平均小写字母占比和平均数字占比, 并记入样本的特征向量.
3.3 字符串分析利用脚本语言的动态特性, 通过执行字符串形式的动态代码完成恶意行为是躲避反病毒系统的常用手段. 因此, 字符串在变形病毒中出现频繁. 一种典型的变形方式是将恶意代码编码为字符串, 然后将其分割为大量子字符串, 再动态地通过拼接、反转和解码等操作将恶意代码还原, 从而在不改变恶意代码语义的前提下对其灵活变形, 绕过传统反病毒系统的病毒规则库. 图5是一个真实的宏病毒程序. 该病毒程序通过大量的字符串拼接操作达到变形的目的.
OVD统计宏程序中的字符串数量, 并记入特征向量. 另一面, 一种典型的字符串变形手段是通过对超长字符串编码, 从而隐藏有效载荷(payload). 针对该变形手段, OVD统计字符串的平均长度, 识别常见编码格式(如base64)的超长字符串, 并统计其数量.
下载器(downloader)是一类常见的宏病毒. 它通过网络下载并自动运行其他类型的病毒. 这类宏病毒程序往往出现“powershell”、“exe”和“download”等关键字符串. OVD统计这些关键字符串的数量和频率, 并记入特征向量.
3.4 文件元信息文件元信息与文件是否为病毒有相关性. 例如, 为了便于病毒在网络中扩散传播, 鱼叉邮件中的Office文件附件通常较小. 因此, 病毒Office文件的体积和其中病毒宏程序的体积有一定规律. 基于此现象, OVD将Office文件的体积和其中宏程序的体积记入特征向量. 另一方面, 一些变形宏病毒将恶意代码隐藏在Office文件的自定义属性中, 并通过从自定义属性中取值的方式在宏程序中还原恶意代码. 因此, OVD在样本的特征向量中记录自定义属性的数量和属性内容的平均长度.
3.5 黑词分析对宏病毒程序统计词频, 结合病毒专家经验, 得到宏病毒中出现较多的标识符集合
3.6 白词分析
对正常宏程序统计词频, 得到出现较多的标识符集合
3.7 熵值分析
研究表明, 变形恶意程序的信息熵[15]高于正常程序[9]. 给定被测样本
算法2. 计算滑动窗口信息熵均值
输入: 宏程序
输出:
1
2
3
4
5
6
7
8
样本规模是保证机器学习效果的重要条件. 主流的现代反病毒系统采用云端分离的分布式的架构. 如图7所示, “云”一般部署在反病毒厂商, “端”是指反病毒系统的客户端. 在客户端部署样本上传模块, 将客户端的文件样本通过网络采集到云上, 实现大规模样本采集.
通过宏程序变形工具, 进一步对恶意样本变形, 可增加变形宏病毒的样本数量. 样本集包含主流变形工具生成的变形宏病毒样本. 主流变形工具包括: macro_pack[16]、Macroshop[17]、vba-obfuscator[18]、VBad[19]、Veil Framework[20]、Generate-Macro[21]. 通过杂交, 进一步扩大样本集. 令
5 实验分析
采用XGBoost[22]作为梯度提升决策树的实现, 样本空间大小
$accuarcy \; = \; \frac{{TP + TN}}{{TP + TN + FP + FN}}$ | (2) |
$precision \; = \; \frac{{TP}}{{TP + FP}}$ | (3) |
$recall \; = \; \frac{{TP}}{{TP + FN}}$ | (4) |
采用网格搜索优化XGBoost的超参数. 决策树数量为1000, 树高为6, 学习率为0.1. 采用16线程, 训练时间为13 410 s. 采用10折交叉验证, 实验效果如表5所示. OVD的正确率、准确率和召回率分别为98.38%、99.41%和97.34%. 由于变形工具和杂交算法的规律性, OVD对变形工具和杂交算法生成的恶意样本的识别能力比真实样本更强.
5.2 机器学习算法的对比
基于Scikit-learn[23]对比了支持向量机、随机森林、梯度提升决策树和多层感知机的效果. 结果如图8所示. 梯度提升决策树在正确率、准确率和召回率上均高于其他3种机器学习算法.
梯度提升决策树的两种主流实现是XGBoost和LightGBM[24]. 使用相同的超参数(决策树数量为1000, 树高为6, 学习率为0.1, 采用16线程训练), 对XGBoost和LightGBM的实验结果如表6所示. XGBoost在正确率、准确率和召回率均略高于LightGBM, 而在训练时间方面LightGBM优于XGBoost. 因为宏病毒检测对检测效果的敏感性, 故XGBoost更优.
5.3 与相关工作的对比
文献[5]提出的基于多层感知机的方法, 采用15维特征对宏程序向量化, 并使用多层感知机作为机器学习算法. 文献[5]的工作仅基于2537个样本(其中变形宏病毒样本773个, 正常样本1764个)进行实验, 准确率和召回率分别为93.80%和91.50%.
在4000000样本集上通过两组实验对比OVD和文献[5]的方法: ① 对比文献[5]基于多层感知机的方法在大样本集和小样本集上的效果差异; ② 采用梯度提升决策树, 对比文献[5]提出的15维特征和OVD的520维特征. 表7给出实验结果. 虽然文献[5]基于15维特征的方法在小样本集上取得了较好的正确率、准确率和召回率, 但在大样本集上的效果较差. 一种可能的解释是样本量过小导致过拟合. 在大样本集上的实验结果表明: ① 梯度提升决策树(MLP)的效果优于多层感知机(XGB); ② OVD的特征工程优于文献[5]的方法.
5.4 特征工程粒度的合理性分析
通过实验分析特征工程各子任务(图2)的必要性. 基于4000000样本, 将各子任务
在扫描时间方面, 对单个样本做全量特征工程T的平均耗时为57.65 ms, 其中文件解析和词法分析的平均耗时为45.02 ms. 表9给出各子任务t的平均时间开销. 所有子任务共产生28.01%的时间开销. 该指标属于合理范围, 不影响工业级应用推广. 各子任务t均不产生明显的内存开销.
6 结语
本研究提出了OVD—一种基于梯度提升决策树的变形宏病毒检测方法. 与传统的基于病毒数据库的检测方法不同, OVD通过机器学习在高抽象层次对变形宏病毒的不动点建模, 实现了良好的泛化性. OVD面向工业级应用, 基于专家经验实现了520维的变形宏病毒特征工程, 较现有方法粒度更细. 介绍了特征工程及其各子任务的功能和设计思路. 实验验证了细粒度特征工程的合理性, 并讨论了其性能影响. 大规模数据集上的实验表明, OVD能有效检测变形宏病毒, 准确率和召回率分别达到99.41%和97.34%, 优于现有方法.
[1] |
Souri A, Hosseini R. A state-of-the-art survey of malware detection approaches using data mining techniques. Human-centric Computing and Information Sciences, 2018, 8(1): 3. DOI:10.1186/s13673-018-0125-x |
[2] |
Ye YF, Li T, Adjeroh D, et al. A survey on malware detection using data mining techniques. ACM Computing Surveys, 2017, 50(3): 41. |
[3] |
Sihwail R, Omar K, Ariffin KAZ. A survey on malware analysis techniques: Static, dynamic, hybrid and memory analysis. International Journal on Advanced Science, Engineering and Information Technology, 2018, 8(4–2): 1662. |
[4] |
Saeed IA, Selamat A, Abuagoub AMA. A survey on malware and malware detection systems. International Journal of Computer Applications, 2013, 67(16): 25-31. DOI:10.5120/11480-7108 |
[5] |
Kim S, Hong S, Oh J, et al. Obfuscated VBA macro detection using machine learning. Proceedings of the 48th Annual IEEE/IFIP International Conference on Dependable Systems and Networks. Luxembourg City, Luxembourg. 2018. 490–501.
|
[6] |
Nissim N, Cohen A, Elovici Y. ALDOCX: Detection of unknown malicious Microsoft office documents using designated active learning methods based on new structural feature extraction methodology. IEEE Transactions on Information Forensics and Security, 2017, 12(3): 631-646. DOI:10.1109/TIFS.2016.2631905 |
[7] |
Cohen A, Nissim N, Rokach L, et al. SFEM: Structural feature extraction methodology for the detection of malicious office documents using machine learning methods. Expert Systems with Applications, 2016, 63: 324-343. DOI:10.1016/j.eswa.2016.07.010 |
[8] |
林杨东, 杜学绘, 孙奕. 恶意PDF文档检测技术研究进展. 计算机应用研究, 2018, 35(8): 2251-2255. DOI:10.3969/j.issn.1001-3695.2018.08.003 |
[9] |
周安民, 户磊, 刘露平, 等. 基于熵时间序列的恶意Office文档检测技术. 山东大学学报(理学版), 2019, 54(5): 1-7. |
[10] |
Cortes C, Vapnik V. Support-vector networks. Machine Learning, 1995, 20(3): 273-297. |
[11] |
Ho TK. The random subspace method for constructing decision forests. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1998, 20(8): 832-844. DOI:10.1109/34.709601 |
[12] |
Friedman JH. Greedy function approximation: A gradient boosting machine. Annals of Statistics, 2001, 29(5): 1189-1232. |
[13] |
Cybenko G. Approximation by superpositions of a sigmoidal function. Mathematics of Control, Signals and Systems, 1989, 2(4): 303-314. DOI:10.1007/BF02551274 |
[14] |
[MS-OLEDS]: Object Linking and Embedding (OLE) Data Structures. https://docs.microsoft.com/openspecs/windows_protocols/ms-oleds. [2020-07-12].
|
[15] |
Shannon CE. A mathematical theory of communication. ACM SIGMOBILE Mobile Computing and Communications Review, 2001, 5(1): 3-55. DOI:10.1145/584091.584093 |
[16] |
https://github.com/sevagas/macro_pack. [2020-08-27].
|
[17] |
https://github.com/khr0x40sh/MacroShop. [2020-09-03].
|
[18] |
https://github.com/bonnetn/vba-obfuscator. [2020-09-01].
|
[19] |
https://github.com/Pepitoh/VBad. [2020-08-25].
|
[20] |
https://github.com/Veil-Framework. [2020-09-01].
|
[21] |
https://github.com/enigma0x3/Generate-Macro. [2020-08-29].
|
[22] |
Chen TQ, Guestrin C. XGBoost: A scalable tree boosting system. Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. San Francisco, CA, USA. 2016. 785–794.
|
[23] |
http://scikit-learn.org. [2020-09-03].
|
[24] |
Ke GL, Meng Q, Finley T, et al. LightGBM: A highly efficient gradient boosting decision tree. Proceedings of the 31st International Conference on Neural Information Processing Systems. Long Beach, CA, USA. 2017. 3149–3157.
|