Page 128 - 《软件学报》2020年第11期
P. 128

3444                                Journal of Software  软件学报 Vol.31, No.11, November 2020

                                                   ( ,G
                                                 ⎡  SG 1  1 ),..., ( ,S G G ⎤  1  n )  ⎡  y 1 ⎤
                                                 ⎢                ⎥  ⎢  ⎥
                                              K =  ⎢  ( SG 2 ,G 1 ),..., (S G 2 ,G n ⎥  )  →  ⎢  y 2 ⎥  (9)
                                                 ⎢                ⎥  ⎢     ⎥
                                                 ⎢                ⎥  ⎢  ⎥
                                                 ⎣  ( SG n ,G 1 ),..., (S G n ,G n ⎦  )  ⎣  y n⎦
                    检测任务就是一个未知的程序需检测出其类别恶意还是正常.给定数据流图 G,根据特征子图库映射成图
                 向量,将该图向量与训练样本进行相似性度量获得相似向量 v=(S(G,G 1 ),…,S(G,G n )),将该向量放入分类器,而分
                 类器在训练阶段建立好核矩阵 K 到标签集 Y 的映射,据此来确定向量 v 的类别.

                 5    实   验

                    本文实验有两个目的:首先,评估我们方法的准确性和有效性;其次,我们探讨了方法中的各个参数对结果
                 的影响.
                    实验中使用 Cuckoo Sandbox   [16] 捕获样本原始的系统行为记录,并从中提取数据流图.恶意程序集来自开放
                 的恶意程序数据库 VXHeaven(VXHeaven:http://vxheavens.com/),我们选择蠕虫、后门和特洛伊木马等 4 类作为
                 实验对象,这里的类别是依据程序名划分的,而最终是检测恶意和正常程序,即使出现类别错误,但并不影响检
                 测结果.正常程序是来自信息安全课程学生提交的可执行 exe 文件.由于相关数据的缺乏,我们将对正常的、可
                 执行文件的收集任务交由本科生完成.提交程序种类繁多,完全是可以模拟正常情况电脑的运行状况.鉴于一些
                 程序并不能正常运行在虚拟平台中,实验最后,我们随机选择了可以完全运行的恶意和正常程序各 300 份,一共
                 600 份.

                 5.1   结果和讨论
                    在恶意和正常这个二分类问题:True Positive(TP)表示恶意程序样本正确分类为恶意,False Negative(FN)表
                 示恶意样本错误分类为正常;同时,True Negative(TN)表示正常样本正确分类为正常,False Positive(FP)表示正常
                 样本错误分类为恶意.其中,精度(accuracy)表示分类正确的样本数占样本总数的比例,而查准率(precision)、查全
                 率(recall)和 F1 分别定义为
                                                           TP  ⎫
                                                      P =      ⎪
                                                         TP +  FP  ⎪
                                                           TP  ⎪
                                                      R =      ⎬                                     (10)
                                                         TP +  FN  ⎪
                                                           ⋅⋅
                                                          2 PP ⎪
                                                      F 1 =    ⎪
                                                          P +  R ⎭
                    与 MDC  [11] 方法对同一数据集进行了各种性能测试,数据集中随机选取 90%的数据用于训练,剩余 10%的数
                 据用于测试,实验重复了 10 次且取平均值作为最终结果.
                    准确性:符号(1)、符号(2)分别表示矩阵 M 的计算的两种方法,从表 2 中可以明显看出,DMBSS(2)检测率高
                 于 MDC 方法,而 DMBSS(1)略微低于 MDC 方法.造成这种现象的原因,我们认为,方法(1)对子图的相似度计算太
                 过简单,而使用更加复杂的深度图内核来计算子图间的相似性,却使检测效果出现明显的提高.因而我们可以认
                 为,子图间的相关性考虑对检测效果的提升是明显的.
                                       Table 2  Performance comparison between two methods
                                                 表 2   两种方法的性能比较
                               Accuracy  Precision  Recall     F1     Extract time(s)  Train time(s)   Detect time(s)
                      MDC     0.938±0.023  0.934±0.019  0.937±0.022  0.941±0.021  −   46.3±2.5  1.28±0.19
                    DMBSS(1)   0.932±0.021  0.931±0.016  0.935±0.025  0.933±0.012  13.5±1.4  18.3±2.1  1.07±0.04
                    DMBSS(2)   0.948±0.019  0.952±0.026  0.947±0.017  0.948±0.020  13.5±1.4  17.8±1.7  0.63±0.01

                    有效性:虽然我们的方法多了对子图的处理过程,即子图提取和表示,但总体上,我们的方法时间开销更小.
                 因为我们通过提取待测程序数据流图的所有子图,之后按逆拓扑标识方法映射成字符串,然后与子图库中特征
   123   124   125   126   127   128   129   130   131   132   133