首页> 中国专利> 一种基于最大频繁子图挖掘的动态污点分析方法

一种基于最大频繁子图挖掘的动态污点分析方法

摘要

本发明提供的是一种基于最大频繁子图挖掘的动态污点分析方法。包括动行为依赖图构建、最大频繁子图挖掘和行为依赖图匹配三个部分。采用邻接矩阵存储行为依赖图,其中顶点间的数据关联边用1表示,控制关联边用2表示,无相应依赖边用0表示。最大频繁子图挖掘算法即SPIN‑MBDGM算法的主要思想是首先使用FFSM算法从行为依赖图集中得到频繁子树,然后通过添加候选数据关联边和控制关联边的扩展算法生成最大频繁子图。该方法的主要优点是从同一恶意代码家族所有的行为依赖图中挖掘最大公共部分,在不丢失特征信息的情况下减少特征库中行为依赖图的数量,从而提高识别速度。

著录项

  • 公开/公告号CN106384050A

    专利类型发明专利

  • 公开/公告日2017-02-08

    原文格式PDF

  • 申请/专利权人 哈尔滨工程大学;

    申请/专利号CN201610821507.2

  • 申请日2016-09-13

  • 分类号G06F21/56(20130101);

  • 代理机构

  • 代理人

  • 地址 150001 黑龙江省哈尔滨市南岗区南通大街145号哈尔滨工程大学科技处知识产权办公室

  • 入库时间 2023-06-19 01:28:23

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-15

    授权

    授权

  • 2017-03-08

    实质审查的生效 IPC(主分类):G06F21/56 申请日:20160913

    实质审查的生效

  • 2017-02-08

    公开

    公开

说明书

技术领域

本发明涉及的是一种网络安全领域的动态污点分析方法。

背景技术

互联网技术的高速发展给人们工作和生活带来了前所未有的便利,但同时网络安全事件发生频率也越来越高,其中恶意代码攻击事件最为突出,给数据安全带来极大威胁。为保证主机正常安全运行,人们迫切需求一种合理高效的恶意代码识别方法。当前恶意代码识别方法主要分为两类,静态分析和动态分析。动态分析方法分析代码运行时的状态和行为,如注册表、文件系统、网络的访问情况等,它们很难被伪装。相对于静态分析,动态分析提取的行为更接近代码实际特征,而且对于代码层混淆技术处理后的代码,其运行时的特征不会改变,所以识别准确率相对较高。

目前具有代表性的动态分析工具主要有CWSandbox TTAnalyze、Norman Sandbox、Anubis等,其中最常用的技术是动态污点分析技术。由于能动态跟踪代码执行过程,可以从行为层获取代码特征,准确表达代码行为。动态污点分析方法首先通过污点标记、污点传播、API截获与参数提取和污点检查等过程来生成记录污点传播路径的污点文件,然后利用该污点文件构建行为依赖图。公开号为CN104008329A的专利文件中公开了一种基于虚拟化技术的软件隐私泄露行为检测方法及系统,其中采用指令级和进程级相结合的多级动态污点分析方法,获得细粒度的污点依赖分析图,从而可以获得系统污染的路径信息,以及信息泄露等高层次语义信息,实现软件隐私泄露行为的有效分析和检测。在文献《Using feature generation from API calls for malware detection》(Salehi Z,Sami A,Ghiasi M.Using feature generation from API calls for malware detection[J].Computer Fraud&Security,2014,2014(9):9-18P.)中,Salehi等人假设API不能正确代表样本的相似行为,因此他们提取了API调用和输入参数一起作为预测特征,将他们二进制特征向量并通过分类算法来实现检测功能。在文献《Dynamic VSA:a framework for malware detection based on register contents》(Ghiasi M,Sami A,Salehi Z.Dynamic VSA:a framework for malware detection based on register contents[J].Engineering Applications of Artificial Intelligence,2015,44(1):111-122P.)中,Mahboobe Ghiasi等人提出一种基于寄存器内容的恶意代码检测框架。在一个可控环境中,动态分析API调用以记录恶意二进制文件功能,并且提出一种基于寄存器值集合计算两个二进制文件的相似距离的方法,加快了匹配过程。虽然通过比较行为依赖图之间的相似度来识别恶意代码更能准确反映代码行为,但也存在依赖图数量过多的问题。目前的研究成果针对此类问题涉及较少,但由于它严重影响了动态污点分析技术的效果及性能。

综上所述,目前通过比较行为依赖图之间的相似度来识别恶意代码存在依赖图数量过多的问题,而此问题已经逐渐成为影响动态污点分析技术发展的重要瓶颈。

发明内容

本发明的目的在于提供一种能够在不丢失特征信息的情况下,减少依赖图的数量、提高识别速度的基于最大频繁子图挖掘的动态污点分析方法。

本发明的目的是这样实现的:

包括动行为依赖图构建、最大频繁子图挖掘和行为依赖图匹配三个部分;

1、行为依赖图的构建,采用表示顶点之间相邻关系的邻接矩阵存储行为依赖图,其中顶点间的数据关联边用1表示、控制关联边用2表示、无相应依赖边用0表示,行为依赖图的生成过程包括:

(1.1)分析由动态污点分析方法生成的污点文件,若已存在的污点数据都已被未污染的数据重新覆盖,则转(1.9),否则,转(1.2);

(1.2)将所有含有污点参数的API作为邻接矩阵的顶点;

(1.3)查询双向链表里的污点传播路径,得到两个API调用APIi与APIj,若APIi与APIj之间存在数据依赖关系,则转(1.4),否则转(1.5);

(1.4)如APIi调用APIj,在邻接矩阵APIi和APIj间记1,添加数据关联边;

(1.5)若APIj在某个污点数据通过控制转移指令能达到的范围内且APIi调用APIj,则转(1.6),否则转(1.7);

(1.6)在邻接矩阵APIi和APIj间记2,添加控制关联边;

(1.7)APIi和APIj间记0,两者无依赖关系;

(1.8)当污点文件分析完成,将邻接矩阵的所有空闲位置补0,并根据邻接矩阵绘制行为依赖图;

(1.9)生成行为依赖图结束;

所述行为依赖图为Gbeh表示行为依赖图,其中V表示图的顶点,DE表示数据关联边、CE表示控制关联边、是标号集,包括API名称、输入参数、输出参数和返回值,L为顶点V和标号集间的映射关系L:将总行为依赖图记为集合GG,GG={Gbeh1,...,Gbehi,...,Gbehn},1≤i≤n;

2、最大频繁子图挖掘具体过程包括:

(2.1)利用FFSM算法从行为依赖图集中枚举候选频繁子树;

(2.2)对得到的候选频繁子树进行自底向上的剪枝处理,即根据左子树优先迭代删掉叶子,若得到的树的支持度大于等于原树,则删掉叶子,否则不变;

(2.3)对每一个频繁子树进行扩展一条候选数据关联边或控制关联边,即遍历候选边集合,对任意一条候选边,通过连接操作(⊕),添加到频繁子树,若添加边后的子图依然频繁,则添加该边,否则不添加该边;

(2.4)若添加候选数据关联边或控制关联边后依然频繁,则转(2.3),否则转(2.5);

(2.5)对扩展生成的子图进行剪枝处理,如果删掉某条边不改变支持度的大小,则删掉该边;

(2.6)若所有候选频繁子图之间存在子图同构关系,则转(2.7),否则转(2.3);

(2.7)剩下的子图部分即为最大频繁子图;

3、行为依赖图匹配部分中将最大频繁子图的边称为关键边、记为e,将挖掘完成的特征库中行为依赖图集记为GG,GG中的每个行为依赖图记为g,待测目标图记为Gtarget,Gtarget与GG中某个行为依赖图匹配的关键边数记为m,Gtarget中遗漏的关键边数为n,m和n初始值均为0,匹配过程包括:

(3.1)选择图集GG中任意一个行为依赖图g;

(3.2)选择每个行为依赖图g中的任意一条关键边e;

(3.3)若e属于属于Gtarget,则转(3.4),否则转(3.5);

(3.4)m的值加1;

(3.5)n的值加1;

(3.6)若遍历完g中的所有e,则转(3.7),否则转(3.2);

(3.7)将m/(m+n)的值存在数组里;

(3.8)若遍历完图集GG中所有行为依赖图g,则转(3.9),否则转(3.1);

(3.9)将数组中的最大值作为匹配结果。

针对传统动态污点分析技术生成的恶意代码行为依赖图数量巨大而导致识别匹配时间复杂度大的问题,本发明以减少依赖图数量为切入点,提出了一种基于最大频繁子图挖掘的动态污点分析方法,力图达到在不丢失特征信息的情况下,减少特征库中行为依赖图数量,从而达到提高识别速度的目的。该方法的主要优点是从同一恶意代码家族所有的行为依赖图中挖掘最大公共部分,在不丢失特征信息的情况下减少特征库中行为依赖图的数量,从而提高识别速度。

附图说明

图1是基于最大频繁子图挖掘的动态污点分析方法框图;

图2是行为依赖图构建流程图;

图3是最大频繁子图挖掘流程图;

图4是行为依赖图匹配流程图。

具体实施方式

结合图1,本发明主要包括分析动态污点生成污点文件、行为依赖图的构建、最大频繁子图挖掘和行为依赖图匹配四个部分。其中,分析动态污点生成污点文件的主要作用是为行为依赖图的构建做准备。

1.行为依赖图的构建。本发明采用邻接矩阵(表示顶点之间相邻关系的矩阵)存储行为依赖图,其中顶点间的数据关联边用1表示,控制关联边用2表示,无相应依赖边用0表示。参阅图2,行为依赖图的生成过程如下:

(1)分析由动态污点分析方法生成的污点文件,若已存在的污点数据都已被未污染的数据重新覆盖,则转(9),否则,转(2)。

(2)将所有含有污点参数的API作为邻接矩阵的顶点。

(3)查询双向链表(是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱)里的污点传播路径,得到两个API调用,如APIi调用APIj。若APIi>j之间存在数据依赖关系,则转(4),否则转(5)。

(4)如APIi调用APIj,在邻接矩阵APIi和APIj间记1,添加数据关联边。

(5)若APIj在某个污点数据通过控制转移指令能达到的范围内且APIi调用APIj,则转(6),否则转(7)。

(6)在邻接矩阵APIi和APIj间记2,添加控制关联边。

(7)APIi和APIj间记0,两者无依赖关系。

(8)当污点文件分析完成,将邻接矩阵的所有空闲位置补0,并根据邻接矩阵绘制行为依赖图。

(9)生成行为依赖图结束。

其中,上述行为依赖图定义为Gbeh表示行为依赖图,其中V表示图的顶点,表示数据关联边,表示控制关联边,是标号集,包括API名称、输入参数、输出参数和返回值,L为顶点V和标号集间的映射关系L:将总行为依赖图记为集合GG,GG={Gbeh1,...,Gbehi,...,Gbehn},(1≤i≤n)。

2.最大频繁子图(依赖图集中所有图的最大公共部分)挖掘算法即SPIN-MBDGM算法的主要思想是首先使用FFSM(Fast Frequent Subgragh Mining)算法从行为依赖图集中得到频繁子树(是无回路的有向图),然后通过添加候选数据关联边和控制关联边的扩展算法生成最大频繁子图。参阅图2,具体过程如下:

(1)利用本领域现有的FFSM算法从行为依赖图集中枚举候选频繁子树。

(2)对得到的候选频繁子树进行自底向上的剪枝处理,即根据左子树优先迭代删掉叶子,若得到的树的支持度,即与该图子图同构的图数占总图数的百分比,大于等于原树,则删掉叶子,否则不变。

(3)对每一个频繁子树进行扩展一条候选数据关联边或控制关联边,即遍历候选边集合,对任意一条候选边,通过连接操作(⊕),添加到频繁子树,若添加边后的子图依然频繁,则添加该边,否则不添加该边。

(4)若添加候选数据关联边或控制关联边后依然频繁,则转(3),否则转(5)。

(5)对扩展生成的子图进行剪枝处理,如果删掉某条边不改变支持度的大小,则删掉该边。

(6)若所有候选频繁子图之间存在子图(指节点集和边集分别是某一图的节点集的子集和边集的子集的图)同构(图G1和G2的顶点集合和边集合之间都分别建立了一一对应关系,并且G1的两个顶点减的边对应G2对应顶点间的边,则G1与G2互为同构)关系,则转(7),否则转(3)。

(7)剩下的子图部分即为最大频繁子图。

3.行为依赖图匹配部分。这里将最大频繁子图的边称为关键边,记为e。将挖掘完成的特征库中行为依赖图集记为GG,GG中的每个行为依赖图记为g,待测目标图记为Gtarget,Gtarget与GG中某个行为依赖图匹配的关键边数记为m,Gtarget中遗漏的关键边数为n,m和n初始值均为0。参阅图4,匹配主要过程如下:

(1)选择图集GG中任意一个图g。

(2)选择每个图g中的任意一条关键边e。

(3)若e属于属于Gtarget,则转(4),否则转(5)。

(4)m的值加1。

(5)n的值加1。

(6)若遍历完g中的所有e,则转(7),否则转(2)。

(7)将m/(m+n)的值存在数组里。

(8)若遍历完图集GG中所有行为依赖图g,则转(9),否则转(1)。

(9)将数组中的最大值作为匹配结果。

本发明的有益效果体现在:

针对传统动态污点分析技术生成的恶意代码行为依赖图数量巨大而导致识别匹配时间复杂度大的问题,本发明提出了一种基于最大频繁子图挖掘的动态污点分析方法,该方法的主要优点是从同一恶意代码家族所有的行为依赖图中挖掘最大公共部分,在不丢失特征信息的情况下减少特征库中行为依赖图的数量,从而提高识别速度。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号