一种基于反汇编进行恶意样本检测的方法及系统的制作方法

文档序号:9261415阅读:476来源:国知局
一种基于反汇编进行恶意样本检测的方法及系统的制作方法
【技术领域】
[0001]本发明涉及网络安全技术领域,尤其涉及一种基于反汇编进行恶意样本检测的方法及系统。
【背景技术】
[0002]随着计算机的普及和网络的发展,一方面,人们更多的使用互联网进行办公,会接触到各样的文档类型;另一方面,信息所带来的价值也在不断增加,在这样一个网络世界中,可以说信息就等于金钱,在利益的驱动下,不法分子会制作带有恶意代码的文档,通过多种方法发送到用户电脑中,当用户在打开查看时,其实已经被不法分子控制。利用文档格式来达到入侵的目的有着先天的优势,不易被用户察觉,恶意代码后台运行,可以做到“杀人于无形”。目前出现的很多APT事件中,大多都采用了文档格式的恶意样本。
[0003]目前,对文档格式的恶意样本检测多采用常规手段,提取特征码,匹配特征码,或是动态检测,打开文档格式,通过其行为进行判断是否具有恶意操作。
[0004]现有技术存在的技术问题:
在目前现有的检测方法中,可以分为特征码检测和动态检测。
[0005]特征码匹配方式面临的一个问题是当恶意代码进行简单的变形,如:加入一些空格、不显示字符,都会对特征码检测造成很大的困扰,而且需要人工进行分析,提取特征;而且这种方法只能针对现有已知漏洞,对未知漏洞,这类方法无能为力。
[0006]动态检测所面临的问题是计算机环境是否适合样本的运行,是否会触发恶意样本的行为,文档格式的恶意样本是利用软件的漏洞,精心构造的文件才可以触发漏洞,多数只能在一种环境下运行,如有些样本只能在Windows XP SP3下,使用Office 2007才可触发,其它系统,其它版本的软件都无法触发恶意代码的操作。因此,动态检测中没有恶意行为的样本并非一定没有恶意代码,只是可能在当前环境中无法触发恶意操作。

【发明内容】

[0007]文档格式的恶意样本一般由两部分组成,一部分是文档所必须的文件头、数据等组成部分,另一部分为shellcode ;想要执行恶意操作,则文档中必须带有shellcode,并能运行shellcode。而本发明中的方法及系统可以检测文档中是否夹带了 shellcode。
[0008]本发明提供了一种基于反汇编进行恶意样本检测的方法及系统,该发明提供的技术方案通过对待检测文档进行静态反汇编操作,若存在成功反汇编的指令,并且指令字节总长度大于预设值,则认为该待检测文档为恶意文档,存在shellcode。该技术方案不仅对已知漏洞具备检测能力,对未知漏洞同样具备检测能力。
[0009]本发明采用如下方法来实现:一种基于反汇编进行恶意样本检测的方法,包括: 步骤1、将待检测文档转换为十六进制格式的数据;
步骤2、对所述数据以逐字节遍历的形式进行反汇编;
步骤3、判断是否存在成功反汇编的指令,若存在,则执行步骤4,否则执行步骤5 ; 步骤4、判断成功反汇编的指令字节总长度是否大于预设值,若大于,则待检测文档为恶意文档,否则,执行步骤5;
步骤5、判断对所述数据的遍历是否已完成,若已完成,则待检测文档为非恶意文档,否贝U,继续执行步骤2。
[0010]进一步地,所述步骤I包括:判断待检测文档是否为文本可读类型文档,若是,则以文本方式读取待检测文档,并转换为十六进制格式的数据,否则以二进制方式读取待检测文档,并转换为十六进制格式的数据,并设置初始偏移offset为O。
[0011]进一步地,所述步骤2包括:从offset处对所述数据以逐字节遍历的形式进行反汇编,每次遍历完成后,所述offset自动加I。
[0012]进一步地,所述判断对所述数据的遍历是否已完成包括:判断所述offset是否大于等于所述数据总长度,若是,则已完成,否则未完成。
[0013]一种基于反汇编进行恶意样本检测的系统,包括:
格式转换模块,用于将待检测文档转换为十六进制格式的数据;
反汇编模块,用于对所述数据以逐字节遍历的形式进行反汇编;
第一判定模块,用于判断是否存在成功反汇编的指令,若存在,则由第二判定模块继续操作,否则由第三判定模块继续操作;
第二判定模块,用于判断成功反汇编的指令字节总长度是否大于预设值,若大于,则待检测文档为恶意文档,否则由第三判定模块继续操作;
第三判定模块,用于判断对所述数据的遍历是否已完成,若已完成,则待检测文档为非恶意文档,否则由反汇编模块继续操作。
[0014]进一步地,所述格式转换模块为:用于判断待检测文档是否为文本可读类型文档,若是,则以文本方式读取待检测文档,并转换为十六进制格式的数据,否则以二进制方式读取待检测文档,并转换为十六进制格式的数据,并设置初始偏移offset为O。
[0015]进一步地,所述反汇编模块为Let处对所述数据以逐字节遍历的形式进行反汇编,每次遍历完成后,offset自动加I。
[0016]进一步地,所述判断对所述数据的遍历是否已完成包括:判断所述offset是否大于等于所述数据总长度,若是,则已完成,否则未完成。
[0017]综上所述,本发明提供了一种基于反汇编进行恶意样本检测的方法及系统,首先,将待检测文档转化为十六进制格式的数据,然后对所述数据进行反汇编,接着判断是否存在成功反汇编的指令,若存在则继续判断成功反汇编的指令字节总长度是否大于预设值,若大于预设值则认为待检测文档为恶意文档,否则要查看是否成功遍历了整个文档,若是,则待检测文档为非恶意文档,否则返回继续反汇编。本发明提供的技术方案通过对待检测文档进行尝试性反汇编,根据成功反汇编的指令情况进一步判断是否是恶意文档,由于该发明是基于对待检测文档的静态反汇编为基础手段进行检测的,因此,该发明所述的技术方案适用于多种环境下,其检出效果不会受环境的影响,从而可以有效检测已知或者未知的恶意文档。
【附图说明】
[0018]为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019]图1为本发明提供的一种基于反汇编进行恶意样本检测的方法实施例流程图;
图2为本发明提供的一种基于反汇编进行恶意样本检测的系统实施例结构图。
【具体实施方式】
[0020]本发明给出了一种基于反汇编进行恶意样本检测的方法及系统,为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明:
本发明首先提供了一种基于反汇编进行恶意样本检测的方法实施例,如图1所示,包括:
SlOl将待检测文档转换为十六进制格式的数据;
S102对所述数据以逐字节遍历的形式进行反汇编;可以使用Capstone等反汇编引擎进行反汇编操作;
S103判断是否存在成功反汇编的指令,若存在,则执行S104,否则执行S105 ;
S104判断成功反汇编的指令字节总长度是否大于预设值,若大于,则待检测文档为恶意文档,否则,执行S105 ;
其中,所述预设值为根据经验或者通过多次测试给出适当的值;
S105判断对所述数据的遍历是否已完成,若已完成,则待检测文档为非恶意文档,否贝U,继续执行S102。
[0021]优选地,所述SlOl可以具体包括:判断待检测文档是否为文本可读类型文档,若是,则以文本方式读取待检测文档,并转换为十六进制格式的数据,否则以二进制方式读取待
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1