恶意程序控制指令识别方法及装置制造方法及图纸

技术编号:18007621 阅读:29 留言:0更新日期:2018-05-22 23:48
一种恶意程序控制指令识别方法,包括:监控恶意程序的注入过程,获取注入进程和注入地址;监控与所述注入进程对应的输入数据,获取与所述输入数据对应的执行轨迹;对所述执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹;根据筛选得到的执行轨迹计算代码覆盖率,根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元;根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集。此外,还提供了一种恶意程序控制指令识别装置。上述恶意程序控制指令识别方法及装置能够提高控制指令识别的准确率。

【技术实现步骤摘要】
恶意程序控制指令识别方法及装置
本专利技术涉及计算机
,特别是涉及一种恶意程序控制指令识别方法及装置。
技术介绍
伴随着计算机技术的发展,恶意程序越来越多的出现在日常生活中,对企业的信息安全以及人们的正常生活产生不良影响。例如,现有的僵尸网络恶意程序即通过感染传播的手段,将大量恶意程序客户端植入到多个主机之中,然后不法分子可通过僵尸网络服务器发送控制指令操纵被控制的多个主机发起DDOS(拒绝服务攻击)攻击。例如,不法分子可操纵被控制的多个主机同时向某个网站发起大量请求,使该网站的服务器负载增加,从而影响用户正常的浏览服务。因此,为遏制恶意程序造成的危害,通常需要先对恶意程序的控制指令进行识别,然后再通过数据包分析将附带有恶意程序控制指令的数据包截获,从而在全局控制恶意程序的危害。然而,现有技术中对恶意程序控制指令的识别方法,通常通过人工的方式静态的分析恶意程序的代码,或者动态的分析数据包的统计特征,其识别准确度均较低。
技术实现思路
基于此,有必要提供一种能提高识别准确率的恶意程序控制指令识别方法。一种恶意程序控制指令识别方法,包括:监控恶意程序的注入过程,获取注入进程和注入地址;监控与所述注入进程对应的输入数据,获取与所述输入数据对应的执行轨迹;对所述执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹;根据筛选得到的执行轨迹计算代码覆盖率,根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元;根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集。此外,还有必要提供一种能提高识别准确率的恶意程序控制指令识别装置。一种恶意程序控制指令识别装置,包括:进程监控模块,用于监控恶意程序的注入过程,获取注入进程和注入地址;执行轨迹获取模块,用于监控与所述注入进程对应的输入数据,获取与所述输入数据对应的执行轨迹;执行轨迹筛选模块,用于对所述执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹;覆盖单元定位模块,用于根据筛选得到的执行轨迹计算代码覆盖率,根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元;指令获取模块,用于根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集。上述恶意程序控制指令识别方法及装置,通过监控恶意程序对系统进程的注入过程获取与输入数据对应的执行轨迹,在对执行轨迹进行筛选后得到与注入地址即恶意程序加载在内存中的区域对应的执行轨迹,然后通过分析各个执行轨迹中包含的覆盖单元的代码覆盖率来定位与控制指令判断逻辑对应的覆盖单元。由于与控制指令判断逻辑对应的覆盖单元中必然包含用于校验输入数据中包含的控制指令是否正确的标准控制指令集,因此,根据该与控制指令判断逻辑对应的覆盖单元即可获取恶意程序控制指令。和现有技术相比,上述恶意程序控制指令识别方法及装置由于通过监控准确定位到了与控制指令判断逻辑对应的覆盖单元,使得识别的准确度得到了提高。附图说明图1为一个实施例中恶意程序控制指令识别方法的流程图;图2为一个实施例中计算执行轨迹的相似度,并将执行轨迹归一化的步骤的流程图;图3为一个实施例中恶意程序控制指令识别装置的结构示意图;图4为另一个实施例中恶意程序控制指令识别装置的结构示意图;图5为一个应用场景中对Zeus恶意程序对explorer.exe进程的注入过程进行监控的示意图;图6为一个应用场景中对获取到的执行轨迹的示意图;图7为一个应用场景中筛选后得到的执行轨迹的示意图;图8为一个应用场景中执行轨迹的统计数据的示意图;图9为一个应用场景中通过计算代码覆盖率得到分支覆盖单元的示意图;图10为一个应用场景中通过计算代码覆盖率得到条件判断覆盖单元的示意图;图11为一个应用场景中得到的执行序列的示意图;图12为一个应用场景中定位到的污点数据的示意图;图13为一个应用场景中定位到的指令判断函数的示意图;图14为一个应用场景中指令判断函数的参数值取值的示意图;图15为一个应用场景中获取到的标准控制指令集的地址信息的示意图;图16为一个应用场景中获取到的标准控制指令集的示意图;图17为一个应用场景中校验得到的所有执行轨迹的示意图。具体实施方式在一个实施例中,如图1所示,一种恶意程序控制指令识别方法,包括以下步骤:步骤S102,监控恶意程序的注入过程,获取注入进程和注入地址。恶意程序在感染主机后,通常会通过注入函数将其绑定在某个系统进程中,该被注入的系统进程即为注入进程。当该注入进程加载并运行时,则通过函数调用启动恶意程序运行。例如,在windows系统中,恶意程序通常会注入到explorer进程(资源管理器进程)中,从而随着操作系统的启动而启动。在本实施例中,可通过监控文件的创建和读写操作过程以及进程之间的交互行为来确定注入进程以及注入函数,通过获取注入函数的参数获取注入地址以及注入地址的大小。步骤S104,监控与注入进程对应的输入数据,获取与输入数据对应的执行轨迹。在一个实施例中,可在获取到输入数据后,可获取监控时长,然后在监控时长的时间长度内获取与输入数据对应的执行轨迹。监控时长可以为预设值,预设值优选为5分钟。在一个实施例中,监控与注入进程对应的输入数据的步骤可包括:获取污点数据类型,根据污点数据类型对输入数据进行筛选。污点数据类型即可能触发恶意程序运行的输入数据类型。污点数据类型可以是网络数据包、键盘输入数据、操作系统时间等。污点数据类型可预先设置。例如,在获取僵尸网络恶意程序的控制指令时,由于用户在被感染的主机上的键盘输入等操作不会产生能触发僵尸网络恶意程序的控制指令,因此污点数据类型可预设为网络数据包,即获取网络数据包对应的注入进程的执行轨迹。执行轨迹即在监控时间内运行的覆盖单元的序列。在计算机技术中,程序以二进制指令代码的形式存储在内存空间中,并按照内存地址的顺序连续执行。当执行过程中遇到函数调用时,则跳转至该函数调用对应的内存空间继续执行其存储的二进制指令代码,函数调用结束后,再跳转回继续执行。覆盖单元即连续存储二进制指令代码的内存空间。在本实施例中,可根据获取到的注入地址提取二进制代码并进行反汇编从而得到相应的汇编指令。可对汇编指令按地址顺序进行迭代,将顺序执行的二进制指令划归为同一覆盖单元,若迭代到的指令为函数调用指令或程序跳转指令时,则根据跳转到的内存地址进行递归迭代,并创建对应该函数调用指令或程序跳转指令的覆盖单元,从而得到执行轨迹对应的覆盖单元集合。在本实施例中,获取与输入数据对应的执行轨迹的步骤还可包括:判断执行轨迹是否对应输入数据的传播轨迹,若不包含,则可忽略该执行轨迹。输入数据的传播轨迹即输入数据经过运算操作和复制操作进行传播的数据集合。若执行轨迹中的所有覆盖单元均不包含该数据集合中的元素,则该执行轨迹与输入数据的传播轨迹不对应。也就是说,在本实施例中,若执行轨迹并没有对接收到的网络数据包中的数据进行提取,与网络数据包中的数据完全无关时,可忽略该执行轨迹。进一步的,在迭代过程中,还可获取覆盖单元对应的运行次数和运行时间。由于指令在执行时,通常会存在循环执行的情况,因此,覆盖单元还对应运行次数,可根据运行次数判断该覆盖单元被循环运行了多少次。在本实施例中,还可将监控获取到的执行轨迹存储在执行轨迹数据库中,可将执行轨迹包含的覆盖单元的内存起始位置、运行时间和运行次本文档来自技高网...
恶意程序控制指令识别方法及装置

【技术保护点】
一种恶意程序控制指令识别方法,包括:监控恶意程序的注入过程,获取注入进程和注入地址;监控与所述注入进程对应的输入数据,获取与所述输入数据对应的执行轨迹;对所述输入数据对应的执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹;根据筛选得到的执行轨迹计算代码覆盖率,根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元;根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集。

【技术特征摘要】
1.一种恶意程序控制指令识别方法,包括:监控恶意程序的注入过程,获取注入进程和注入地址;监控与所述注入进程对应的输入数据,获取与所述输入数据对应的执行轨迹;对所述输入数据对应的执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹;根据筛选得到的执行轨迹计算代码覆盖率,根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元;根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集。2.根据权利要求1所述的恶意程序控制指令识别方法,其特征在于,所述对所述输入数据对应的执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹的步骤还包括:获取所述输入数据对应的执行轨迹中包含的系统函数调用指令;移除所述系统函数调用指令对应的覆盖单元。3.根据权利要求1所述的恶意程序控制指令识别方法,其特征在于,所述对所述输入数据对应的执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹的步骤还包括:获取所述输入数据对应的执行轨迹中包含的与所述注入进程对应的调用指令;移除所述注入进程对应的调用指令对应的覆盖单元。4.根据权利要求1所述的恶意程序控制指令识别方法,其特征在于,所述对所述输入数据对应的执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹的步骤还包括:获取所述输入数据对应的执行轨迹包含的覆盖单元及所述执行轨迹包含的覆盖单元的运行次数,根据所述包含的覆盖单元和运行次数计算所述执行轨迹之间的相似度;获取相似度阈值;将相似度大于所述相似度阈值的执行轨迹归一化。5.根据权利要求4所述的恶意程序控制指令识别方法,其特征在于,所述获取所述输入数据对应的执行轨迹包含的覆盖单元及所述执行轨迹包含的覆盖单元的运行次数,根据所述包含的覆盖单元和运行次数计算所述执行轨迹之间的相似度的步骤为:获取所述输入数据对应的执行轨迹包含的内存地址相同且运行次数相同的相同覆盖单元个数、内存地址不同的特有覆盖单元个数以及内存地址相同但运行次数不同的近似覆盖单元个数;根据所述相同覆盖单元个数、特有覆盖单元个数和近似覆盖单元个数计算所述输入数据对应的执行轨迹之间的相似度。6.根据权利要求1所述的恶意程序控制指令识别方法,其特征在于,所述根据筛选得到的执行轨迹计算代码覆盖率包括:获取筛选得到的执行轨迹的覆盖单元及其运行次数;计算所述覆盖单元在所述筛选得到的执行轨迹中各自的出现次数;根据所述出现次数计算代码覆盖率。7.根据权利要求6所述的恶意程序控制指令识别方法,其特征在于,所述根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元的步骤为:根据所述代码覆盖率获取出现次数为1的分支覆盖单元和每个筛选得到的执行轨迹均包含的且运行次数不同的条件判断覆盖单元;根据所述分支覆盖单元和条件判断覆盖单元定位对应控制指令判断逻辑的覆盖单元。8.根据权利要求7所述的恶意程序控制指令识别方法,其特征在于,所述根据所述分支覆盖单元和条件判断覆盖单元定位对应控制指令判断逻辑的覆盖单元的步骤为:获取所述分支覆盖单元的分支时间戳和所述条件判断覆盖单元的判断时间戳;获取运行时间戳在所述分支时间戳和所述判断时间戳之间的覆盖单元,并根据获取到的覆盖单元、分支覆盖单元和条件判断覆盖单元定位判断指令执行序列。9.根据权利要求1至8任一项所述的恶意程序控制指令识别方法,其特征在于,所述根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集步骤之后还包括:根据所述标准控制指令集生成测试指令;通过修改函数调用参数值输入测试指令,获取测试执行轨迹;根据所述测试执行轨迹校验所述标准控制指令集。10...

【专利技术属性】
技术研发人员:王志邹赞张晓康贾春福刘露
申请(专利权)人:腾讯科技深圳有限公司南开大学
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1