APP下载

基于BP 神经网络算法的恶意代码检测系统

2020-12-25陈淑珍

莆田学院学报 2020年5期
关键词:正确率数据包代码

张 华, 陈淑珍

(1.福建警察学院 计算机与信息安全管理系, 福建 福州 350007;2.福建警察学院 网络安全与电子物证研究所, 福建 福州 350007)

0 引言

随着互联网不断进步, 网络传输数量越来越大, 大数据、 云平台等网络形式发展较为完善,但仍容易受到恶意代码攻击, 恶意代码直接影响网络正常运行[1-2]。 僵尸程序、 特洛伊木马、 蠕虫等对互联网造成威胁的代码均属于恶意代码。恶意代码具有伪装性强以及传播速度极快的特点, 及时发现恶意代码并实时处理对网络安全运行具有重要意义[3-4]。

神经网络算法是目前广泛应用于各领域的高效算法[5-6], 众多研究学者已将神经网络算法应用于各种检测方法中。 BP 神经网络算法是一种基于误差逆传播的应用很广泛的神经网络算法,将BP 神经网络算法应用于恶意代码检测系统中, 利用神经元激发获取激发路径, 令神经网络仅学习被激发路径的权重, 改善传统神经网络算法训练时间过长、 收敛较难的缺陷, 降低恶意代码检测系统检测误差, 提升检测效率[7-9]。

恶意代码攻击会对网络造成破坏性影响, 其中包括流量异常、 协议异常以及内容异常等, 这些异常可能单独出现, 也可能同时出现, 以往恶意代码检测系统检测实时性较差, 且误报率与漏报率较高, 检测效率低[10-12]。 为有效检测网络中出现的恶意代码, 研究基于BP 神经网络算法的恶意代码检测系统, 提取恶意代码特征, 利用BP 神经网络学习, 实现对系统检测范围内所有恶意代码的快速检测。

1 恶意代码检测系统

1.1 系统总体架构

本文研究的恶意代码检测系统, 主要包括数据包捕获模块、 协议分析模块、 预处理模块、BP 神经网络检测模块以及响应模块, 还包括事件产生器、 事件分析器、 事件数据库以及响应单元等部分。 采用该形式设计的恶意代码检测系统可适应不同网络, 能够提升恶意代码检测系统的互操作性和互用性。 基于BP 神经网络算法的恶意代码检测系统(简称 “本文系统”) 总体结构如图1 所示。

由图1 可以看出, 采用本文系统进行恶意代码检测大体流程如下: 通过过滤数据包获取恶意代码检测系统所需数据包, 数据包捕获模块获取系统所需数据包后发送至协议分析模块; 协议分析模块接收数据包后依据TCP / IP 协议按照从下至上顺序解析数据包, 并转换至传输层连接记录形式, 将符合要求的数据发送至预处理模块; 预处理模块依据数据包类型利用数学向量代替数据信息作为输入信号传输至BP 神经网络; BP 神经网络检测模块提取恶意代码特征并利用BP 神经网路算法检测网络中恶意代码, 该算法仅针对激发路径权值调整训练样本, 同时实时更新恶意代码特征库, 将检测结果发送至响应模块处理;响应模块具有扩展功能, 通过扩展功能对检测的恶意代码做出相应处理, 最后实现对恶意代码的有效检测。

1.2 提取恶意代码特征

BP 神经网络检测模块在提取恶意代码特征前, 需对恶意代码进行分析。 因此, 利用动态二进制与静态反汇编技术结合分析恶意代码[13-15]。恶意代码特征提取结构图如图2 所示。

由图2 可知, 通过不同方法分析代码可获取恶意代码不同特征。

(1) 动态二进制分析

依据代码特征, 基于动态二进制插桩平台Pin 编写指令提取插件, 通过以上过程记录动态指令流并获取所分析数据, 进行动态污点分析(动态跟踪恶意代码运行过程); 在动态污点分析基础上通过API 函数提取API 调用关系并生成污点文件, 然后将文件输出到行为特征提取模块。 根据动态文件从恶意代码家族的所有行为特征中挖掘出最大公共部分, 最后储存到恶意代码特征提取库。

图2 恶意代码特征提取结构图

(2) 静态反汇编分析

将上述动态二进制分析获取Dump 样本作为输入, 但大多恶意代码进行了加壳处理, 通过对代码文件进行脱壳处理, 实现从恶意代码的PE文件中获取静态特征; 选取反汇编工具IDA Pro实施静态分析, 将可执行代码转换成容易分析的汇编代码, 并通过所记录动态信息以及静态分析结果提取恶意代码特征集分析网络代码。 静态特征提取的具体过程如下。

1) 查壳与脱壳。 通常恶意代码采用加壳工具(UPX、ASPACK) 处理隐藏真实意图, 这里采用查壳软件扫描代码判断是否加壳, 如果检测到代码已加壳, 则使用脱壳软件对代码进行脱壳,然后输出到反汇编模块。

2) 反汇编模块。 该模块将可执行的二进制代码转换成汇编代码。 由于恶意代码一般以可执行文件形式存在, 若要分析代码结构, 需要进行反汇编。 本文采用静态反汇编工具IDA Pro 将恶意代码样本或目标代码反编译成汇编文件, 并将汇编文件输出到特征提取模块, 提取出恶意代码静态特征。

1.3 基于BP 神经网络的恶意代码检测方法

提取恶意代码特征后, 利用BP 神经网络算法实现恶意代码检测。 BP 神经网络是一种前馈性神经网络, 由输入层、 隐含层和输出层通过全互联方式组成。 BP 神经网络可通过学习调整网络中的连接权值, 即通过学习不断调整网络实际输出与期望输出之间的误差, 误差信号由输出层反向逐层修正神经元间的连接权值。 网络实际输出受输入影响, 且BP 神经网络除输入单元外基本处理单元呈现非线性关系。 而差异输入可激发不同神经元, 所激发神经元又能组成激发路径,最后通过激发路径权值调整训练样本, 实现网络逐渐趋向收敛, 提高检测准确率。

设BP 神经网络中输入层包含神经元数量为n , 两个隐含层包含神经元数量分别为p1以及p2, 输出层包含神经元数量为m 。 BP 神经网络选取sigmoid 函数作为神经元的激活函数。

BP 神经网络学习算法如下。

1) 获取网络实际输出。 设神经网络中各输入模式用X = x1, x2, …, xn表示, 所获取网络实际输出为Y = y1, y2, …, yn。

2) 获取BP 神经网络计算误差。 设BP 神经网络中训练集存在样本数量为k , 期望输出用R获取神经网络的误差函数, 可得神经网络训练集内全部样本的总误差为

3) 修正神经网络权值。 误差函数的极小值选取梯度下降法获取。 以Δqij表示权值qij的更新量, 如式(1):

式(1)中, λ 表示学习速率。

BP 神经网络针对差异输入可激发不同神经元, 最终利用所激发神经元组成激发路径[14]。将BP 神经网络应用于恶意代码检测系统中的具体步骤如下。

1) 激发全部输入神经元。

2) 比较隐含层中全部神经元, 激发存在最大绝对值输出的神经元, 设一次前向过程竞争所激发神经元数量为nb, 需保证所输出nb个神经元绝对值为最大, 其中b 表示经过b 次竞争获取最大绝对值输出的神经元, nb需要在神经元竞争前设置为正整数; 隐含层在竞争最大数量为B时, 表示其具有隐含层数量为B 。

3) 激发全部输出神经元。 利用上述过程获取神经元激发总数量, 如式(2):

式(2)中, Nin与Nout分别表示输入层神经元数量以及输出层神经元数量。 利用最终N(r) 个激发神经元所组成的激发路径实现基于神经网络的恶意代码检测[15]。

基于神经网络的恶意代码检测因仅针对激发路径权值调整训练样本, 因此降低该算法计算复杂度以及收敛速度。

2 实验分析

为有效检测本文系统检测恶意代码的有效性, 在CPU 为英特尔i7, 内存与硬盘分别为4 G和160 G 的计算机中验证本文方法检测性能。 选取Matlab 神经网络工具箱作为仿真平台, 搭建实验环境。 该工具箱中有包括BP 神经网络在内的大量神经网络, 工作性能良好。

实验选取500 个正常代码和500 个不同类型的恶意代码作为训练样本集, 从EMBER 大型开源数据集[16]中选取实验用恶意代码, 选取该数据集中的5 000 条浏览记录作为系统检测样本。本文系统检测恶意代码界面如图3 所示。

为直观展示本文系统检测性能, 采用本文系统检测5 000 条浏览记录中存在恶意代码情况,并将本文系统与梯度下降系统、 自适应系统进行对比, 3 种系统在不同学习率情况下的学习次数如表1 所示。

通过表1 实验结果可以看出, 采用本文系统在不同学习率情况下的学习次数均为最低, 尤其是学习率为0.50 时, 本文系统的学习次数仅为32 次, 而梯度下降系统以及自适应系统的学习次数高达235 和165 次。 实验结果表明, 本文系统具有较高的收敛效率, 采用的BP 神经网络算法复杂度低, 可有效提升计算效率以及检测精准度。检测正确率、 漏报率以及误报率是直观评价检测系统检测性能的重要指标, 其中正确检测恶意代码样本数除以样本总数为检测正确率; 将恶意代码检测为正确代码数量除以样本总数为检测漏报率; 将正确代码检测为恶意代码数量除以样本总数为检测误报率。 3 种系统识别5000 条浏览记录中存在恶意代码的检测正确率、 漏报率以及误报率结果如图4 所示。

表1 3 种系统学习次数对比

图3 本文系统检测界面图

通过图4 实验结果可以看出, 本文系统检测5 000 条浏览记录中的恶意代码检测正确率较高,检测数量为5 000 条时, 检测正确率为99.0%,而梯度下降系统和自适应系统检测正确率仅为95.1%和96.1%, 本文系统检测正确率明显高于另两种系统; 检测浏览记录数量为5 000 条时,本文系统的恶意代码检测漏报率和误报率分别为0.30%和0.70%, 采用梯度下降系统的恶意代码检测漏报率和误报率分别为1.40% 和1.37%,自适应系统的恶意代码检测漏报率和误报率分别为2.47%和2.46%。 分析实验结果可知, 本文系统具有较高的检测性能。

图4 3 种系统检测结果对比

通过表2 实验结果可以看出, 采用本文系统检测网络中不同类型的恶意代码, 训练及检测时间均明显低于梯度下降系统及自适应系统, 且采用本文系统检测网络中不同类型的恶意代码的检测时间均保持在0.1 ms 以下, 而采用梯度下降系统及自适应系统的检测时间基本在0.1 ms 以上, 相差较大。 恶意代码检测系统的实时性是评价恶意代码检测性能的重要指标, 只有实时检测恶意代码并及时作出响应才能阻止恶意代码造成的严重后果。 实验结果表明本文系统具有较高的检测实时性。

统计3 种系统检测不同类型恶意代码的训练时间以及检测时间, 对比结果如表2 所示。

表2 3 种系统检测不同类型恶意代码时间对比 ms

续表2

3 结论

恶意代码是指可能影响网络正常运行的危险代码, 因大部分恶意代码在网络中无作用行为,因此检测较为困难。 研究基于BP 神经网络算法的恶意代码检测系统, 利用BP 神经网络算法依据所提取恶意代码特征有效检测网络中恶意代码, 提升恶意代码检测正确率。 实验结果表明,采用本文系统不仅可有效检测网络中存在的恶意代码, 误报率和漏报率较低, 且实时性较好, 说明本文系统在实际网络恶意代码检测中有着较高的实用价值。

猜你喜欢

正确率数据包代码
门诊分诊服务态度与正确率对护患关系的影响
SmartSniff
创世代码
创世代码
创世代码
创世代码
生意
品管圈活动在提高介入手术安全核查正确率中的应用
生意
基于Libpcap的网络数据包捕获器的设计与实现