同源恶意代码的细粒度分类识别方法.pdf
《同源恶意代码的细粒度分类识别方法.pdf》由会员分享,可在线阅读,更多相关《同源恶意代码的细粒度分类识别方法.pdf(30页完成版)》请在专利查询网上搜索。
1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 202010440355.8 (22)申请日 2020.05.22 (71)申请人 南京大学 地址 210023 江苏省南京市栖霞区仙林大 道163号 (72)发明人 曾庆凯李佳杰 (74)专利代理机构 南京钟山专利代理有限公司 32252 代理人 陈月菊 (51)Int.Cl. G06F 21/56(2013.01) G06F 8/41(2018.01) (54)发明名称 一种同源恶意代码的细粒度分类识别方法 (57)摘要 本发明公开了一种同源恶意代码的细粒度 分类识别方法, 。
2、包括: 获取系统调用序列以及指 令序列; 对系统调用序列以及指令序列进行分 析, 得到数据流系统调用序列; 通过提取语义特 征序列操作提取已有同源恶意代码库的恶意语 义特征; 将获得的恶意语义特征组织成恶意语义 特征库; 获得待测代码的数据流系统调用序列, 将之与恶意语义特征库中的恶意语义特征进行 对比, 对待测代码进行细粒度分类识别并且得出 最终识别结果: 是否为同源恶意代码和具体的恶 意代码类别。 本发明能够对同源恶意代码实施细 粒度的分类识别, 可以区分现有方案难以分类的 恶意代码; 可以避免指令混淆技术、 系统调用混 淆技术的干扰, 进行较为准确的恶意代码分类识 别。 权利要求书5页 。
3、说明书12页 附图12页 CN 111444506 A 2020.07.24 CN 111444506 A 1.一种同源恶意代码的细粒度分类识别方法, 其特征在于, 所述细粒度分类识别方法 包括以下步骤: S1, 获取系统调用序列以及指令序列; S2, 对系统调用序列以及指令序列进行分析, 得到数据流系统调用序列, 包括: 筛选出系统调用序列中每一个系统调用的系统调用名称以及关键参数, 以关键参数为 源头对指令序列进行反向依赖分析, 获取关键参数的数据赋值指令; 再利用赋值关系分析, 将关键参数的数据赋值指令转化为赋值表达式; 最后将系统调用名称以及系统调用关键参 数赋值表达式组合得到数据流系。
4、统调用, 进一步得到数据流系统调用序列; S3, 通过提取语义特征序列操作提取已有同源恶意代码库的恶意语义特征, 所述提取 语义特征序列操作包括: 对数据流系统调用序列进行排序预处理, 将不存在依赖关系的数据流系统调用按照系 统调用名称的字典序进行排序, 再利用数据流系统调用序列对齐算法求解得到两个数据流 系统调用序列的最大公共子序列; S4, 将获得的恶意语义特征组织成恶意语义特征库; S5, 获得待测代码的数据流系统调用序列, 利用数据流系统调用序列对齐算法将之与 恶意语义特征库中的恶意语义特征进行对比, 对待测代码进行细粒度分类识别并且得出最 终识别结果: 是否为同源恶意代码和具体的恶意。
5、代码类别。 2.根据权利要求1所述的同源恶意代码的细粒度分类识别方法, 其特征在于, 步骤S1 中, 所述获取系统调用序列以及指令序列是指, 利用Intel的动态插桩工具Pin来动态执行 待分析的代码, 执行过程中记录下代码的系统调用序列以及对应的指令序列, 包括以下步 骤: S21, 设置并且编译Pin动态执行器; S22, 设置Pin动态执行时的命令行; S23, 动态执行代码; S24, 记录代码的系统调用序列以及指令序列。 3.根据权利要求2所述的同源恶意代码的细粒度分类识别方法, 其特征在于, 步骤S24 中, 所述记录代码的系统调用序列以及指令序列的过程包括以下步骤: S31, 判。
6、断代码的动态执行过程是否结束, 若已经结束转步骤S36, 否则, 转入步骤S32; S32, 获取当前执行的指令; S33, 判断当前指令是否为系统调用指令, 若是转入步骤S34, 否则, 转入步骤S35; S34, 记录系统调用名称、 系统调用参数列表以及 “代码名称-执行指令.txt” 文件所记 录的指令序列, 转入步骤S31; S35, 将当前指令记录到 “代码名称-执行指令.txt” 文件中, 转入步骤S31; S36, 结束流程。 4.根据权利要求1所述的同源恶意代码的细粒度分类识别方法, 其特征在于, 步骤S2 中, 所述对系统调用序列以及指令序列进行分析, 得到数据流系统调用序列。
7、的过程包括以 下步骤: S41, 创建数据流系统调用序列链表; S42, 将系统调用序列以及指令序列链表的第一个节点赋值给临时节点tempNode; 权利要求书 1/5 页 2 CN 111444506 A 2 S43, 判断tempNode是否为Null, 若是转入步骤S49, 否则转入步骤S44; S44, 对tempNode进行反向依赖分析, 将tempNode作为参数传给反向依赖分析操作, 得 到关键参数的数据赋值指令序列; S45, 对关键参数数据赋值指令序列进行赋值关系分析, 将关键参数数据赋值指令序列 作为参数传给赋值关系分析, 得到关键参数赋值表达式Expression; S4。
8、6, 创建新的数据流系统调用序列链表节点DFNode; S47, 将tempNode-SyscallId赋值给DFNode-SyscallId, 将tempNode-SyscallName 赋值给DFNode-SyscallName, 将tempNode-DependenceSyscallId赋值给DFNode- DependenceSyscallId, 将Expression加入到DFNode-CriticalArgumentExp; S48, 将DFNode追加到数据流系统调用序列链表的末尾, 并且将tempNode-NextNode赋 值给tempNode, 转到步骤44; S49, 结。
9、束流程。 5.根据权利要求4所述的同源恶意代码的细粒度分类识别方法, 其特征在于, 步骤S44 中, 所述对tempNode进行反向依赖分析的过程包括以下步骤: S51, 根据不同系统调用确定关键参数, 创建关键参数所依赖的变量, 并且根据关键参 数确定反向依赖分析的源头; S52, 设置变量x1; S53, 从系统调用序列以及指令序列中取出第x条指令; S54, 判断第x条指令是否存在, 若不存在则转入步骤S58, 存在则转入步骤S55; S55, 判断第x条指令是否对关键参数以及关键参数所依赖的变量有数据赋值操作, 若 有操作则转到步骤S56, 无操作则转到步骤S57; S56, 将第x条。
10、指令记录到 “代码名称-关键参数数据赋值指令.txt” 文件中, 指令的源操 作数内的变量加入关键参数所依赖的变量中, 将指令的目的操作数从关键参数所依赖的变 量中去除; S57, 将变量x加一, 转到步骤S53; S58, 结束流程。 6.根据权利要求4所述的同源恶意代码的细粒度分类识别方法, 其特征在于, 步骤S45 中, 所述对关键参数数据赋值指令序列进行赋值关系分析的过程包括以下步骤: S61, 创建空的赋值表达式集合; S62, 定义变量y1; S63, 从关键参数数据赋值指令序列中获取第y条指令; S64, 判断第y条指令是否存在, 若不存在则结束流程, 若存在则转入步骤S65; 。
11、S65, 获取第y条指令源操作数以及目的操作数中的变量; S66, 判断赋值表达式集合内是否有步骤S65所得变量的定义, 若有定义则转入步骤 S67, 若无定义则转入步骤S68; S67, 从赋值表达式集合中获取变量的赋值表达式, 转到步骤S69; S68, 为变量定义一个新的赋值表达式, 并且将其加入到赋值表达式集合中; S69, 根据第y条指令, 对目的操作数内的变量进行数据赋值运算, 更新该变量在赋值表 达式集合内的赋值表达式; 权利要求书 2/5 页 3 CN 111444506 A 3 S6a, 对变量y加一, 转到步骤S63。 7.根据权利要求1所述的同源恶意代码的细粒度分类识别方。
12、法, 其特征在于, 步骤S3 中, 所述对数据流系统调用序列进行排序预处理的过程包括以下步骤: S81, 输入数据流系统调用序列Arg_s1, Arg_s1为调用时输入的参数; S82, 获取Arg_s1链表的表头head; S83, 创建非元素节点p, phead-NextNode, 创建临时节点r, rhead-NextNode; S84, 创建记录节点record, record-NextNodehead; S85, 判断p是否为Null, 若是, 则得到从record-NextNode开始的有序序列链表, 结束 流程, 否则转到步骤S86; S86, 将p-NextNode赋值给r; 。
13、S87, 创建临时节点q, qrecord; S88, 判断q是否为Null, 若是则转到步骤S89, 否则转到步骤S8c; S89, 判断q的下一个无依赖节点是否为Null, 是则转到步骤S8a, 否则转到步骤S8c; S8a, 判断q的下一个无依赖节点的SyscallName是否小于p的SyscallName, 小于则转到 步骤8b, 否则转到步骤S8c; S8b, 将q的下一个无依赖节点赋值给q, 转到步骤S88; S8c, 将q-NextNode赋值给p-NextNode, 将p赋值给q-NextNode, 将r赋值给p, 转到步 骤S85。 8.根据权利要求1所述的同源恶意代码的细粒。
14、度分类识别方法, 其特征在于, 步骤S3 中, 所述利用数据流系统调用序列对齐算法将之与恶意语义特征库中的恶意语义特征进行 对比的过程包括以下步骤: S91, 输入两个数据流系统调用序列Arg_seq1,Arg_seq2; S92, 遍历Arg_seq1, 获取链表长度n; S93, 遍历Arg_seq2, 获取链表长度m; S94, 定义矩阵Hn+1m+1, 矩阵内各个元素全部初始化为0; S95, 定义变量i1; S96, 获取Arg_seq1链表中第i个节点; S97, 判断第i个节点是否为Null, 是则转到步骤S9j, 否则转到步骤S98; S98, 定义变量j1; S99, 获取A。
15、rg_seq2链表中第j个节点; S9a, 判断第j个节点是否为Null, 是则转达步骤S9i, 否则转到步骤S9b; S9b, 将0与Hi-1j-1+第i个节点与第j个节点的相似性比较结果作为参数传入, 调 用c+库函数max(), 返回结果赋值给Hij; S9c, 定义变量k1、 l1; S9d, 判断k是否小于等于i, 是则转到步骤S9e, 否则转到步骤S9f; S9e, 将Hij与Hi-kj-0.2-0.1*k作为参数传入, 调用c+库函数max(), 返回结 果赋值给Hij, 并且将k加一, 转到步骤S9d; S9f, 判断l是否小于等于j, 是则转到步骤S9g, 否则转到步骤S9h。
16、; S9g, 将Hij与Hij-l+-0.2-0.1*l作为参数传入, 调用c+库函数max(), 返回 权利要求书 3/5 页 4 CN 111444506 A 4 结果赋值给Hij, 并且将l加一, 转到步骤S9f; S9h, 将j加一, 转到步骤S99; S9i, 将i加一, 转到步骤S96; S9j, 得到最大相似性矩阵H; S9k, 定义变量posin,posjm; S9l, 创建一个空的数据流系统调用序列链表Comm; S9m, 判断posi与posj是否同时为0, 是则转到步骤S9r, 否则转到步骤S9n; S9n, 判断Hposiposj是否等于Hposi-1posj, 是则转。
17、到步骤S9o, 否则转到步骤 S9p; S9o, 将posi减一, 转到步骤S9m; S9p, 判断Hposiposj是否等于Hposiposj-1, 是则转到步骤S9q, 否则转到步骤 S9r; S9q, 将posj减一, 转到步骤S9m; S9r, 将Arg_seq1第posi-1个节点追加到Comm末尾; S9s, 将posi以及posj均减一, 转到步骤S9m; S9t, 得到最大公共子序列Comm; S9u, 结束流程。 9.根据权利要求1所述的同源恶意代码的细粒度分类识别方法, 其特征在于, 步骤S4 中, 所述将获得的恶意语义特征组织成恶意语义特征库的过程包括以下步骤: S101。
18、, 定义变量z1; S102, 获取同源恶意代码样本库中的第z个样本; S103, 判断第z个样本之后是否还有样本, 若是, 则转到步骤104, 否则, 将临时恶意语义 存入恶意语义特征库中, 结束流程; S104, 通过将第z个恶意代码样本作为参数传给获取系统调用序列以及指令序列操作, 并且调用获取系统调用序列以及指令序列操作, 获取第z个恶意代码样本的系统调用序列 以及指令序列; S105, 通过调用分析系统调用序列以及指令序列操作, 将第z个恶意代码样本的系统调 用序列以及指令序列作为参数传入分析系统调用序列以及指令序列操作, 获取第z个恶意 代码样本的数据流系统调用序列; S106, 。
19、判断该族恶意代码是否为首次入库, 是则转到步骤S107, 否则从恶意语义特征库 中读取该族恶意语义特征, 将读取得到的恶意语义特征赋值给临时恶意语义特征, 转到步 骤S108; S107, 判断z是否等于1, 若是, 则将第一个恶意代码样本的数据流系统调用序列赋值给 临时恶意语义特征, 转入步骤S10b, 否则直接转入步骤S108; S108, 调用提取语义特征序列操作, 将临时恶意语义特征与第z个恶意代码的数据流系 统调用序列作为参数传入提取语义特征序列操作, 得到临时恶意语义特征与第z个恶意代 码的数据流系统调用序列的最大公共子序列; S109, 将求得的最大公共子序列赋值给临时恶意语义特。
20、征, 转到步骤S10b; S10b, 将z加一, 转到步骤102。 权利要求书 4/5 页 5 CN 111444506 A 5 10.根据权利要求1所述的同源恶意代码的细粒度分类识别方法, 其特征在于, 步骤S5 中, 所述对待测代码进行细粒度分类识别并且得出最终识别结果的过程包括以下步骤: S111, 获取待测代码的系统调用序列以及指令序列; S112, 获取待测代码的数据流系统调用序列; S113 , 获取恶意语义特征库内 第一个特征 , 并且将其赋值给临时特征节点 tempFeature; S114, 判断tempFeature是否为Null, 若是, 则输出分类识别结果: 待测代码为。
21、良性代 码, 结束流程, 否则转到步骤S115; S115, 将待测代码的数据流系统调用序列与tempFeature作同源恶意代码的细粒度分 类识别方法为参数传给提取语义特征序列操作, 得到待测代码的数据流系统调用序列与 tempFeature的最大公共子序列; S116, 最大公共子序列的长度除以tempFeature的长度, 得到相似比例; S117, 将相似比例与阈值进行对比; S118, 根据对比结果判断分类识别的结果是否为恶意, 若是, 输出分类结果: 待测代码 为某一类恶意代码, 恶意代码类别为tempFeature.MalwareFamilyId, 结束流程, 否则转入 步骤S1。
22、19; S119, 读取恶意语义特征库内下一个特征, 赋值给临时特征节点tempFeature, 转到步 骤S114。 权利要求书 5/5 页 6 CN 111444506 A 6 一种同源恶意代码的细粒度分类识别方法 技术领域 0001 本发明涉及同源恶意代码检测技术领域, 具体而言涉及一种同源恶意代码的细粒 度分类识别方法。 背景技术 0002 恶意代码是信息时代所面临的一个极其普遍的安全威胁, 并且恶意代码会通过代 码混淆技术得到数量众多的变种。 这些变种代码与原代码是属于同一个家族的同源恶意代 码。 因此利用已有的恶意代码提取得到按家族划分的恶意语义特征有助于待测代码的分类 识别工作。。
23、 系统调用序列分析可以获得代码实际执行时的行为特征, 这有利于同源恶意代 码的特征提取。 0003 目前的基于系统调用序列分析的同源恶意代码分类识别方案可以区分良性代码 与恶意代码, 但是对于恶意代码的分类识别粒度较粗, 例如, 在面对一部分具有相似系统调 用的非同源的恶意代码时无法做到准确的分类识别。 发明内容 0004 本发明目的在于提供一种同源恶意代码的细粒度分类识别方法, 通过对系统调用 关键参数的数据流进行分析, 可以提取得到已有同源恶意代码库的恶意语义特征, 并且将 获得的恶意语义特征组织成恶意语义特征库, 恶意语义特征库可以一直更新维护, 从而为 之后的待测代码分类识别继续提供支。
24、持。 本发明利用恶意语义特征库中已有的恶意语义特 征, 可对待测代码进行细粒度的分类识别; 不仅可以识别其是否为恶意代码, 还可进一步判 定其具体为哪一类恶意代码。 本发明可对同源恶意代码实施细粒度的分类识别, 可以区分 现有方案难以分类的恶意代码; 可以避免指令混淆技术、 系统调用混淆技术的干扰, 进行较 为准确的恶意代码分类识别。 0005 为达成上述目的, 结合图1, 本发明提出一种同源恶意代码的细粒度分类识别方 法, 所述细粒度分类识别方法包括以下步骤: 0006 S1, 获取系统调用序列以及指令序列; 0007 S2, 对系统调用序列以及指令序列进行分析, 得到数据流系统调用序列, 。
25、包括: 0008 筛选出系统调用序列中每一个系统调用的系统调用名称以及关键参数, 以关键参 数为源头对指令序列进行反向依赖分析, 获取关键参数的数据赋值指令; 再利用赋值关系 分析, 将关键参数的数据赋值指令转化为赋值表达式; 最后将系统调用名称以及系统调用 关键参数赋值表达式组合得到数据流系统调用, 进一步得到数据流系统调用序列; 0009 S3, 通过提取语义特征序列操作提取已有同源恶意代码库的恶意语义特征, 所述 提取语义特征序列操作包括: 0010 对数据流系统调用序列进行排序预处理, 将不存在依赖关系的数据流系统调用按 照系统调用名称的字典序进行排序, 再利用数据流系统调用序列对齐算。
26、法求解得到两个数 据流系统调用序列的最大公共子序列; 说明书 1/12 页 7 CN 111444506 A 7 0011 S4, 将获得的恶意语义特征组织成恶意语义特征库; 0012 S5, 获得待测代码的数据流系统调用序列, 利用数据流系统调用序列对齐算法将 之与恶意语义特征库中的恶意语义特征进行对比, 对待测代码进行细粒度分类识别并且得 出最终识别结果: 是否为同源恶意代码和具体的恶意代码类别。 0013 作为其中的一种优选例, 步骤S1中, 所述获取系统调用序列以及指令序列是指, 利 用Intel的动态插桩工具Pin来动态执行待分析的代码, 执行过程中记录下代码的系统调用 序列以及对应。
27、的指令序列, 包括以下步骤: 0014 S21, 设置并且编译Pin动态执行器; 0015 S22, 设置Pin动态执行时的命令行; 0016 S23, 动态执行代码; 0017 S24, 记录代码的系统调用序列以及指令序列。 0018 作为其中的一种优选例, 步骤S24中, 所述记录代码的系统调用序列以及指令序列 的过程包括以下步骤: 0019 S31, 判断代码的动态执行过程是否结束, 若已经结束转步骤S36, 否则, 转入步骤 S32; 0020 S32, 获取当前执行的指令; 0021 S33, 判断当前指令是否为系统调用指令, 若是转入步骤S34, 否则, 转入步骤S35; 0022。
28、 S34, 记录系统调用名称、 系统调用参数列表以及 “代码名称-执行指令.txt” 文件 所记录的指令序列, 转入步骤S31; 0023 S35, 将当前指令记录到 “代码名称-执行指令.txt” 文件中, 转入步骤S31; 0024 S36, 结束流程。 0025 作为其中的一种优选例, 步骤S2中, 所述对系统调用序列以及指令序列进行分析, 得到数据流系统调用序列的过程包括以下步骤: 0026 S41, 创建数据流系统调用序列链表; 0027 S42, 将系统调用序列以及指令序列链表的第一个节点赋值给临时节点tempNode; 0028 S43, 判断tempNode是否为Null, 若。
29、是转入步骤S49, 否则转入步骤S44; 0029 S44, 对tempNode进行反向依赖分析, 将tempNode作为参数传给反向依赖分析操 作, 得到关键参数的数据赋值指令序列; 0030 S45, 对关键参数数据赋值指令序列进行赋值关系分析, 将关键参数数据赋值指令 序列作为参数传给赋值关系分析, 得到关键参数赋值表达式Expression; 0031 S46, 创建新的数据流系统调用序列链表节点DFNode; 0032 S47, 将tempNode-SyscallId赋值给DFNode-SyscallId, 将tempNode- SyscallName赋值给DFNode-Syscal。
30、lName, 将tempNode-DependenceSyscallId赋值给 DFNode-DependenceSyscallId, 将Expression加入到DFNode-CriticalArgumentExp; 0033 S48, 将DFNode追加到数据流系统调用序列链表的末尾, 并且将tempNode- NextNode赋值给tempNode, 转到步骤44; 0034 S49, 结束流程。 0035 作为其中的一种优选例, 步骤S44中, 所述对tempNode进行反向依赖分析的过程包 括以下步骤: 说明书 2/12 页 8 CN 111444506 A 8 0036 S51, 。
31、根据不同系统调用确定关键参数, 创建关键参数所依赖的变量, 并且根据关 键参数确定反向依赖分析的源头; 0037 S52, 设置变量x1; 0038 S53, 从系统调用序列以及指令序列中取出第x条指令; 0039 S54, 判断第x条指令是否存在, 若不存在则转入步骤S58, 存在则转入步骤S55; 0040 S55, 判断第x条指令是否对关键参数以及关键参数所依赖的变量有数据赋值操 作, 若有操作则转到步骤S56, 无操作则转到步骤S57; 0041 S56, 将第x条指令记录到 “代码名称-关键参数数据赋值指令.txt” 文件中, 指令的 源操作数内的变量加入关键参数所依赖的变量中, 将。
32、指令的目的操作数从关键参数所依赖 的变量中去除; 0042 S57, 将变量x加一, 转到步骤S53; 0043 S58, 结束流程。 0044 作为其中的一种优选例, 步骤S45中, 所述对关键参数数据赋值指令序列进行赋值 关系分析的过程包括以下步骤: 0045 S61, 创建空的赋值表达式集合; 0046 S62, 定义变量y1; 0047 S63, 从关键参数数据赋值指令序列中获取第y条指令; 0048 S64, 判断第y条指令是否存在, 若不存在则结束流程, 若存在则转入步骤S65; 0049 S65, 获取第y条指令源操作数以及目的操作数中的变量; 0050 S66, 判断赋值表达式。
33、集合内是否有步骤S65所得变量的定义, 若有定义则转入步 骤S67, 若无定义则转入步骤S68; 0051 S67, 从赋值表达式集合中获取变量的赋值表达式, 转到步骤S69; 0052 S68, 为变量定义一个新的赋值表达式, 并且将其加入到赋值表达式集合中; 0053 S69, 根据第y条指令, 对目的操作数内的变量进行数据赋值运算, 更新该变量在赋 值表达式集合内的赋值表达式; 0054 S6a, 对变量y加一, 转到步骤S63。 0055 作为其中的一种优选例, 步骤S3中, 所述对数据流系统调用序列进行排序预处理 的过程包括以下步骤: 0056 S81, 输入数据流系统调用序列Arg。
34、_s1, Arg_s1为调用时输入的参数; 0057 S82, 获取Arg_s1链表的表头head; 0058 S83, 创建非元素节点p, phead-NextNode, 创建临时节点r, rhead- NextNode; 0059 S84, 创建记录节点record, record-NextNodehead; 0060 S85, 判断p是否为Null, 若是, 则得到从record-NextNode开始的有序序列链表, 结束流程, 否则转到步骤S86; 0061 S86, 将p-NextNode赋值给r; 0062 S87, 创建临时节点q, qrecord; 0063 S88, 判断q是。
35、否为Null, 若是则转到步骤S89, 否则转到步骤S8c; 0064 S89, 判断q的下一个无依赖节点是否为Null, 是则转到步骤S8a, 否则转到步骤 说明书 3/12 页 9 CN 111444506 A 9 S8c; 0065 S8a, 判断q的下一个无依赖节点的SyscallName是否小于p的SyscallName, 小于则 转到步骤8b, 否则转到步骤S8c; 0066 S8b, 将q的下一个无依赖节点赋值给q, 转到步骤S88; 0067 S8c, 将q-NextNode赋值给p-NextNode, 将p赋值给q-NextNode, 将r赋值给p, 转 到步骤S85。 00。
36、68 作为其中的一种优选例, 步骤S3中, 所述利用数据流系统调用序列对齐算法将之 与恶意语义特征库中的恶意语义特征进行对比的过程包括以下步骤: 0069 S91, 输入两个数据流系统调用序列Arg_seq1,Arg_seq2; 0070 S92, 遍历Arg_seq1, 获取链表长度n; 0071 S93, 遍历Arg_seq2, 获取链表长度m; 0072 S94, 定义矩阵Hn+1m+1, 矩阵内各个元素全部初始化为0; 0073 S95, 定义变量i1; 0074 S96, 获取Arg_seq1链表中第i个节点; 0075 S97, 判断第i个节点是否为Null, 是则转到步骤S9j,。
37、 否则转到步骤S98; 0076 S98, 定义变量j1; 0077 S99, 获取Arg_seq2链表中第j个节点; 0078 S9a, 判断第j个节点是否为Null, 是则转达步骤S9i, 否则转到步骤S9b; 0079 S9b, 将0与Hi-1j-1+第i个节点与第j个节点的相似性比较结果作为参数传 入, 调用c+库函数max(), 返回结果赋值给Hij; 0080 S9c, 定义变量k1、 l1; 0081 S9d, 判断k是否小于等于i, 是则转到步骤S9e, 否则转到步骤S9f; 0082 S9e, 将Hij与Hi-kj-0.2-0.1*k作为参数传入, 调用c+库函数max(),。
38、 返 回结果赋值给Hij, 并且将k加一, 转到步骤S9d; 0083 S9f, 判断l是否小于等于j, 是则转到步骤S9g, 否则转到步骤S9h; 0084 S9g, 将Hij与Hij-l+-0.2-0.1*l作为参数传入, 调用c+库函数max(), 返回结果赋值给Hij, 并且将l加一, 转到步骤S9f; 0085 S9h, 将j加一, 转到步骤S99; 0086 S9i, 将i加一, 转到步骤S96; 0087 S9j, 得到最大相似性矩阵H; 0088 S9k, 定义变量posin,posjm; 0089 S9l, 创建一个空的数据流系统调用序列链表Comm; 0090 S9m, 判。
39、断posi与posj是否同时为0, 是则转到步骤S9r, 否则转到步骤S9n; 0091 S9n, 判断Hposiposj是否等于Hposi-1posj, 是则转到步骤S9o, 否则转到 步骤S9p; 0092 S9o, 将posi减一, 转到步骤S9m; 0093 S9p, 判断Hposiposj是否等于Hposiposj-1, 是则转到步骤S9q, 否则转到 步骤S9r; 0094 S9q, 将posj减一, 转到步骤S9m; 说明书 4/12 页 10 CN 111444506 A 10 0095 S9r, 将Arg_seq1第posi-1个节点追加到Comm末尾; 0096 S9s, 。
40、将posi以及posj均减一, 转到步骤S9m; 0097 S9t, 得到最大公共子序列Comm; 0098 S9u, 结束流程。 0099 作为其中的一种优选例, 步骤S4中, 所述将获得的恶意语义特征组织成恶意语义 特征库的过程包括以下步骤: 0100 S101, 定义变量z1; 0101 S102, 获取同源恶意代码样本库中的第z个样本; 0102 S103, 判断第z个样本之后是否还有样本, 若是, 则转到步骤104, 否则, 将临时恶意 语义存入恶意语义特征库中, 结束流程; 0103 S104, 通过将第z个恶意代码样本作为参数传给获取系统调用序列以及指令序列 操作, 并且调用获取。
41、系统调用序列以及指令序列操作, 获取第z个恶意代码样本的系统调用 序列以及指令序列; 0104 S105, 通过调用分析系统调用序列以及指令序列操作, 将第z个恶意代码样本的系 统调用序列以及指令序列作为参数传入分析系统调用序列以及指令序列操作, 获取第z个 恶意代码样本的数据流系统调用序列; 0105 S106, 判断该族恶意代码是否为首次入库, 是则转到步骤S107, 否则从恶意语义特 征库中读取该族恶意语义特征, 将读取得到的恶意语义特征赋值给临时恶意语义特征, 转 到步骤S108; 0106 S107, 判断z是否等于1, 若是, 则将第一个恶意代码样本的数据流系统调用序列赋 值给临时。
42、恶意语义特征, 转入步骤S10b, 否则直接转入步骤S108; 0107 S108, 调用提取语义特征序列操作, 将临时恶意语义特征与第z个恶意代码的数据 流系统调用序列作为参数传入提取语义特征序列操作, 得到临时恶意语义特征与第z个恶 意代码的数据流系统调用序列的最大公共子序列; 0108 S109, 将求得的最大公共子序列赋值给临时恶意语义特征, 转到步骤S10b; 0109 S10b, 将z加一, 转到步骤102。 0110 作为其中的一种优选例, 步骤S5中, 所述对待测代码进行细粒度分类识别并且得 出最终识别结果的过程包括以下步骤: 0111 S111, 获取待测代码的系统调用序列以。
43、及指令序列; 0112 S112, 获取待测代码的数据流系统调用序列; 0113 S113, 获取恶意语义特征库内第一个特征, 并且将其赋值给临时特征节点 tempFeature; 0114 S114, 判断tempFeature是否为Null, 若是, 则输出分类识别结果: 待测代码为良性 代码, 结束流程, 否则转到步骤S115; 0115 S115, 将待测代码的数据流系统调用序列与tempFeature作同源恶意代码的细粒 度分类识别方法为参数传给提取语义特征序列操作, 得到待测代码的数据流系统调用序列 与tempFeature的最大公共子序列; 0116 S116, 最大公共子序列的。
44、长度除以tempFeature的长度, 得到相似比例; 0117 S117, 将相似比例与阈值进行对比; 说明书 5/12 页 11 CN 111444506 A 11 0118 S118, 根据对比结果判断分类识别的结果是否为恶意, 若是, 输出分类结果: 待测 代码为某一类恶意代码, 恶意代码类别为tempFeature.MalwareFamilyId, 结束流程, 否则 转入步骤S119; 0119 S119, 读取恶意语义特征库内下一个特征, 赋值给临时特征节点tempFeature, 转 到步骤S114。 0120 以上本发明的技术方案, 与现有相比, 其显著的有益效果在于: 012。
45、1 (1)通过对系统调用关键参数的数据流进行分析, 可以提取得到已有同源恶意代 码库的恶意语义特征, 并且将获得的恶意语义特征组织成恶意语义特征库, 恶意语义特征 库可以一直更新维护, 从而为之后的待测代码分类识别继续提供支持。 0122 (2)本发明利用恶意语义特征库中已有的恶意语义特征, 可对待测代码进行细粒 度的分类识别; 不仅可以识别其是否为恶意代码, 还可进一步判定其具体为哪一类恶意代 码。 0123 (3)本发明可对同源恶意代码实施细粒度的分类识别, 可以区分现有方案难以分 类的恶意代码; 可以避免指令混淆技术、 系统调用混淆技术的干扰, 进行较为准确的恶意代 码分类识别。 012。
46、4 应当理解, 前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这 样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。 另外, 所要求保 护的主题的所有组合都被视为本公开的发明主题的一部分。 0125 结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、 实 施例和特征。 本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面 的描述中显见, 或通过根据本发明教导的具体实施方式的实践中得知。 附图说明 0126 附图不意在按比例绘制。 在附图中, 在各个图中示出的每个相同或近似相同的组 成部分可以用相同的标号表示。 为了清晰起见, 在每个图中。
47、, 并非每个组成部分均被标记。 现在, 将通过例子并参考附图来描述本发明的各个方面的实施例, 其中: 0127 图1是本发明的同源恶意代码的细粒度分类识别方法的流程图。 0128 图2是获取系统调用序列以及指令序列流程图。 0129 图3是PinTools设置流程图。 0130 图4是分析系统调用序列以及指令序列流程图。 0131 图5是反向依赖分析流程图。 0132 图6是赋值关系分析流程图。 0133 图7是提取语义特征序列流程图。 0134 图8是排序预处理流程图。 0135 图9是数据流系统调用序列对齐算法流程图。 0136 图10是建立恶意语义特征库流程图。 0137 图11是分类识。
48、别待测代码流程图。 0138 图12是数据流系统调用序列的链表节点数据结构示意图。 0139 图13是Expression的数据结构示意图。 说明书 6/12 页 12 CN 111444506 A 12 0140 图14是系统调用序列以及指令序列的链表节点数据结构示意图。 具体实施方式 0141 为了更了解本发明的技术内容, 特举具体实施例并配合所附图式说明如下。 0142 结合图1, 本发明提出一种同源恶意代码的细粒度分类识别方法, 所述细粒度分类 识别方法包括以下步骤: 0143 S1, 获取系统调用序列以及指令序列。 0144 S2, 对系统调用序列以及指令序列进行分析, 得到数据流系。
49、统调用序列, 包括: 0145 筛选出系统调用序列中每一个系统调用的系统调用名称以及关键参数, 以关键参 数为源头对指令序列进行反向依赖分析, 获取关键参数的数据赋值指令; 再利用赋值关系 分析, 将关键参数的数据赋值指令转化为赋值表达式; 最后将系统调用名称以及系统调用 关键参数赋值表达式组合得到数据流系统调用, 进一步得到数据流系统调用序列。 0146 S3, 通过提取语义特征序列操作提取已有同源恶意代码库的恶意语义特征, 所述 提取语义特征序列操作包括: 0147 对数据流系统调用序列进行排序预处理, 将不存在依赖关系的数据流系统调用按 照系统调用名称的字典序进行排序, 再利用数据流系统。
50、调用序列对齐算法求解得到两个数 据流系统调用序列的最大公共子序列。 0148 S4, 将获得的恶意语义特征组织成恶意语义特征库。 0149 S5, 获得待测代码的数据流系统调用序列, 利用数据流系统调用序列对齐算法将 之与恶意语义特征库中的恶意语义特征进行对比, 对待测代码进行细粒度分类识别并且得 出最终识别结果: 是否为同源恶意代码和具体的恶意代码类别。 0150 图1所示为本方案实施的整体流程和工作原理。 同源恶意代码样本库是已收集的 用于建立恶意语义特征库的恶意代码样本集合, 并经过了规范命名和区分种类。 待测代码 是待判定的未知代码。 从同源恶意代码样本库中选取同一种类的恶意代码集合,。
- 内容关键字: 同源 恶意代码 细粒度 分类 识别 方法
农机动力飞轮喷涂用漆雾废气处理装置.pdf
旁路引流线绝缘防护夹持支架结构.pdf
建筑施工围挡.pdf
推进剂气体浓度监测传感器.pdf
防刺伤采血针.pdf
铸造件快速冷却装置.pdf
工业硅粉制备用研磨装置.pdf
电池盖帽包边用防偏移模具.pdf
拉杆式储能电源箱.pdf
多穴五轴自动光学检测装置.pdf
活塞钻铣床.pdf
混凝土结构表面裂缝检测装置.pdf
羊粪粉碎机的清扫装置.pdf
铁碳微电解填料球.pdf
电感电流过零检测方法及电路.pdf
陶瓷加工的练泥机.pdf
建筑工程用支护装置.pdf
压滤机拉板装置及压滤机.pdf
含油污泥处理水洗装置.pdf
半导体结构及其制备方法.pdf
双环高密度标测消融导管.pdf
洁净手术室用的排风系统.pdf
用于预测转动设备的故障概率的方法、设备和存储介质.pdf
视觉辅助的三极管封装质量检测方法.pdf
可调式肢体活动康复训练装置.pdf
基于分布式光纤声波传感的异常事件识别方法及相关装置.pdf
服装布料用卷绕装置.pdf
鸽子脂肪前体细胞的分离并体外培养方法及培养物和应用.pdf
配置肘式黏滞阻尼器的自复位摇摆结构.pdf
采硐充填方法.pdf
积分球数字仿体系统及成像测评方法.pdf
氯代碳酸乙烯酯的制备方法.pdf
三维成型物体表面处理液、制备方法及三维物体成型方法.pdf
一种P-N-Si阻燃纳米凝胶及其制备方法与应用.pdf
一种7-氨基-3-磺酸基四氮唑硫甲基头孢烷酸的制备方法.pdf
液晶介质.pdf
一种长期耐高温耐油热塑性动态硫化弹性体及其制备方法.pdf
一种聚氯乙烯/聚氨酯合金线缆料及其制备方法.pdf
一种用于检测芒果链格孢霉叶斑病病原菌的特异性引物及检测方法.pdf
甘氨酸螯合牡蛎钙水相合成方法及高钙酱油的制备.pdf
一种用于三次采油化学驱油剂的双子表面活性剂及其制备方法.pdf
一种食窦魏斯氏菌及其应用、筛选检定方法.pdf
一种产品包装金属盒用改性丙烯酸树脂节能环保涂料.pdf
PCR基因扩增仪模块热均衡机构.pdf
一种环保增塑剂.pdf
一种硬质溶胶塑料包装膜及其制备方法.pdf
一种耐热性好的热水袋用橡胶及其制备方法.pdf
一种含磷的LED荧光粉及其制造方法和所制成的发光器件.pdf
耐磨型PVC复合材料.pdf
一种用于半野生大豆牧草的发酵设备.pdf
氰根桥联混价铜多核配合物及其制法和用途.pdf