梁 涛,李毅成,段玉莹
(1.南昌大学抚州医学院,江西 抚州 344000;2.景德镇陶瓷大学,江西 景德镇 333403;3.山东理工大学 计算机科学与技术学院,山东 淄博 255000)
由于系统应用具有开放性特点,因此,应用类软件会产生大量非授权代码[1]入侵,代码入侵到系统应用中会严重威胁系统安全。据权威调查结果显示,每天都存在将近百万的非授权代码被广泛传播。为防止非授权代码扰乱正常网络通信,需要检测并禁止代码传播,所以相关检测工作变得越来越重要。由于传统检测方法在检测非授权代码敏感路径方面存在一定难度,因此,非授权代码敏感路径检测方法成为新的研究热点。
王卫红[2]等人提出基于N-Gram与加权分类器集成的非授权代码检测系统,即网页恶意脚本代码的监测系统。使用V8引擎将恶意脚本编译成机器码,并利用变长N-Gram模型进行数据预处理,提取出特征样本训练集;对逻辑回归以及朴素贝叶斯等分类器组合建立分类模型,将多个经过训练集训练的分类模型集成,采取加权分类器集成的方式,对不同分类器设定权值。但是该系统的应用过程耗时较长。郑忠伟[3]等人提出了基于图结构与内存足迹分析的恶意应用检测方法。提取应用请求所需的共生权限,将得到的权限结构建立成图结构,并利用图内的度量指标分析图的分类规律及其中心权限,通过中心权限数值选取可以描述各类型攻击的最优指标;利用计算获得是应用隐私与风险阈值,检测各种恶意软件或恶意行为。该方法耗时较短,但是没有取得较高的检测精度。
因此,本研究提出基于线性特征集的恶意敏感路径检测方法,利用深度学习逐层检测,减少了一定误差,且实验证明方法的耗时较短,且具有较精度,可被推广应用。
深度学习[4]即效仿人脑运行机制,对数据进行理解与分析,比如学习图像形状、声音旋律和文本知识等。从管理层面讲,属于无监督学习方式,其基本原理源于人工神经网络[5]。通过构建更加抽象的高层、更加清晰地描述属性类别特征,可作为数据分布特征的参考。也可由经过处理的多层次构成计算机模型,用于表达多等级的抽象数据并结合反向传播算法分析数据的内在结构,同时,可使用BP算法[6]描述如何在不同层面。利用从上一层获取的数据信息,计算内部参数值,在众多领域被广泛应用,如图1所示为深度学习基本流程。
图1 深度学习基本步骤
若利用深度学习完成特征检测,需收集大量检测数据信息。若检测非授权代码,则需正常代码以及非授权代码共同构成检测素材,从而分别提取代码特征,完成非授权代码检测。
一般情况下,使用静态分析[7]方式结合翻译工具去除无关动作指令,得到所需特征。
假设L(W)以及上一次的特征[8]更新值V1,两者间的线性组合用于更新特征W1,表达式如下:
(1)
式(1)中,μ代表特征值,α表示基础学习效率。
基于上节获取的非授权代码的特征,获取代码线性特征集合。在非授权代码敏感检测的过程中,涵盖了大量的网络历史数据信息,这些数据信息包含n个操作变量,可用{y1,y2,…yn}代表,其中对应的阈值可用aj代表,因此,为简化操作模型可用下列公式表达:
(2)
上式中Gj与Gk间的关联程度较小,网络行为中的主要数据信息使用Gj,利用Gj建立的敏感路径特征系数矩阵[9]如下式:
(3)
利用深度学习方法有效检测出网络行为中的非授权代码敏感路径,可有效的保障数据信息安全。
引入操作特征等相关数据,描述敏感性变化率为:
(4)
通过上述式可得到敏感变化率,非授权代码特征值计算如下:
(5)
因非授权代码间存在较弱的关联性,可得构成的线性特征集合为:
(6)
为判断路径是否有效,应先判断应用程序是否加密,若未加密对其直接进行反馈;若已加密,需要完成相关解密工作,再开始反馈。根据非授权代码的主要入侵方式[10],改变系统中一部分的函数信息,通过敏感路径实现非授权代码攻击,将敏感路径中的主要信息分为五个部分,分别为:进程、线程、注册表、网络类和文件。利用上述五个步骤,可快速地识别出相应的非授权代码路径。基于线性特征集的非授权代码敏感路径分析,关键在于是否可准确查询出可能性最大的恶意敏感路径集合,并通过执行获取到程序行为,构建新的系统函数信息调用图,也可称为行为特征图,以此避免传统检测方法检测结果不准确、效率低等问题。基于线性特征集的非授权代码敏感路径判断结构如图2所示。
图2 非授权代码敏感路径判断结构
在对非授权代码敏感路径进行检测时,需要将各类型代码以及其变量看作目标样本,并对每一类型的恶意特征行为进行提取,从而构建出新的特征行为库;然后对检测样本代码开始分析及计算,提取敏感特征,在特征行为库中进行匹配,最终利用深度学习检测出非授权代码敏感路径
基于线性特征集的检测方法,开始执行bfsCheckfunc_s(sens_act_func),以此得到代码包含的RegDeletekeyA、ExitWindows、RegCreateKey三个敏感路径函数。选取其中一个输入交互函数[11]scanf,计算求得Re g-DeleteKeyA的最小深度数值等于2,因此首先需从Re g-DeleteKeyA处返回,进行检测得到从函数scanf至函数Re g-DeleteKeyA的敏感路径,随之检测其余敏感路径。
为提高检测效率,对非授权代码敏感路径进行检测时,若Psub上所有的敏感点和输入点都存于另一条敏感路径Pa中,即Psub是Pa的子路径,假设先处理Pa完成后,则无需对Psub进行任何处理,在图4中,若只完成(scanf,RegDeletekey,RegCrestKey)以及(scanf,ExitWindows)两条非授权代码敏感路径,基于深度学习检测,需最先处理路径中包含敏感信息最多的路径,对其进行动态分析。
通常情况下,同一个函数中不可能同时存在敏感点和交互点,因函数体内的第一个基本块存在前驱块的可能性为0,所以当敏感点返回检测时,只能返回至所在函数体的初始所在块内,此时得到的结果为部分敏感路径。同时,需使用相关函数调用信息,从调用该函数的初始位置向回继续检测,当抵达交互点和代码入口时,完成检测,通过对路径进行合并得到非授权代码中的完整敏感路径。
假设使用有像图G=(V,E)表示函数调度,V表示顶点数据集合,E表示边点数据集合,其中E={(vi,vj),vi,vj∈V},使用vi表示系数数值,若系统数值v2和v1被调用,此时出现一条边v1指向v2为(v1,v2)。G=(V,E)中节点v相对应的函数使用v.SystemCall()代表,va·prev∈Ga,va·prev(i)代表节点va中的第i个后续点,va·sucnum代表va后续点数量。由于非授权代码敏感路径会导致系统变化幅度范围较小,相似度相对明显,基于此,可利用函数调用图为基础进行检测。
在检测过程中,将目标代码用As代表,每一个As都会形成图Gs,其中样本数量为k,会生成k个有像图。由于有像图都是由一种类型的非授权代码产生,相似性远大于其他样本。因此,将k个有像图中的G′作为特整体,保证有像图中的各节点必须在子图中出现此节点,即:
va=G′
(7)
并且满足:
(8)
可得出相似程度矩阵为:
(9)
式(9)中,γ表示相似程度参数值,同时0≤γ≤1,可得出:
(10)
通过式(10)可知,相似数值最大的为敏感路径。
由于正常代码间差别较大,内部结构形态各不相同,寻找公共子图有一定难度,基于深度学习检测需对正常代码样本的函数图进行特征提取,并设置阈值threshold,即:
(11)
式(11)用于判断正常代码,能够有效提高非授权代码的提取准确度,提高网络安全性能,为用户的数据信息提供可靠的安全保障。
实验参数选用某高校的公开数据信息,涵盖了5000多款恶意App,其中有180个非授权代码家族,非授权代码数量为2000个。本次实验使用数据中样本数量最多的非授权代码作为样本,并从软件商店下载良性App作为正常样本。
仿真实验环境信息如表1所示。
表1 实验环境信息
表2数据反映了本文所提方法的有效性,在同等时间内以及测试数量相同的情况下,对检测恶意敏感路径的速度效率进行比较。经数据表明,本文所提方法相比方法1和方法2,检测出的敏感路径数量最多、覆盖块数以及敏感路径函数次数最高,最终的有效数据所占比率高于其他两种方法。
表2 数据比分析结果对比
因此,可说明本文所提方法对于非授权代码敏感路径的检测分析能力较高,有效性最佳。
利用文献[2]方法和文献[3]方法作为测试对照组,对比该传统方法与研究方法在应用过程的噪声大小,较小的噪声能够有效保证方法的稳定性。具体对比结果如图3:
图3 不同方法下网络噪声对比
从图3实验结果可以明显看出在非授权代码数量逐渐增多的过程中,两种传统方法的噪声值忽高忽低,缺乏稳定性,噪声平均值偏高。研究方法在实验测试过程中能够保持较低噪声,这说明研究方法具有更好的抗噪性能。
分析不同样本数量情况下,不同方法对于准确率的影响,分别选用500、1000、1500以及2000、2500个代码样本进行比较实验,结果如表3所示。
表3 准确率比较
可得出随着样本数量不断增加,所提方法的检测准确率不断提高,而其他两种方法随着样本数量不断增加,准确率逐渐降低。
为进一步验证研究方法的应用有效性,对其耗时性进行实验。以文献[2]方法和文献[3]方法作为实验对照组。为方便实验结输出,A表示文献[2]方法,B表示文献[3]方法,C表示研究方法,具体实验结果如图4:
图4 非授权代码检测路径结果
实验结果显示,所提方法不仅能够有效检测非授权代码,且耗时更短。在代码样本数量为500个~2500个之间,耗时最高不超过30ms,而另外两种传统方法不仅耗时波动较大,且最高耗时达到35ms,耗时指标不能满足该领域的实际应用要求。实验结果验证了研究方法在不同方面均表现出良好的性能优势。
本文提岀基于线性特征集的非授权代码敏感路径检测方法。根据非授权代码特征获取目标代码操作,针对敏感行为函数的关键代码区域进行分析,发现最可能存在的非授权代码敏感路径,减少计算过程中的路径数量,最终仿真实验结果表明:所提方法可有效缩短检测时间,鲁棒性更高。