恶意程序检测算法的研究与实现
陆涛
摘 要: 恶意程序的入侵方式简单、隐藏方式多且更新速度快,传统恶意程序检测算法检测误报率高、恶意程序更新追踪能力不佳,为此设计了基于概率论和线性叠加的恶意程序检测算法。该算法由行为特征提取模块、行为特征检测模块和恶意程序输出模块组成,行为特征提取模块将被测网络中程序的行为特征提取出来,经由行为特征检测模块对其中的具体行为和隐含行为进行动态检测,给出程序恶意程度文件,恶意程序输出模块以程序恶意程度文件作为输入,根据设计的线性叠加函数和深度检测流程图检测出其中的恶意程序并输出。经实验证明,设计的算法检测误报率低、恶意程序更新追踪能力强。
关键词: 恶意程序; 检测算法; 恶意程度文件; 检测误报率
中图分类号: TN915.08?34; TP309.5 文献标识码: A 文章编号: 1004?373X(2017)03?0085?04
Research and implementation of malicious program detection algorithm
LU Tao
(College of Information Engineering, Nanning University, Nanning 530200, China)
Abstract: Since the malicious program has simple invasion way, massive hidden ways and fast update speed, and the traditional detection algorithm dealing with the malicious program has high false alarm rate of the detection, poor update and tracking ability, a malware program detection algorithm based on probability theory and linear superposition was designed. The algorithm is composed of the behavior feature extraction module, behavior feature detection module and malicious program output module. The program behavior feature in the network under test are extracted by means of the behavior feature extraction module, and its concrete behavior and hidden behavior are dynamically detected via the behavior feature detection module. The malicious degree file of the program is given, and taken as the input of the malicious program output module. According to the designed linear superposition function and depth detection flow chart, the malicious program was detected and output. The experimental results show that the algorithm has low false alarm rate of the detection, and good capacity to track the updated malicious program.
Keywords: malicious program; detection algorithm; malicious degree file; false alarm rate of detection
0 引 言
2009年,源于某视频网站遭受的恶意程序非法入侵,致使网络服务器出现瘫痪,使电子信息厂商对恶意程序检测算法的研究与实现格外关注[1?3]。恶意程序的入侵方式较为简单、隐藏方式众多,且更新速度非常快,导致传统的恶意程序检测算法无法对其进行有效应对,检测误报率高且恶意程序更新追踪能力不佳。因而,设计了一种基于概率论和线性叠加的恶意程序检测算法[4?6]。
文献[7]对基于人脑解析的恶意程序检测算法进行设计,这种算法的设计人员意识到对恶意程序特征的准确提取是算法高水平检测的基础,而计算机往往无法对恶意程序特征进行深度挖掘,故利用构建人脑解析模型增强算法的恶意程序更新追踪能力。这种算法需要大量技术人员实时监管,实现较为不易。文献[8]对基于贝叶斯定理的恶意程序检测算法进行设计,其检测误报率较低,但这种算法需要在相对独立的环境中进行检测工作,这一点将恶意程序的更新隔绝在检测环境外,因此几乎不具备恶意程序更新追踪能力。文献[9]对基于机器学习的恶意程序检测算法进行设计,这种方法的恶意程序更新追踪能力较强,但机器学习只能针对以往出现过的恶意程序进行检测,因此算法的检测误报率较高。文献[10]对基于线性叠加的恶意程序检测算法进行设计,这种方法的檢测误报率较低且拥有较强的恶意程序更新追踪能力。但线性叠加只考虑到了恶意程序的具体行为对网络造成的伤害,若想进一步提高该算法的检测水平,还需通过特定手段对恶意程序的隐含行为进行挖掘和双向检测。
通过对传统恶意程序检测算法进行分析,设计了基于概率论和线性叠加的恶意程序检测算法,利用概率论手段对恶意程序的行为进行深度分析,对恶意程度文件进行线性叠加检测,减少算法的检测误报率,增强算法的恶意程序更新追踪能力。
1 恶意程序检测算法设计
基于概率论和线性叠加的恶意程序检测算法由行为特征提取模块、行为特征检测模块和恶意程序输出模块组成。行为特征提取模块对被测网络中程序的行为特征进行提取,行为特征检测模块利用概率论手段对程序行为特征的恶意程度进行分析。恶意程序输出模块利用线性叠加函数检测恶意程序并输出。
1.1 行为特征提取模块设计
基于概率论和线性叠加的恶意程序检测算法的行为特征提取模块主要由控制芯片组、网络交互器和模拟器组成,其结构如图1所示。
由图1可知,控制芯片组决定着整个行为特征提取模块的工作水平,其负责对模块提取工作中产生的中断请求和直接内存访问进行控制,控制芯片组的接口电路图如图2所示。网络交互器可实现程序在被测网络和行为特征提取模块间进行数据交互。模拟器用于对被测网络进行虚拟化,并提供程序数据交互接口。网络交互器和模拟器均有两组,分别安放在网络入口和出口处。
由图2可知,基于概率论和线性叠加的恶意程序检测算法每进行一次检测工作,都要利用特征提取模块从被测网络提取程序的行为特征,这有助于增强算法的恶意程序更新追踪能力。为了提高行为特征提取模块的整体效率,需要在控制芯片组中写入PE文件。
PE文件是能够在网络中进行直接提取的文件的统称,这类文件是在设计基于概率论和线性叠加的恶意程序检测算法前经由多次实践获取到的。PE文件的内容主要是网络共通非恶意程序,这些程序的内部机制较为完善,永久不会被恶意行为特征入侵。因此,行为特征提取模块可以对PE文件进行忽略提取,以提高模块整体效率。同时,用户也可手动开启行为特征提取模块对PE文件进行提取。
随后,行为特征检测模块将对行为特征提取模块的提取结果进行分析。
1.2 行为特征检测模块设计
行为特征检测模块基于概率论和线性叠加的恶意程序检测算法,对特征提取模块提取结果的分析使用概率论手段,旨在获取恶意程序的具体行为和隐含行为。恶意程序行为包括具体行为和隐含行为,如图3所示。
由图3可知,具体行为是指恶意程序直接利用网络漏洞进行入侵的行为,这种行为比较容易被发现;隐含行为是指恶意程序设计者模仿非恶意程序行为进行设计,用于迷惑用户发出不正当指令的行为,包括行动指令行为和指令调用行为,这种行为具有一定的传播和侵蚀能力,而且分析较为困难。
行为特征检测模块对恶意程序行为的分析是一种动态检测方式。在具体行为下,恶意程序的恶意代码会直接体现在行为文件中,行为文件数据量很大,用户通常不会主动查阅,这就需要借助概率论构建概率论测试文件对行为文件中的具体行为进行定位和审查,得出程序恶意程度文件,再经由恶意程序输出模块进行深度检测。
在恶意程序的隐含行为下,指令行为和指令调用行为均会在恶意程序的行为文件中嵌入指令代码,这些指令代码可用概率论进行动态检测,如图4所示。
由图4可知,行为特征检测模块先进行恶意文件隐含行为的文件格式分析,利用概率论对文件格式进行模拟,建立概率论测试文件。行为特征检测模块可根据概率论测试文件获取虚拟程序和程序中的二进制代码,对二者同时进行动态检测可获取程序恶意程度文件。
将程序的具体行为和隐含行为的程序恶意程度文件组合起来,共同传至恶意程序输出模块进行深度检测。
2 恶意程序检测算法软件设计
基于概率论和线性叠加的恶意程序检测算法在软件中给出行为特征检测模块的概率论分析函数,以及恶意程序输出模块的线性叠加函数和深度检测流程。
2.1 概率论分析函数和线性叠加函数设计
概率论分析函数的作用是对程序行为特征的恶意程度进行挖掘。将行为特征提取模块的提取结果组成集合[K],选取[K]中阈值的最大值[KMAX]和最小值[KMIN](下角标代表二者的位置坐标值),则恶意程序与非恶意程序间阈值的概率差[M]可表示为:
式中[Lk]表示行为特征[k]的阈值。[Bk]值越大,程序行为特征的恶意程度就越高。
用[Ak]表示程序的被测点,[ak]表示被测点行为阈值,则线性叠加函数[T]可表示为:
2.2 恶意程序输出模块流程设计
基于概率论和线性叠加的恶意程序检测算法设计的恶意程序输出模块的深度检测流程,如图5所示。
由图5可知,恶意程序输出模块的检测实质是利用线性叠加函数将特征检测模块的程序恶意程度文件串联起来,给出线性叠加函数[T]值。基于概率论和线性叠加的恶意程序检测算法对误报率的要求在0.4%以下,故根据经验将恶意程序的预设值设为15,如果[T≥15]则判定被测程序为恶意程序。
恶意程序被检测出来后,恶意程序输出模块将构建恶意程序行为文件,作为日后检测工作的参考数据,并将该文件上传至云端,同时向用户发出警报。
3 实验验证
实验对本文算法、人脑解析算法和机器学习算法的检测误报率和恶意程序更新追踪能力进行对比验证。在被测网络中给出100个程序并产生2 000个程序行为,其中的恶意行为有300个,恶意程序有18个。
3.1 检测误报率验证
恶意程序检测算法的检测误报率分为恶意程序漏报率和非恶意程序误报率。记录下实验中检测到第15,30,45,60,85,100个程序时,算法的恶意程序漏报率和非惡意程序误报率的各自合计值,如图6,图7所示。
由图6,图7可知,本文算法的恶意程序漏报率和非恶意程序的误报率均明显低于其他两种算法,证明本文算法的检测误报率低。
3.2 恶意程序更新追踪能力验证
随机选择被测网络中的70个非恶意程序和15个恶意程序进行更新,使恶意程序更难被检测到。用算法对更新后恶意程序的检测时间表示其恶意程序更新追踪能力,实验曲线如图8所示。
由图8可知,本文算法对更新后恶意程序花费的检测时间最少,证明本文算法恶意程序更新追踪能力强。
4 结 论
本文通过对传统的恶意程序检测算法进行分析,设计了一种基于概率论和线性叠加的恶意程序检测算法,其由行为特征提取模块、行为特征检测模块和恶意程序输出模块组成。行为特征提取模块主要由控制芯片组、网络交互器和模拟器组成,算法每进行一次检测工作都要利用以上三种元件从被测网络中提取程序行为特征,提取到的行为特征将通过行为特征检测模块和恶意程序输出模块检测出其中的恶意程序。实验结果说明设计的算法具有檢测误报率低、恶意程序更新追踪能力强的优点。
参考文献
[1] 韩奕,姜建国,仇新梁,等.基于云计算的恶意程序检测平台设计与实现[J].计算机工程,2014,40(4):26?31.
[2] 张跃骞,何泾沙.基于机器学习的Windows环境下恶意程序检测系统[J].重庆邮电大学学报(自然科学版),2014,26(6):778?784.
[3] 熊皓,陈杰,江坤航.一种基于行为分析的Android系统恶意程序检测模型[J].湖北理工学院学报,2015,31(3):42?46.
[4] 张叶慧,彭新光,蔡志标.基于类别以及权限的Android恶意程序检测[J].计算机工程与设计,2014,35(5):1568?1571.
[5] 刘晓蔚.基于数据挖掘的恶意程序智能检测研究[J].东莞理工学院学报,2015,22(1):38?42.
[6] 吴志忠,周学海.基于用户行为周期的移动设备异常检测方法[J].计算机系统应用,2015,24(4):184?189.
[7] 田朔玮,杨岳湘,何杰,等.基于统计特征的隐匿p2p主机实时检测系统[J].计算机应用,2015,35(7):1892?1896.
[8] 朱俚治.一种识别病毒和蠕虫的算法[J].计算机测量与控制,2016,24(3):224?227.
[9] 曹海英,元元.程序代码抄袭检测中串匹配算法的研究[J].信息安全与技术,2015,6(2):34?36.
[10] 秦绍辉,胥光申,沈丹峰,等.基于LabVIEW的喷气织机综合水平测试系统[J].西安工程大学学报,2016,30(1):107?111.
摘 要: 恶意程序的入侵方式简单、隐藏方式多且更新速度快,传统恶意程序检测算法检测误报率高、恶意程序更新追踪能力不佳,为此设计了基于概率论和线性叠加的恶意程序检测算法。该算法由行为特征提取模块、行为特征检测模块和恶意程序输出模块组成,行为特征提取模块将被测网络中程序的行为特征提取出来,经由行为特征检测模块对其中的具体行为和隐含行为进行动态检测,给出程序恶意程度文件,恶意程序输出模块以程序恶意程度文件作为输入,根据设计的线性叠加函数和深度检测流程图检测出其中的恶意程序并输出。经实验证明,设计的算法检测误报率低、恶意程序更新追踪能力强。
关键词: 恶意程序; 检测算法; 恶意程度文件; 检测误报率
中图分类号: TN915.08?34; TP309.5 文献标识码: A 文章编号: 1004?373X(2017)03?0085?04
Research and implementation of malicious program detection algorithm
LU Tao
(College of Information Engineering, Nanning University, Nanning 530200, China)
Abstract: Since the malicious program has simple invasion way, massive hidden ways and fast update speed, and the traditional detection algorithm dealing with the malicious program has high false alarm rate of the detection, poor update and tracking ability, a malware program detection algorithm based on probability theory and linear superposition was designed. The algorithm is composed of the behavior feature extraction module, behavior feature detection module and malicious program output module. The program behavior feature in the network under test are extracted by means of the behavior feature extraction module, and its concrete behavior and hidden behavior are dynamically detected via the behavior feature detection module. The malicious degree file of the program is given, and taken as the input of the malicious program output module. According to the designed linear superposition function and depth detection flow chart, the malicious program was detected and output. The experimental results show that the algorithm has low false alarm rate of the detection, and good capacity to track the updated malicious program.
Keywords: malicious program; detection algorithm; malicious degree file; false alarm rate of detection
0 引 言
2009年,源于某视频网站遭受的恶意程序非法入侵,致使网络服务器出现瘫痪,使电子信息厂商对恶意程序检测算法的研究与实现格外关注[1?3]。恶意程序的入侵方式较为简单、隐藏方式众多,且更新速度非常快,导致传统的恶意程序检测算法无法对其进行有效应对,检测误报率高且恶意程序更新追踪能力不佳。因而,设计了一种基于概率论和线性叠加的恶意程序检测算法[4?6]。
文献[7]对基于人脑解析的恶意程序检测算法进行设计,这种算法的设计人员意识到对恶意程序特征的准确提取是算法高水平检测的基础,而计算机往往无法对恶意程序特征进行深度挖掘,故利用构建人脑解析模型增强算法的恶意程序更新追踪能力。这种算法需要大量技术人员实时监管,实现较为不易。文献[8]对基于贝叶斯定理的恶意程序检测算法进行设计,其检测误报率较低,但这种算法需要在相对独立的环境中进行检测工作,这一点将恶意程序的更新隔绝在检测环境外,因此几乎不具备恶意程序更新追踪能力。文献[9]对基于机器学习的恶意程序检测算法进行设计,这种方法的恶意程序更新追踪能力较强,但机器学习只能针对以往出现过的恶意程序进行检测,因此算法的检测误报率较高。文献[10]对基于线性叠加的恶意程序检测算法进行设计,这种方法的檢测误报率较低且拥有较强的恶意程序更新追踪能力。但线性叠加只考虑到了恶意程序的具体行为对网络造成的伤害,若想进一步提高该算法的检测水平,还需通过特定手段对恶意程序的隐含行为进行挖掘和双向检测。
通过对传统恶意程序检测算法进行分析,设计了基于概率论和线性叠加的恶意程序检测算法,利用概率论手段对恶意程序的行为进行深度分析,对恶意程度文件进行线性叠加检测,减少算法的检测误报率,增强算法的恶意程序更新追踪能力。
1 恶意程序检测算法设计
基于概率论和线性叠加的恶意程序检测算法由行为特征提取模块、行为特征检测模块和恶意程序输出模块组成。行为特征提取模块对被测网络中程序的行为特征进行提取,行为特征检测模块利用概率论手段对程序行为特征的恶意程度进行分析。恶意程序输出模块利用线性叠加函数检测恶意程序并输出。
1.1 行为特征提取模块设计
基于概率论和线性叠加的恶意程序检测算法的行为特征提取模块主要由控制芯片组、网络交互器和模拟器组成,其结构如图1所示。
由图1可知,控制芯片组决定着整个行为特征提取模块的工作水平,其负责对模块提取工作中产生的中断请求和直接内存访问进行控制,控制芯片组的接口电路图如图2所示。网络交互器可实现程序在被测网络和行为特征提取模块间进行数据交互。模拟器用于对被测网络进行虚拟化,并提供程序数据交互接口。网络交互器和模拟器均有两组,分别安放在网络入口和出口处。
由图2可知,基于概率论和线性叠加的恶意程序检测算法每进行一次检测工作,都要利用特征提取模块从被测网络提取程序的行为特征,这有助于增强算法的恶意程序更新追踪能力。为了提高行为特征提取模块的整体效率,需要在控制芯片组中写入PE文件。
PE文件是能够在网络中进行直接提取的文件的统称,这类文件是在设计基于概率论和线性叠加的恶意程序检测算法前经由多次实践获取到的。PE文件的内容主要是网络共通非恶意程序,这些程序的内部机制较为完善,永久不会被恶意行为特征入侵。因此,行为特征提取模块可以对PE文件进行忽略提取,以提高模块整体效率。同时,用户也可手动开启行为特征提取模块对PE文件进行提取。
随后,行为特征检测模块将对行为特征提取模块的提取结果进行分析。
1.2 行为特征检测模块设计
行为特征检测模块基于概率论和线性叠加的恶意程序检测算法,对特征提取模块提取结果的分析使用概率论手段,旨在获取恶意程序的具体行为和隐含行为。恶意程序行为包括具体行为和隐含行为,如图3所示。
由图3可知,具体行为是指恶意程序直接利用网络漏洞进行入侵的行为,这种行为比较容易被发现;隐含行为是指恶意程序设计者模仿非恶意程序行为进行设计,用于迷惑用户发出不正当指令的行为,包括行动指令行为和指令调用行为,这种行为具有一定的传播和侵蚀能力,而且分析较为困难。
行为特征检测模块对恶意程序行为的分析是一种动态检测方式。在具体行为下,恶意程序的恶意代码会直接体现在行为文件中,行为文件数据量很大,用户通常不会主动查阅,这就需要借助概率论构建概率论测试文件对行为文件中的具体行为进行定位和审查,得出程序恶意程度文件,再经由恶意程序输出模块进行深度检测。
在恶意程序的隐含行为下,指令行为和指令调用行为均会在恶意程序的行为文件中嵌入指令代码,这些指令代码可用概率论进行动态检测,如图4所示。
由图4可知,行为特征检测模块先进行恶意文件隐含行为的文件格式分析,利用概率论对文件格式进行模拟,建立概率论测试文件。行为特征检测模块可根据概率论测试文件获取虚拟程序和程序中的二进制代码,对二者同时进行动态检测可获取程序恶意程度文件。
将程序的具体行为和隐含行为的程序恶意程度文件组合起来,共同传至恶意程序输出模块进行深度检测。
2 恶意程序检测算法软件设计
基于概率论和线性叠加的恶意程序检测算法在软件中给出行为特征检测模块的概率论分析函数,以及恶意程序输出模块的线性叠加函数和深度检测流程。
2.1 概率论分析函数和线性叠加函数设计
概率论分析函数的作用是对程序行为特征的恶意程度进行挖掘。将行为特征提取模块的提取结果组成集合[K],选取[K]中阈值的最大值[KMAX]和最小值[KMIN](下角标代表二者的位置坐标值),则恶意程序与非恶意程序间阈值的概率差[M]可表示为:
式中[Lk]表示行为特征[k]的阈值。[Bk]值越大,程序行为特征的恶意程度就越高。
用[Ak]表示程序的被测点,[ak]表示被测点行为阈值,则线性叠加函数[T]可表示为:
2.2 恶意程序输出模块流程设计
基于概率论和线性叠加的恶意程序检测算法设计的恶意程序输出模块的深度检测流程,如图5所示。
由图5可知,恶意程序输出模块的检测实质是利用线性叠加函数将特征检测模块的程序恶意程度文件串联起来,给出线性叠加函数[T]值。基于概率论和线性叠加的恶意程序检测算法对误报率的要求在0.4%以下,故根据经验将恶意程序的预设值设为15,如果[T≥15]则判定被测程序为恶意程序。
恶意程序被检测出来后,恶意程序输出模块将构建恶意程序行为文件,作为日后检测工作的参考数据,并将该文件上传至云端,同时向用户发出警报。
3 实验验证
实验对本文算法、人脑解析算法和机器学习算法的检测误报率和恶意程序更新追踪能力进行对比验证。在被测网络中给出100个程序并产生2 000个程序行为,其中的恶意行为有300个,恶意程序有18个。
3.1 检测误报率验证
恶意程序检测算法的检测误报率分为恶意程序漏报率和非恶意程序误报率。记录下实验中检测到第15,30,45,60,85,100个程序时,算法的恶意程序漏报率和非惡意程序误报率的各自合计值,如图6,图7所示。
由图6,图7可知,本文算法的恶意程序漏报率和非恶意程序的误报率均明显低于其他两种算法,证明本文算法的检测误报率低。
3.2 恶意程序更新追踪能力验证
随机选择被测网络中的70个非恶意程序和15个恶意程序进行更新,使恶意程序更难被检测到。用算法对更新后恶意程序的检测时间表示其恶意程序更新追踪能力,实验曲线如图8所示。
由图8可知,本文算法对更新后恶意程序花费的检测时间最少,证明本文算法恶意程序更新追踪能力强。
4 结 论
本文通过对传统的恶意程序检测算法进行分析,设计了一种基于概率论和线性叠加的恶意程序检测算法,其由行为特征提取模块、行为特征检测模块和恶意程序输出模块组成。行为特征提取模块主要由控制芯片组、网络交互器和模拟器组成,算法每进行一次检测工作都要利用以上三种元件从被测网络中提取程序行为特征,提取到的行为特征将通过行为特征检测模块和恶意程序输出模块检测出其中的恶意程序。实验结果说明设计的算法具有檢测误报率低、恶意程序更新追踪能力强的优点。
参考文献
[1] 韩奕,姜建国,仇新梁,等.基于云计算的恶意程序检测平台设计与实现[J].计算机工程,2014,40(4):26?31.
[2] 张跃骞,何泾沙.基于机器学习的Windows环境下恶意程序检测系统[J].重庆邮电大学学报(自然科学版),2014,26(6):778?784.
[3] 熊皓,陈杰,江坤航.一种基于行为分析的Android系统恶意程序检测模型[J].湖北理工学院学报,2015,31(3):42?46.
[4] 张叶慧,彭新光,蔡志标.基于类别以及权限的Android恶意程序检测[J].计算机工程与设计,2014,35(5):1568?1571.
[5] 刘晓蔚.基于数据挖掘的恶意程序智能检测研究[J].东莞理工学院学报,2015,22(1):38?42.
[6] 吴志忠,周学海.基于用户行为周期的移动设备异常检测方法[J].计算机系统应用,2015,24(4):184?189.
[7] 田朔玮,杨岳湘,何杰,等.基于统计特征的隐匿p2p主机实时检测系统[J].计算机应用,2015,35(7):1892?1896.
[8] 朱俚治.一种识别病毒和蠕虫的算法[J].计算机测量与控制,2016,24(3):224?227.
[9] 曹海英,元元.程序代码抄袭检测中串匹配算法的研究[J].信息安全与技术,2015,6(2):34?36.
[10] 秦绍辉,胥光申,沈丹峰,等.基于LabVIEW的喷气织机综合水平测试系统[J].西安工程大学学报,2016,30(1):107?111.