《Microprocessors and Microsystems》:Open-source RISC-V platforms for embedded medical grade EMG processing: Are we there yet?
编辑推荐:
Linux恶意软件检测的动态与静态机器学习方法研究。提出基于执行指令序列的动态检测和基于二进制文件分析的静态检测两种方案,分别采用随机森林和深度神经网络等模型。实验表明动态方法准确率达90%,静态方法达98%
作者:Martí Alonso、Andreu Gironés、Juan-José Costa、Enric Morancho、Stefano Di Carlo、Ramon Canal
西班牙加泰罗尼亚理工大学(UPC)
摘要
随着针对数字基础设施的网络攻击不断演变,需要新的防护机制来应对这些攻击。恶意软件攻击(包括病毒、蠕虫、勒索软件和间谍软件等)传统上是通过基于签名的方法来检测的。然而,面对新版本的恶意软件,这种方法已经不够有效,因此机器学习工具显示出巨大潜力。在本文中,我们提出了两种利用机器学习模型检测Linux恶意软件的方法:(1) 动态方法,该方法在程序执行过程中跟踪指令(操作码);(2) 静态方法,在程序执行前检查二进制文件。我们评估了五种机器学习模型(支持向量机、k-最近邻、朴素贝叶斯、决策树和随机森林),以及一种采用长短期记忆架构并结合词嵌入的深度神经网络。实验结果显示,使用随机森林分类器的动态方法准确率可达90%以上,而静态方法的准确率为98%。
引言
随着数字系统的日益普及,许多企业加速推进数字化转型,以及我们生活的方方面面都实现了数字化互联,人们对这些系统的安全性产生了担忧。为了保护敏感信息并维护数字基础设施的完整性,防范快速演变的网络攻击至关重要。
恶意软件攻击是其中一种常见的网络攻击类型。恶意软件是一种专门用于对任何基于计算机的系统执行恶意操作的软件,其形式多种多样,包括病毒、蠕虫、勒索软件和间谍软件。恶意软件感染计算机系统后可能造成严重后果,如数据泄露、隐私侵犯、财务损失或系统完全瘫痪。虽然最初的恶意行为者只是想展示他们的能力,但如今网络攻击已成为一种有组织的犯罪行为,其目的在于获取经济利益。在这种驱动下,恶意软件技术不断扩展、适应和创新,因此需要采取主动和灵活的网络安全措施来应对新出现的威胁。
传统上,反恶意软件软件采用基于签名的检测方法,即将已知恶意代码、URL、元数据等模式与数据库进行匹配。这种方法对于固定且重复出现的恶意软件非常有效。然而,对于新版本或经过修改的恶意软件(如多态性或变形恶意软件),这种方法的效率较低。因此,必须采用其他方法,而机器学习模型已被证明是一种有效的方法[1]、[2]、[3]。
利用机器学习模型检测恶意软件是一种成熟的技术,已被证明是有效的。虽然不同研究采用的分类模型和特征向量有所不同,但其中一种显著的方法是利用程序在运行时产生的操作码痕迹。
这种策略在x86架构上效果良好。然而,现有的检测和缓解技术依赖于x86架构的特定特性(如内核地址空间布局随机化(KASLR)[4]、[5]、[6]),这些特性并不适用于其他架构或非x86架构的机器。我们需要证明我们提出的方法(不依赖任何特定硬件特性)也能在该平台上有效,因为我们追求的是一个与制造商无关的解决方案。
我们的目标是验证两种利用机器学习模型检测Linux恶意软件的方法:(1) 静态方法,用于静态检查二进制文件;(2) 动态方法,用于跟踪x86架构下的运行时操作码痕迹。
背景
恶意软件检测长期以来一直是研究领域之一。尤其是在过去几十年里,机器学习被用于构建分类模型,以期有效检测新出现的恶意软件。这些研究可以分为两类:静态分析和动态分析。
静态分析是在不执行程序的情况下检查其特性。Santos等人[1]提出了一种基于操作码序列表示恶意软件的方法。
提案
尽管利用机器学习方法检测恶意软件已在x86等成熟架构上得到验证,但将其应用于其他架构仍需进一步研究。问题在于,这些检测(或缓解)恶意软件的方法可能依赖于x86架构的某些特定特性,而这些特性并不适用于基于其他指令集架构的系统。
我们的动态方法是在程序运行过程中分析其执行的操作码序列。
方法论与实现
本研究采用的方法论如图1所示:首先进行数据收集,随后分为两个阶段:(1) 训练阶段,包括数据预处理和模型训练;(2) 测试阶段,对模型进行评估。
根据所采用的方法(静态或动态),不同阶段需要采取不同的操作,因此在后续部分将分别详细讨论这些步骤。
实验环境
实验环境由两颗2.40 GHz的Intel Xeon Silver 4210R处理器组成,每颗处理器配备128 GiB内存;同时配备8块NVIDIA RTX 2080TI显卡,每块显卡拥有11 GiB GDDR6内存,通过PCIe接口连接。
机器学习分类器的实现使用了scikit-learn、TensorFlow、Gensim和Optuna等Python库。
评估
本节详细介绍了基于前述理论方法的实验内容。
结论
在本文中,我们评估了两种利用机器学习模型检测Linux恶意软件的方法:(1) 动态方法,通过分析运行时操作码序列;(2) 静态方法,通过检查二进制文件。我们为每种方法生成了包含良性及恶意Linux应用程序的数据集。
对于动态方法,我们在虚拟化环境中运行这些应用程序,提取其运行时操作码序列,并用这些序列训练了五种机器学习模型。
利益冲突声明
作者声明他们没有已知的财务利益冲突或个人关系可能影响本文的研究结果。
致谢
我们感谢匿名审稿人的宝贵意见和建议,这些意见显著提升了本文的呈现质量。本研究部分得到了西班牙科学与创新部(合同编号PID2021-124463OB-IOO)和加泰罗尼亚自治区(资助编号2021-SGR-00326)的支持。此外,本研究还获得了欧盟Horizon计划(项目编号HORIZON-EU VITAMIN-V,项目编号101093062)的资助。
Juanjo Costa于2002年在加泰罗尼亚理工大学(UPC)获得信息工程学士学位,2011年获得博士学位。自2004年起,他在UPC的计算机架构系担任副教授,主要从事高性能计算、分布式共享内存和操作系统方面的研究。他的研究成果发表在国际期刊和会议上。