APP下载

基于深度学习的恶意软件动态检测方法研究

2022-07-11张皓

电子技术与软件工程 2022年3期
关键词:蠕虫动态样本

张皓

(郑州工业应用技术学院 河南省郑州市 451100)

恶意软件是互联网发展过程中产生的未经用户许可,强行运行,影响用户使用的病毒,又被称为流氓软件。计算机技术的进步也导致流氓软件的数量越来越多,组成也越来越复杂,严重影响了网络安全,除此之外,受信息技术的影响,恶意软件的攻击方法也在不断更新,因此急需对恶意软件进行检测,传统的恶意软件检测方法受到恶意软件数量和攻击方式的限制,无法满足现有的检测需求,仍然依赖人工方法提取检测中的相关信息,因此无法满足现有的检测需求,急需设计一种新的恶意软件动态检测方法来解决现有的恶意软件动态检测问题。

智能设备的普及化拓宽了恶意软件的传播通道,越来越多的恶意软件利用信息传播的快捷性非法窃取用户信息,给用户网络信息安全带来很大的威胁,因此恶意软件已经成为影响用户网络安全的重要问题,相关研究人员调查了2018年恶意软件的变化情况,结果表明恶意软件数量快速增加,在一个季度中的样本总数量甚至突破了6300 万个,且呈持续增加趋势,在这种情况下各个网络安全公司纷纷研究了相关的恶意软件动态检测方法,但受特征码限制,这些检测方法都具有十分明显的缺点,深度学习可以根据样本的表达规律进行智能化分析识别,在恶意软件的特征识别中效果较突出,因此本文基于深度学习设计了新的恶意软件动态检测方法,为后续恶意软件的拦截及网络安全环境的维护作贡献。

1 基于深度学习的恶意软件动态检测方法设计

1.1 采集提取恶意软件特征

恶意软件能被有效识别的关键就是恶意软件特征的提取,因此恶意软件动态检测的第一步就是采集恶意软件信息,进行特征提取。根据实际恶意软件的攻击状态,可以设置Virtual machine introspection 虚拟机,进行恶意软件信息采集和识别,该虚拟机的结构如图1 所示。

由图1 可知,利用该虚拟机进行恶意软件特征采集时需要增加内部的安全性,设计Machine Mannager 安全管理工具实现数据的安全采集探测。在进行恶意软件信息采集的过程中需要利用虚拟机内核加载数据采集代理端,赋予虚拟机采集监控工具管理权限,实现语义信息的识别和转换。

图1:Virtual machine introspection 虚拟机结构

虚拟机设置完毕后,需要根据现有的提取条件,提取恶意软件的调用序列。根据恶意软件的实际权限问题可以设置虚拟化Kernel-based Virtual Machine 提取平台,该平台可以利用虚拟化技术设计恶意软件动态提取方案,加载提取模块后进行Linux 内核转换,再根据提取需求进行提取。受恶意软件特征的复杂性影响,在实际特征提取的过程中可能会出现提取失败的现象,此时本方法使用Intel-VT 技术进行non-root 模式转换,保证提取模块能够通过VM Entry 和VM Exit 完成恶意软件特征的提取。

在实际操作的过程中,随着恶意软件数量的增多,其数据采集和恶意特征提取的速度也在逐渐下降,因此本文设计了一种快速系统调用机制,设计了sysenter sysexit指令提高特征提取的效率,实现高效系统调用,但在应用sysenter sysexit 指令时一定要注意处理器的状态,必须保证处理器中的SCE 处在标志位上,避免出现处理器异常中断的问题。

1.2 基于深度学习构建恶意软件动态检测模型

传统的恶意软件动态检测方法通常需要依赖人工进行恶意软件特征数据检测,而深度学习可以根据特征提取样本的规律和数据表达方式进行智能化识别,因此可以利用深度学习中的处理单元实现恶意软件特征的转换和提取,受神经元特性影响,深度学习构建的抽象神经网络可以模拟智能化神经网络识别抽象的特征,因此其进行动态检测的流程如图2 所示。

图2:深度学习动态检测流程

由图2 所示,利用此检测流程进行检测时最关键的就是深度学习训练,因此需要根据数据采集和数据处理结果构建基于深度学习的恶意软件动态检测模型,如下(1)所示。

模型(1)中,ecp(y)代表深度学习网络指标,f(x)代表初始ReLU 函数,结合该神经网络模型可以进行映射定义和映射模拟,设计正确的数据传递算法实现神经网络的反馈,组成新的前馈神经网络。

组成前馈神经网络的训练数据十分复杂,且特征不一,与神经网络隐藏层的连接状态有重要关系,因此可以根据输入层与输出层的神经元状态,设置连接权重,计算连接指标,保证恶意软件动态检测模型的准确检测。当输出层中存在恶意软件特征数据时,需要进行核心卷积连接,在保证卷积层局部特征稳定的情况下进行恶意软件检测,不仅如此,数据的空间连续性是卷积层权重的计算核心,因此需要绘制特征图来识别过滤恶意信息,避免出现池化过拟合现象,降低恶意软件动态检测模型的监测效果。

对上述设计的恶意软件动态检测模型进行检测发现,其检测效果受特异性影响,因此需要设计深度学习语言,与向量空间融合,降低模型的维度识别问题,因此可以根据现行函数的类型进行N 维向量重组,设置正确的索引位置,通过线性映射空间进行Look-up 离散表示,表示后,根据向量的连接特征输出与tanh 拟合的输出单元,使用上述模型计算该语言的拟合概率值,计算结果表明,该语言符合模型的特异性需求。

1.3 搭建虚拟化恶意软件检测平台

根据上述设计的恶意软件动态检测模型,可以搭建虚拟化恶意软件检测平台,降低检测过程中出现检测错误的风险,实现智能化检测控制。首先可以根据实际检测状态获取动态的监测结果,引入vmx_handle_exit()处理函数进行处理,根据该函数产生的exit_reason 可以进行数组存放,完成恶意软件检测平台的指令模拟,接下来可以根据平台的VMM 恢复需求,设计Kvm_vmx 存放代码,完成虚拟化恶意软件检测平台的设计。

利用上述搭建的虚拟化恶意软件处理的流程如下:首先根据用户的安全状态修改VMM 数值,设置正确的恶意软件检测目标,再向设计的平台内输入SYSENTER_CS_MSR 进行开启检测模块,利用变量进行检测监控,完成检测准备,其次,使用VMM 进行虚拟执行恢复,根据虚拟触发机制设计VM Exit,接下来,利用设计的SYSCALL 观察是否存在指令触发现象,一旦存在指令触发现象需要立即进行虚拟机恢复,否则可以继续读取寄存器中的内容进行参数调用,如果指令执行过程中初心了阻塞现象,可以根据阻塞状态进行信号恢复处理,保证检测平台的检测效果。

设计的虚拟化恶意软件检测平台使用ioctl 进行通信,根据VMM 修改结果及时传输恶意软件检测信息,完成Linux内部通信,除此之外,为了保证平台的检测效率,平台还额外设置了通信信号询问机制,利用copy_to_user 函数不断进行安全信息检测,完成动态检测信息的高效传递。

1.4 自动提取蠕虫特征码

蠕虫病毒是一种最常见的计算机恶意软件,其可以根据计算机漏洞实现传播,篡改计算机系统,严重影响计算机安全,因此本方法通过多样化数据处理研究了蠕虫特征码的自动提取方式,提高恶意软件动态检测的效率。

基于上述特性,设计了蠕虫特征码提取方案,首先根据频数处理和差值处理原则进行CNN 训练,检测训练后蠕虫特征码的显示状态,然后利用DNNLM 构建训练模型,设计Signature Beam Search 算法降低蠕虫特征码的处理难度。由上述处理方案可知,蠕虫检测模块是蠕虫特征码提取的中心,受模块检测需求的影响,在设计时需要有效地收集蠕虫检测数据,区分蠕虫载荷数值,经过对模块的验证可知,仅进行蠕虫检测无法实现蠕虫特征码的高效提取,因此需要设置蠕虫特征预警模块,及时接收CNN 蠕虫预警,并根据预警数值实现蠕虫特征的高效提取。

1.5 实现恶意软件动态检测

实现恶意软件动态检测的最后一步就是进行动态检测语义重构,恶意软件攻击语言的检测是影响恶意软件动态检测结果的重要因素,因此可以使用语义重构法对操作语义进行重新定义,设计新的恶意软件动态检测序列,来保证恶意软件动态检测的检测效果,降低动态检测面临的风险。

恶意软件可以攻击系统的调用函数,导致其发生偏移,从而产生系统漏洞,因此可以设置调用语义,进行调用检测实现操作符号的查询,一旦恶意软件信息被结构体串联,需要通过语义重构,设置stack degment、mmap segment、heap segment 进行进程切换,保证恶意软件的有效检测,为了保证检测效果,设计的语义可以进行Section Object 字段重合,设置可以执行的EPROCESS 进程信息,完成恶意软件特征的提取。

在实际检测中,可能会存在syscall/sysret 参数与实际检测参数不一致的情况,因此需要设计正确的参数调用格式,使用正确的参数信息进行处理,一旦出现检测信息解压异常和代码混淆的情况,可以设计控制流程图,利用Libvmi 进行物理内存库的读写,根据操作系统符号表,结合相应的操作系统原理来获得内核关键数据,消除语义鸿沟问题,整个处理步骤如下:第一步应用程序请求查看内核符号,第二步通过system.map 获取内核符号的虚拟地址,第三步找到内核页目录,获取对应页表地址 ,最后使用libvmi 将数据页内容返回给应用程序,实现恶意软件的动态检测。

2 实验

为了检验设计的恶意软件自动检测方法的检测效果,搭建了实验平台,将其与传统的恶意软件动态检测方法进行对比,实验如下。

2.1 实验准备

根据实验的实际需求,构建了实验数据采集中心,利用MATLAB 软件构建了仿真检测环境,为后续的验证提供依据,实验中使用的架构、数据集等,都需要进行准确描述,提高实验的准确性,实验需要突出恶意软件的动态检测效果,因此实验使用的样本分为两种类型,即恶意软件样本及良性软件样本,选取Drebin 数据集和CICAndMal2018 数据集的数据进行实验,经检测,Window 中的恶意软件样本数量共1350 个,恶意软件样本的类型较丰富,其基本类别组合成表如表1 所示。

表1:恶意软件数据集组成表

由表1 可知,此时Trojan-Banker 的数量最多,Hack Tool 的数量最少,Trojan-Downloads 与Worm 的数量接近,根据恶意软件数据集组成表,可以采集SPEC2015 程序中的635 个程序作为本实验的良性软件样本,利用Virus Total 进行识别验证,确保这些软件不存在恶意操作。

根据实验需求,搭建数据采集平台,保证采集数据的准确性,利用VM Ware 进行采集运行模拟,受数据采集效率的影响,其操作系统需要进行重新设置,本实验使用windows7 操作系统实现数据采集平台的操作,具体的采集架构如图3 所示。

由图3 可知,在该数据采集平台工作的过程中,首先需要利用PIN 工具和待测程序进行PIN 调整,再将其与选取的windows7 操作系统连接,利用虚拟机搭建数据采集平台内部的数据处理模块,包括数据流图构建、分析决策等,完成数据采集及数据处理。

图3:数据采集平台架构

在利用PIN 进行数据采集处理的过程中需要注意程序的编译问题,可以根据实际程序运行状态设计动态框架,保证二进制程序编译的实时性,对初始的二进制程序进行编译检测,检测结果如表2 所示。

表2: 二进制程序编译检测

由表2 可知,受实际编译环境影响,二进制程序在编译检测时经常存在输入编码与输出编码不符的情况,因此需要设计一种动态二进制插桩框架解决编码中面临的动态输出问题,即在开始进行编码的初期,利用源代码设计编译因子,并利用编译因子组成动态编译程序,完成编译功能。

在实际代码重组过程中可能受到程序行为影响,采集的信息可能与实际指令不符,为了增加实验的准确性,本实验在传统的PIN 框架基础上引入了准确性源代码指令,保证源代码指令能完成程序采集信息的处理,在数据读取的过程中,搭建的实验平台利用YDH4526 寄存器进行时钟信息的寄存及处理,保证采集工具的采集连贯性,形成底层数据与内存数据之间的传递关系,根据数据的运行逻辑,可以将实验所需的数据进行逻辑处理划分成功能不同的信息指令模块,并设计相应的编码,编码主要以二元组的形式出现,可以描述YDH4526 寄存器内部的数据处理关系。

良性软件内部可能存在X-Y 形式的读写数据,为了将其与恶性软件中的R-W 数据区分开,需要进行Y 化取值,设置ox77125ab1 a:push oxf 作为访问目标地址进行后续的实验。准备完成后,需要对使用的恶意软件检测环境进行十折交叉验证,即10-fold cross-validation 验证,测试上述实验环境的稳定性,将上述实验使用的样本进行随机划分,若产生的综合系数高于数值10 则证明使用的样本集和搭建的实验环境符合后续的实验需求,10-fold cross-validation 测试结果如表3 所示。

表3:10-fold cross-validation 测试结果

由表3 可知,随机抽取的样本经过十折交叉验证,其测试的数值均高于10,证明搭建的实验环境和选取的实验数据集均符合后续的实验需求。受实验的精度需求影响,在进行恶意软件动态检测前需要进行数据集训练,使用标准化测试训练程序对测试数据进行划分,取检测平均值进行训练集精度验证。

将恶意软件样本与良性软件样本进行动态划分和重新组合,进行连续10 轮验证,其验证数值分别为1.32、1.65、1.33、1.47、1.02、1.58、1.49、1.55、1.35、1.42,均高于标准参数值1,证明此时的划分状态符合后续的实验需求。在恶意软件动态检测过程中,需要根据实际检测特征设计检测参数,公式如下(2)所示。

公式(2)中,s 代表特征向量集大小,m 代表窗口长度,恶意检测参数的计算数值会对实际检测结果有较大影响,因此可以根据特征集合交叉验证的状态设置标准的检测窗口,为后续的恶意软件动态检测提供依据。

2.2 实验结果与讨论

分别使用传统的恶意软件动态检测方法和本文设计的基于深度学习的恶意软件动态检测方法进行检测,记录两种方法在不同软件数量下的检测耗时,实验结果如表4 所示。

表4:实验结果

由表4 可知,随着混合软件数量的增加,传统的恶意软件动态检测方法的检测耗时越来越长,而本文设计的恶意软件动态检测方法的检测耗时始终较短,证明设计的方法具有省时性,能满足目前恶意软件动态检测需求。

3 结束语

综上所述,随着计算机技术的发展,网络安全问题也逐渐受到了重视,恶意软件是影响网络安全的重要因素之一,因此急需进行恶意软件动态检测来解决目前面临的网络安全问题,传统的恶意软件检测方法容易受到特征码提取的限制,导致其在恶意软件数量增多时无法完成检测,因此本文基于深度学习设计了新的恶意软件动态检测方法,进行实验,结果表明,设计的恶意软件动态检测方法的检测耗时较短,且受恶意软件数量的影响较小,因此具有有效性,有一定的应用价值,可以作为后续网络安全检测的参考。

猜你喜欢

蠕虫动态样本
国内动态
国内动态
国内动态
蠕虫状MoS2/C的制备及其在锂离子电池负极材料中的应用
秋季谨防家禽蠕虫病
推动医改的“直销样本”
青海海晏县牛羊寄生蠕虫种调查与防治
村企共赢的样本
基于隔离和免疫的蠕虫传播模型及稳定性分析