发明内容
本发明提供一种识别文档代码的方法和装置,解决了恶意文件的自动化分析的问题。
为了实现上述发明目的,本发明采取的技术方案如下:
一种识别文档代码的方法,包括:
对目标文档满足预设格式字节位置进行定位;
对所述满足预设格式字节的起始位置至结束位置进行模拟中央处理器CPU指令执行,获得执行结果;
对所述执行结果进行特征提取,获得特征提取结果;
根据所述特征提取结果,识别所述目标文档是否包含恶意代码。
可选地,所述对目标文档的满足预设格式字节位置进行定位,包括:
对所述目标文档进行格式化解析,识别出所述目标文档的格式;
根据识别出的所述目标文档的格式,在所述目标文档对应的位置进行恶意代码定位。
可选地,对所述满足预设格式字节的起始位置至结束位置进行模拟中央处理器CPU指令执行包括:
从所述满足预设格式字节的起始位置开始,每次调整偏移量,逐次进行模拟CPU指令执行,获得执行结果,直到所述满足预设格式字节的结束位置。
可选地,对所述执行结果进行特征提取,获得特征提取结果包括:
逐一比较从所述执行结果提取出的特征是否符合预设的恶意代码特征,如果符合,则记录所述特征。
可选地,根据所述特征提取结果给出分析结论包括:
对特征提取获得的每个特征提取结果按照预设标准进行评分,根据特征提取获得的所有特征提取结果的评分结果与预设阈值进行比较,获得所述目标文档的满足预设格式字节是否为恶意代码的分析结论。
本发明实施例还提供一种识别文档恶意代码的装置,包括:
定位模块,设置为对目标文档的满足预设格式字节位置进行定位;
指令模块,设置为对所述满足预设格式字节的起始位置至结束位置进行模拟中央处理器CPU指令执行,获得执行结果;
特征提取模块,设置为对所述执行结果进行特征提取,获得特征提取结果;
分析模块,设置为根据所述特征提取结果,识别所述目标文档是否包含 恶意代码。
可选地,所述定位模块包括:
格式识别模块,设置为对所述目标文档进行格式化解析,识别出所述目标文档的格式;
根据所述格式识别模块识别出的所述目标文档的格式,在所述目标文档对应的位置进行恶意代码定位。
可选地,所述指令模块对所述满足预设格式字节的起始位置至结束位置进行模拟中央处理器CPU指令执行是指:
从所述满足预设格式字节的起始位置开始,每次调整偏移量,逐次进行模拟CPU指令执行,获得执行结果,直到所述满足预设格式字节的结束位置。
可选地,所述特征提取模块对所述执行结果进行特征提取,获得特征提取结果是指:
逐一比较从所述执行结果提取出的特征是否符合预设的恶意代码特征,如果符合,则记录所述特征。
可选地,所述分析模块根据所述特征提取结果给出分析结论是指:
对特征提取获得的每个特征提取结果按照预设标准进行评分,根据特征提取获得的所有特征提取结果的评分结果与预设阈值进行比较,获得所述目标文档的满足预设格式字节是否为恶意代码的分析结论。
本发明实施例还提供一种识别文档恶意代码的装置,包括存储器和处理器,
所述存储器用于存储用于识别文档恶意代码的程序;所述用于识别文档恶意代码的程序在被所述处理器读取执行时,执行如下操作:
对所述目标文档的满足预设格式字节位置进行定位;
对所述满足预设格式字节的起始位置至结束位置进行模拟中央处理器CPU指令执行,获得执行结果;
对所述执行结果进行特征提取,获得特征提取结果;
根据所述特征提取结果,识别所述目标文档是否包含恶意代码。
本发明和现有技术相比,具有如下有益效果:
本发明能够解决相关技术的恶意文档识别方法受限于环境的问题,可以分析任意x86平台的恶意文档,不受限于针对沙箱环境的检测。可以结合文件结构分析及恶意特征打分机制,快速定位代码,并且效果良好。
具体实施方式
为使本发明的发明目的、技术方案和有益效果更加清楚明了,下面结合附图对本发明的实施例进行说明,需要说明的是,在不冲突的情况下,本申请中的实施例和实施例中的特征可以相互任意组合。
如图1所示,本发明实施例提供一种识别文档代码的方法,包括:
S101、对所述目标文档满足预设格式字节位置进行定位;
S102、对所述满足预设格式字节的起始位置至结束位置进行模拟中央处理器CPU指令执行,获得执行结果;
S103、对所述执行结果进行特征提取,获得特征提取结果。
S104、根据所述特征提取结果,识别所述目标文档是否包含恶意代码。
本发明实施例的方法通过快速扫描文档中的字节,进行文件结构分析,定位可能产生恶意代码的位置,然后利用CPU指令执行的方式,把相关字节当成可执行指令执行。其中,本发明实施例中满足预设格式字节为包含漏洞的字节或者可能包含恶意代码的字节,如果能够执行,并且符合预定恶意特征,结束这一识别过程,否则跳过当前分析字节,继续分析。本发明实施例中进行中央处理器CPU指令执行分析指的是虚拟CPU执行指令。
本发明实施例的方法与相关技术中沙盒识别技术相比,能够在x86平台上通过模拟CPU指令,然后提取指令执行结果,成本更小,而且在不需要 额外设备,效率高,不易被恶意代码发现从而绕过。
本发明实施例中,在所述方法之前可以包括:
S100、对目标文档进行格式化解析,识别出所述目标文档的格式。
其中,步骤S100对目标文档进行格式化解析,识别出所述目标文档的格式包括:
利用预设模板识别所述目标文档的格式。
本发明实施例中针对目标文档的格式识别,如果所述目标文档的格式无法识别,将所述目标文档标记为陌生文档。
由于目前各类文档有自己的文件格式定义,如微软office系列、ADOBE PDF文件、ADOBE FLASH文件等,这些文件的格式是固定的,恶意代码一般保存在某个节或者某个字段中。本发明实施例利用预设的模块对已知文件格式进行分析,当识别出目标文档的格式时,可以在对应的固定的位置进行恶意代码定位,好处在于能够提高分析效率。而对于那些未知的文件格式(标记为陌生文档的目标文件),需要从头到尾进行扫描分析。
S101对所述目标文档的满足预设格式字节位置进行定位包括:根据预设模板识别出的所述目标文档的格式,在所述目标文档对应的位置进行恶意代码定位,可能发现多个恶意代码的情况,比如开始位置分别位于A1、A2……An、结束位置位于B1、B2……Bn,这时分别记录每段满足预设格式字节位置,分别按照本发明实施例的方法进行识别。
步骤S102对所述满足预设格式字节的起始位置至结束位置进行模拟中央处理器CPU指令执行包括:
从所述满足预设格式字节的起始位置开始,每次调整偏移量,逐次进行模拟CPU指令执行,获得执行结果,直到所述满足预设格式字节的结束位置。
本发明实施例首先对目标文件的格式进行分析,无论已知的格式还是未知的格式,都对所述目标文档的满足预设格式字节位置进行定位,确定一个或者多个恶意代码存在的位置,每段恶意代码都会确定一个位置作为恶意代码分析的起始地址,本发明实施例定位到这个起始地址,对后续每个文件字节进行分析,防止了漏过恶意代码的每个字节,因为,分析期间如果漏过一 个字节,后续分析出来的字节指令意义很可能完全不同,而将直接导致分析结果大相径庭。因此,本发明实施例从所述满足预设格式字节的起始位置开始,每次调整偏移量(依据字节长度确定),逐次进行CPU指令执行分析。
步骤S103对所述执行结果进行特征提取,获得特征提取结果包括:
逐一比较从所述执行结果提取出的特征是否符合预设的恶意代码特征,如果符合,则记录所述特征。
本发明实施例中的预设的恶意代码特征包括漏洞利用代码shellcode特征。
步骤S104根据所述特征提取结果给出分析结论包括:
对特征提取获得的每个特征提取结果按照预设标准进行评分,根据特征提取获得的所有特征提取结果的评分结果与预设阈值进行比较,获得所述目标文档的满足预设格式字节是否为恶意代码的分析结论。
本发明实施例中评分标准主要是依赖恶意代码的行为特征,如代码重定位,代码自解密等。每个行为特征都有一定分值,计算这个分值,达到预设阈值,则确定目标文档存在恶意代码,可以进行提示或者报警处理;如果没达到预设阈值,可以根据累计的分值,给出对应的风险等级,对于风险等级较高的可以限制某些操作或者处理。
如图3所示,本发明实施例还提供一种识别文档代码的的装置,包括:
定位模块11,设置为对所述目标文档满足预设格式的字节位置进行定位;
指令模块12,设置为对所述满足预设格式字节的起始位置至结束位置进行模拟中央处理器CPU指令执行,获得执行结果;
特征提取模块13,设置为对所述执行结果进行特征提取,获得特征提取结果;
分析模块14,设置为根据所述特征提取结果,识别所述目标文档是否包含恶意代码。
所述的装置还包括:格式化模块,设置为对所述目标文档进行格式化解析,识别出所述目标文档的格式。
所述格式化模块对目标文档进行格式化解析,识别出所述目标文档的格式是指:
利用预设模板识别所述目标文档的格式,如果所述目标文档的格式无法识别,将所述目标文档标记为陌生文档。
所述定位模块11对目标文档的满足预设格式字节位置进行定位是指:
根据预设模板识别出的所述目标文档的格式,在所述目标文档对应的位置进行恶意代码定位。
所述指令模块12对所述满足预设格式字节的起始位置至结束位置进行模拟中央处理器CPU指令执行是指:
从所述满足预设格式字节的起始位置开始,每次调整偏移量,逐次进行模拟CPU指令执行,获得执行结果,直到所述满足预设格式字节的结束位置。
所述特征提取模块13对所述执行结果进行特征提取,获得特征提取结果是指:
逐一比较从所述执行结果提取出的特征是否符合预设的恶意代码特征,如果符合,则记录所述特征。
所述分析模块14根据所述特征提取结果给出分析结论是指:
对特征提取获得的每个特征提取结果按照预设标准进行评分,根据特征提取获得的所有特征提取结果的评分结果与预设阈值进行比较,获得所述目标文档的满足预设格式字节是否为恶意代码的分析结论。
本发明实施例还提供一种识别文档代码的装置,包括存储器和处理器,所述存储器用于存储用于识别文档恶意代码的程序;所述用于识别文档恶意代码的程序在被所述处理器读取执行时,执行如下操作:
对所述目标文档满足预设格式的字节位置进行定位;
对所述满足预设格式字节的起始位置至结束位置进行模拟中央处理器CPU指令执行,获得执行结果;
对所述执行结果进行特征提取,获得特征提取结果;
根据所述特征提取结果,识别所述目标文档是否包含恶意代码。
实施例1
如图3所示,本发明实施例说明识别文档代码的任务的步骤:
110、对目标文档进行格式化解析,主要是利用一些预定模板识别该文档的格式,如果文档格式无法识别,将其标记为陌生文档;
120、在识别目标文档格式后,对文档可能产生的漏洞字节位置进行定位,一般存在于某个section(代码节)中,记录此时起始位置a和结束位置b;
130、利用改进的开源pyEmu框架对记录的位置a进行CPU指令执行分析,并根据执行结果进行特征提取,150、判断是否符合预设shellcode特征一旦符合预设shellcode特征,将记录此结果。如果发现执行过程中模拟CPU出现异常,将退出执行,140、调整记录的偏移量,继续使用CPU指令的方法进行分析,直至结束位置b;
160、给出分析结论。
实施例2
本发明实施例说明目标文档存在多个恶意代码时识别文档恶意代码的任务的步骤:
1.对目标文档进行格式化解析,利用预定模板识别该文档的格式,如果文档格式无法识别,将其标记为陌生文档;
2.在识别目标文档格式后,对文档的漏洞字节位置进行定位,开始位置分别位于A1、A2……An、结束位置位于B1、B2……Bn;
3.对于每段漏洞字节位置,分别利用改进的开源pyEmu框架对记录的开始位置进行CPU指令执行分析,并根据执行结果进行特征提取,一旦符合预设shellcode特征,将记录此结果,跳转至下一段落的恶意代码继续分析。如果在一段恶意代码中发现执行过程中模拟CPU出现异常,则退出该段恶意代码执行跳转至下一段落的恶意代码继续使用CPU指令的方法进行分析,直至所有恶意代码分析完毕;
4.给出分析结论。
实施例3
本实施例说明根据所述特征提取结果给出分析结论的过程:
本发明实施例为了防止恶意文档中的shellcode被静态特征扫描,其保存在文件中都是加密的,而shellcode在执行过程中会先进行解密,即执行一段解密指令,一旦模拟执行中发现此类解密后续字节行为,将会记a分,如常见代码decrypt:xor byte ptr[reg],al;dec ecx;jnz decrypt;
shellcode在执行过程中由于需要获取***API的地址进行调用,都需要进行代码自定位。一般是通过如下指令来实现:call next;next:pop ebp等指令,抽象成行为特征就是通过寄存器获取下条指令的地址,这种行为记b分;
其他的shellcode行为特征如:API地址定位需要TEB和PEB,敏感API调用(WinExec,VirtualProtect等),反HOOK API检测等,每个行为特征设定对应的分值;
累计分值,达到预设阈值,则确定目标文档存在恶意代码。
如果没达到预设阈值,可以根据累计的分值与第一数值、第二数值等比较,给出对应的风险等级:
当特征提取获得的所有特征提取结果的评分结果大于预置的第一数值时,确定所述恶意代码的风险等级为第一风险等级;
当特征提取获得的所有特征提取结果的评分结果小于或等于所述第一数值并且大于预置的第二数值时,确定所述恶意代码的风险等级为第二风险等级;
当特征提取获得的所有特征提取结果的评分结果小于或等于所述第二数值时,确定所述恶意代码的风险等级为第三风险等级;
对于第一风险等级的目标文档,可以限制下载或者只能下载标识及版本信息;对于第二风险等级的目标文档,可以限制安装或者提示风险;对于第三风险等级的目标文档,可以不做限制处理。
虽然本发明所揭示的实施方式如上,但其内容只是为了便于理解本发明的技术方案而采用的实施方式,并非用于限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭示的核心技术方案的前提下,可以在实施的形式和细节上做任何修改与变化,但本发明所限定的保护范围,仍须以所附的权利要求书限定的范围为准。