APP下载

传统和深度学习方法在恶意软件检测中的应用

2021-10-21张燕子

电视技术 2021年8期
关键词:静态深度特征

张燕子

(西安邮电大学信息中心,陕西 西安 710121)

0 引 言

基于深度学习模型进行网络空间安全特别是软件安全检测方面的研究,已成为当前的热点。XIN Y[1]等人分析了机器学习和深度学习算法在网络空间入侵检测的关键案例。SUCIU O[2]讨论了恶意软件的对抗示例性方面的问题。LI H[3]等人提出一种基于双目标对抗网络的反例攻击方法。CHEN B[4]等人提出两种白盒方法和一种黑盒方法来攻击恶意软件检测器以及利用GAN进行某种防御训练。JAVAID[5]等人通过基准数据集的改进版本来验证基于NIDS的自学学习的可用性。YUANCHENG L[6]等人提出了一种基于自动编码器和深度信念网络的混合恶意代码检测方案,具有较好的检测性能。TAO M[7]等人提出了一种结合谱聚类(SC)和深度神经网络(DNN)算法的SCDNN算法,提升了检测准确率。以上的研究方法都是通过深度学习模型改进和升级的。本文对传统恶意软件检测方法与基于深度学习的恶意软件检测方法之间的特点、区别和联系进行分析,并讨论了软件安全未来可能面临的主要挑战。

1 研究背景

国家计算机网络应急技术处理协调中心发布的《计算机恶意程序传播渠道安全监测报告》显示,高危恶意程序占恶意程序总数的2/3,木马类恶意程序占45.5%。2019年,有超过6 200万的计算机恶意软件样本已经备案,其中包含计算机恶意程序家族66万多个,由此可见对恶意软件的防控不可忽视。根据Malwarebytes Labs发布的《2020 State of Malware Report》,2019年的网络威胁主要是诈骗银行木马Emotet,攻击者通过编写恶意宏代码的钓鱼软件作为载荷附着在邮件中,从而进行病毒的传播。国家计算机网络应急技术处理协调中心发布了《2019年我国互联网网络安全现状》,报告显示软件安全局势出现向好的一面,恶意程序增量首次出现下降,这为以后的检测和防控工作带来希望。

2 恶意软件分类

常见的恶意软件分类及其特点如表1所示。

表1 常见的恶意软件分类及其特点

3 传统的恶意软件检测方法

3.1 静态分析

静态分析是恶意软件分析过程的第一步,负责检查可执行文件但不查看实际的指令。基本的静态分析可以判断文件是否存在恶意行为,提供关于文件功能信息或生成简单网络签名的信息。静态分析对复杂的恶意软件基本上无效,往往错过一些较为重要的恶意行为。

3.1.1 消息摘要算法5

消息摘要算法5(简称MD5)是一种常用的恶意软件识别方法。通过哈希函数运行恶意软件,生成的哈希值用于识别某种特定的恶意软件。在深度学习中,特征提取哈希是一种常用算法,它可以将任意大小的数据映射成固定大小的数据。

3.1.2 PEiD检测

PEiD是检测包装文件的常用方法,通常利用其来检测通过打包器或编译器生成的文件。由于恶意软件经常被包装或混淆,以至于其生成的恶意文件更难被检测,因此会严重阻碍恶意软件的分析工作。PEiD在工作中也存在安全隐患,原因是其插件往往会自动运行恶意可执行文件,因此需要营造一个安全的恶意运行和分析环境。

3.1.3 可执行文件格式分析

PE文件格式是一种数据结构类型,Windows系统中加载的几乎所有可执行代码的文件都是PE文件格式。PE文件从头部开始,包括代码、应用程序类型、库函数等信息,文件头部中的信息对恶意软件分析人员很有价值。

3.1.4 交互式反汇编专家(IDA Pro)

IDA Pro作为高级的静态分析方法,也是大多数恶意软件分析人员、漏洞分析人员的首选反汇编工具。字符串是恶意软件静态分析的起点,利用其交叉引用特性来查看字符串在代码中的确切位置和使用方式,另外反汇编器提供了程序在第一个指令执行之前的快照。

3.2 动态分析

动态分析技术是恶意软件分析过程的第二步。动态分析通常是在基本静态分析作用效果不明显之后采取的加强措施,它可以在恶意软件运行时监视恶意软件,或者在恶意软件执行后检查系统。与静态分析不同,动态分析允许查看恶意软件的真正功能和内部信息。动态分析也是识别恶意软件的有效方法。

3.2.1 沙 箱

沙箱技术作为基本的动态分析工具,也是一种安全机制。它的作用在于为不被信任的程序提供了一个安全的运行环境,并且系统本身不会被真正的损害,这弥补了PEiD检测的不足。沙箱利用在虚拟环境中的某些条件来模拟网络服务,其目的是确保被测试的软件或恶意软件能够正常运行。沙箱并不是完美的,因为它没有命令行选项而无法执行命令操作。另外,沙箱可能不会记录所有事件,因为它没有足够的等候时间。

3.2.2 Process Monitor

Process Monitor(简 称Procmon)是Windows系统中的高级监视工具,通过监视某些注册表、网络进程及线程活动来判断有无恶意行为。利用Procmon可监视所有运行时的系统调用,但不可能检查全部。另外,其长时间工作会占用可用内存以致内存耗尽,最终使虚拟机无法工作。

3.2.3 Process Explorer

Process Explorer作为任务管理器,通常在执行动态分析使用。它可以对系统内运行的进程(包括进程、DLL、系统信息)提供有利的分析。此外还可使用它来启动、验证、终止进程。Process Explorer可以将正在监视的进程以树形结构可视化显示。

3.2.4 OllyDbg

OllyDbg是用于恶意软件分析测试的高级动态调试器。调试器是一种软件或硬件,用于测试另一个程序的运行情况并查看其在程序运行时的动态视图,这些信息很难从反汇编器获得。WinDbg作为OllyDbg的升级版,可以辅助其进行内核调试和Rootkit分析。

动态技术存在局限性,并不是所有的代码路径都可以在恶意软件运行时执行。目前较好的办法是使用先进的动态或动静结合技术来解决强制恶意软件执行的问题。

3.3 常用检测工具

VirusTotal是一个使用许多不同的防病毒程序来扫描恶意软件的在线服务网站,同时也是一个综合性的恶意软件数据集。Wireshark是一个动态分析网络数据包和网络协议的工具,可以捕获恶意网络流量并分析许多不同的网络协议。PE Explorer是用来查看可执行文件格式的分析工具,将其作为静态解压缩器可自动解包文件。Capture BAT是一个用于监控正在运行的恶意软件的动态分析工具,其主要负责监视文件系统、注册表及进程活动。

4 基于深度学习的恶意软件检测方法

深度学习是机器学习的一个重要分支。面对海量网络应用流量数据时,传统的检测方法很难有效判断新型恶意程序的特征,即使设计出恶意特征数据库,也需要耗费大量人力成本。基于深度学习技术设计的智能化恶意检测方法可以有效检测新出现的样本,极大程度地减少人工参与的工作量,具有较强的泛化能力。下面列举几个典型的深度学习检测模型。

4.1 Malconv模型

MalConv模型基于门控卷积神经网络(Gated-CNN)实现端到端的恶意代码检测模型。输入层以二进制文件作为数据集,如PE主要分析其文件头部信息,经过嵌入层的数据预处理后得到固定大小的特征映射矩阵,将每个输入字节映射到D维向量,在卷积层将特征图与卷积核进行点积运算,通过两个激活函数得到输出特征图,采用0元素填充,利用门控层用于解决梯度消失的问题,采用最大池化进行降采样,再经过全连接层和Softmax层,得到是否为恶意程序的概率。MalConv模型结构[8]如图1 所示。

图1 Malconv模型结构

4.2 ScaleMalNet模型

ScaleMalNet是一种用于恶意软件检测的可扩展深度学习网络体系结构。该框架以分布方式从不同来源收集恶意软件样本,并以分布式方式应用预处理,能够实时且按需处理大量恶意软件样本。ScaleMalNet框架对终端用户主机收集的恶意软件进行深入学习,并遵循两个阶段的恶意软件分析过程。在第一阶段,采用静态和动态分析相结合的方法对恶意软件进行分类;在第二阶段,利用图像处理方法将恶意软件分为相应的恶意软件类别。ScaleMalNe对于恶意程序的实时分析框架[9]如图2所示。

图2 ScaleMalNet模型实时分析框架图

4.3 DroidDetector模型

DroidDetector是一款基于深度学习开发的Android恶意软件检测引擎[10],本质上利用关联规则挖掘技术来表征恶意软件的特征。该引擎以在线方式自动检测应用程序是否为恶意软件,一旦应用程序的.apk文件被提交,DroidDetector会检查其完整性并确定其是否为完整、正确、合法的Android应用程序。接下来,DroidDetector执行静态分析以获取此应用程序使用的权限和敏感API,通过在DroidBox中安装并运行此应用程序一段固定时间来执行动态分析。通过这种方式,可以识别正在执行的动态行为。DroidDetector的框架模型如图3所示。

图3 DroidDetector框架结构图

5 传统与基于深度学习的检测方法分析

传统的恶意程序检测方法主要通过人工方式对软件的特征规则信息进行设计与提取,将已经确定的恶意软件的特征码与目标待检测程序的特征码进行比对,根据比对的匹配程度设定判定阈值,一般分为恶意与非恶意两种结果。这种方式的优点在于特征获取比较直观,具有较为丰富的语义信息;缺点是需要大量的人工制定,并且对于未出现在恶意程序特征库中的新型恶意软件无法做出有效 分类。

基于深度学习卷积神经网络的恶意程序检测方法主要通过神经网络自动提取软件中的特征信息,经过提前设计好的分类器,可以对海量样本数量进行有效预测与分类。这种方式的优点是减少了人工提取特征信息的工作量,可自动学习与判别新的恶意程序信息;缺点是可解释性差,模型对于分析人员来说是无法掌握判定理由的黑盒,难以提供确切的可信任决策依据。

分别从检测机制原理、使用范围、检测时间及存在的问题等几个方面对传统检测方法和深度学习检测方法进行了比较,比较结果如表1所示。

表1 检测方法对比分析表

6 结 语

传统的恶意程序检测技术一般都需要大量的人工参与,难以适应互联网海量应用数据的检测。利用深度学习框架设计的智能恶意程序检测方法能够自动化批处理海量样本,并且对于新型恶意程序检测具有良好的泛化能力,但普遍存在可解释性差、难以提供决策依据的缺点。在未来的恶意软件检测技术发展中,用人工智能技术为传统检测方法赋能,是一个很有价值的发展方向,还有很多问题有待解决。

猜你喜欢

静态深度特征
最新进展!中老铁路开始静态验收
深度理解一元一次方程
如何表达“特征”
不忠诚的四个特征
深度观察
深度观察
深度观察
抓住特征巧观察
具7μA静态电流的2A、70V SEPIC/升压型DC/DC转换器
线性代数的应用特征