掌桥专利:专业的专利平台
掌桥专利
首页

一种恶意PDF文档检测方法

文献发布时间:2023-06-19 10:08:35


一种恶意PDF文档检测方法

技术领域

本发明涉及检测技术领域,尤其是一种恶意PDF文档检测方法。

背景技术

恶意PDF文档是指包含了恶意代码的PDF文档。当恶意PDF文档被打开时,包含于其中的恶意代码就会执行攻击行为——例如修改、窃取用户的敏感数据,控制用户的操作系统等。与传统的恶意代码相比,嵌入到PDF文档中的恶意代码攻击手法更加隐蔽,因此传统的反病毒软件难以对其进行有效的检测[1-3]。

早期使用的检测方法是一种通用的文档检测方法。通过将文档看作一个连续的字节序列,提取其连续的n个字节(n-gram)作为分析特征,对比正常恶意文档与正常文档在特征上的差别来检测恶意PDF文档。由于恶意PDF文档的攻击载荷是内嵌的JavaScript代码,直接从文档提取特征进行检测的准确率和效率都很低。而且,恶意PDF文档中内嵌的恶意JavaScript代码很多都进行了混淆处理,使得直接从全文档提取特征的检测方法几乎不再适用。

公开号为 CN105095756A的专利公开了一种可移植文档格式文档的检测方法和装置,该技术的特点是从训练PDF文档的文件结构中提取特征值,所述训练PDF文档包括包含攻击代码的恶意PDF文档;然后将所述特征值通过机器学习算法进行学习生成模型;通过所述检测模型预测待检测PDF文档是否为恶意PDF文档。该检测方法存在一定的缺陷,主要表现在:检测方法和装置只包含静态检测方法,如果恶意PDF文档内嵌的JavaScript代码经过混淆,那么直接从中提取特征不具备代表性,生成的检测模型检测效果也就不理想;而且利用机器学习的算法进行学习生成检测模型的过程需要一定量的恶意样本,如果样本量太小,学习生成的模型便不具备普适性;而大量样本的搜集本身存在一定的困难,大量样本的学习过程的收敛速度也很慢。

公开号为CN103294954A 的专利公开了一种基于频谱分析的复合文档恶意代码检测技术与系统,该检测技术将静态的复合文档二进制数据转换成相位谱;然后对相位谱的均匀度、相位值、频谱宽度等特征进行自动提取;接着设计对照试验,构造大量对照组,统计出一般性差异制定判定准则的方法;通过分析相位谱特征检测复合文档是否包含恶意代码。该方案存在的缺陷表现为:该专利技术方案是通过对整个文档的二进制数据进行频谱分析,没有单纯针对PDF文档,也没有针对文档中的恶意代码。这种方法虽然对几乎任何文档都适用,但是由于恶意PDF文档的恶意内容几乎都只存在于其内嵌的JavaScript代码,而与具体的文档内容无关,分析整个文档的频谱意义不大。而且,由于JavaScript代码混淆的存在,将对频谱分析的结果产生较为严重的干扰。

公开号为CN105117648A的专利公开了一种基于虚拟机的0day/恶意文档检测系统及方法,该检测系统包含文档执行模块、Ring3虚拟机模块、Shellcode检测模块、Exception检测模块、ROP检测模块、日志模块,能动态检测加载在Ring3虚拟机上的文档进程;首先,加载所需检测文档的进程徐行在Ring3虚拟机上;然后各模块进行实时检测,日志检测模块将检测结果保存到日志文件并判断该文档是否为恶意文档。该技术方案存在缺陷表现为:该检测系统实质上是对恶意PDF文档的一种动态检测,对于每个文档的检测都需要在虚拟机中完成下面一系列步骤:打开PDF文档;分析各个检测模块的结果;恢复虚拟机初始环境。这种检测方法的时间开销很大,几乎比静态检测所需的时间多一个数量级;而且需要搭建专门的虚拟机环境,成本较高,检测系统不易于集成。

公开号为CN104966019A的专利公开了一种启发式文档威胁检测方法及系统,该检测方法是通过对待检测文档进行结构解析,获取静态信息,利用所述静态信息判断待检测文档是否夹带敏感数据;若夹带敏感数据,则对敏感数据进行格式解析,进一步判定敏感数据的格式是否是安全文档可夹带数据格式;若是,则待检测文档为低风险文档,否则判定为高风险文档。该技术方案存在缺陷表现为:方法和系统是分析待检测文档的结构的静态信息,同时针对Office系列和PDF,通过分析文档是否包含敏感信息给出检测结论。对于PDF文档而言,如果文档中包含JavaScript代码,该系统即认为文档属于恶意文档,但是很大一部分日常使用中的PDF文档必须还有JavaScript代码才能正常工作(例如,采集个人信息的PDF表格,其中的JavaScript代码用于检测用户输入的有效性),这样的检测方法的误报率很高。

公开号为CN103310150A的专利公开了一种检测pdf漏洞的方法和装置,该方法包含静态步骤和动态步骤,静态检测步骤:对所述待检测PDF文件中满足预设可以要求的关键字段进行统计分析,如果统计分析结果指示所述待检测PDF文件为可疑文件,则执行动态检测步骤;动态检测步骤:判断所述待检测PDF文件中是否触发JavaScript执行的函数,如果是,则确定所述待检测PDF文件为恶意文件。该技术方案存在缺陷表现为:该方法和装置通过分析PDF文档结构的合法性和完整性来判定PDF文档是否存在漏洞,而并不是用于检测恶意PDF文档是否恶意。该方法没有针对文档中内嵌的JavaScript代码,而恶意PDF文档在结构上几乎都会做到完整与规范以便逃避检测,因此这种检测漏洞的方法对于检测PDF文档是否恶意是不适用的。

发明内容

本发明的目的针对现有技术存在的缺陷,提出一种动静态相结合的恶意PDF文档检测方法与装置,结合静态检测的高效率和动态检测能够检测出未知恶意PDF文档的优点,最大程度上保证了检测的准确率和效率,并且降低了误报率。

所述一种恶意PDF文档检测方法包括如下步骤:

步骤一:查询已知文件数据库并确认待检测PDF文档是否有检测记录,如有,直接输出检测结果并结束检测;

步骤二:如在已知文件数据库中未检测到待检测PDF文档的检测记录,提取待检测PDF文档中的恶意攻击载荷代码并作为静态检测和动态检测的输入;

步骤三:将所述恶意攻击载荷代码反混淆处理后输入YARA引擎并做特征匹配以进行静态检测;

步骤四:所述恶意攻击载荷代码放入SpiderMonkey引擎并取得所有String变量,以及将所述String变量输入Libemu引擎进行动态检测。

所述静态检测的具体步骤包括:

对输入的所述恶意攻击载荷代码进行反混淆处理;

将经过反混淆处理的恶意攻击载荷代码输入YARA引擎与静态特征库进行特征匹配;如果匹配上某些特征,判定该PDF文档属于恶意PDF文档;如果特征库中没有任何特征与待检测文档相匹配,将所述恶意攻击载荷代码作为动态检测的输入。

所述动态检测的具体步骤为:

将所述恶意攻击载荷代码放入SpiderMonkey引擎进行解释执行,监测并记录执行过程中产生的所有String变量,将所述String变量作为Libemu引擎的输入;

在Libemu引擎中,针对输入的String变量,检测其中是否包含Shellcode壳代码,如果包含Shellcode,判定其为恶意PDF文档;如果不包含Shellcode,判定其为非恶意PDF文档。

优选的,静态检测判定的恶意PDF文档存入YARA引擎的静态特征库以及更新入已知文件数据库。

提取待检测PDF文档中的恶意攻击载荷代码的步骤包括:

读取待检测的PDF文档;解析结构,根据交叉引用表和对象引用链提取所有PDF对象名;对所有PDF对象名进行归一化处理;进行目录字典检索,寻找活动字典的入口地址;对含有JavaScript代码的候选位置进行搜索,检测其数据类型;

如果其数据类型为“Rendition”或“JavaScript”,并且字典中包含有“JS”,则判定此字段便含有JavaScript代码,对JavaScript代码进行提取并形成所述恶意攻击载荷代码。

所述恶意攻击载荷代码进行反混淆处理的方法为:

遍历字符串s;

如果s中有字符“/*”,则删除s中以“/*”为起始点,以“*/”为终止点的字符串;

遍历字符串s;

如果s中有字符“+”,并且前一个字符为“””,则删除这三个字符;

检查s是否调用了编码的API,如果是,调用对应的解码的API;

将处理结果保存到新的文件中完成所述恶意攻击载荷代码的反混淆处理。

与现有技术相比,本发明的有益效果是:本发明提出的检测方法和装置不仅在静态检测部分针对代码混淆做了处理,提高了静态检测的准确率和可靠性;还结合了动态检测部分,可以检测出未知的恶意PDF文档;动态检测使用基于Libemu的仿真模拟法,相比使用虚拟机的方案速度更快,开销更小;动态检测的结果通过反馈可以进一步加强静态检测的效果。本发明实现简单,模块分离,易于系统集成。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明所述一种恶意PDF文档检测方法整体流程示意图;

图2为本发明所述提取待检测PDF文档中的恶意攻击载荷代码的流程示意图;

图3为本发明所述静态检测流程示意图;

图4为本发明所述恶意攻击载荷代码的反混淆处理流程示意图;

图5为本发明所述动态检测流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明的目的就是提出一种动静态结合的恶意PDF文档检测方法与装置,结合静态检测的高效率和动态检测能够检测出未知恶意PDF文档的优点。静态检测部分首先对待检测文档进行解析,提取出其中的JavaScript代码部分,针对混淆之后的代码进行反混淆处理,还原原始的JavaScript代码,然后根据内置的YARA引擎对代码特征进行匹配扫描。如果静态检测不能确定检测结果,再对其进行动态检测,使用之前提取的JavaScript代码进行解释执行,寻找字符串中存在的shellcode如果动态检测判定其为恶意PDF文档,将更新静态特征库,以便静态检测能够在下次检测到类似的恶意PDF文档时,直接给出检测结果。本方法综合了静态检测和动态检测的优点,最大程度上保证了检测的准确率和效率,并且降低了误报率。

如图1所示,一种恶意PDF文档检测方法包括如下步骤:

步骤一:查询已知文件数据库并确认待检测PDF文档是否有检测记录,如有,直接输出检测结果并结束检测;

步骤二:如在已知文件数据库中未检测到待检测PDF文档的检测记录,提取待检测PDF文档中的恶意攻击载荷代码并作为静态检测和动态检测的输入;

步骤三:将所述恶意攻击载荷代码反混淆处理后输入YARA引擎并做特征匹配以进行静态检测;

步骤四:所述恶意攻击载荷代码放入SpiderMonkey引擎并取得所有String变量,以及将所述String变量输入Libemu引擎进行动态检测。

如图3所示,所述静态检测的具体步骤包括:

对输入的所述恶意攻击载荷代码进行反混淆处理;

将经过反混淆处理的恶意攻击载荷代码输入YARA引擎与静态特征库进行特征匹配;如果匹配上某些特征,判定该PDF文档属于恶意PDF文档;如果特征库中没有任何特征与待检测文档相匹配,将所述恶意攻击载荷代码作为动态检测的输入。

如图5所示,所述动态检测的具体步骤为:

将所述恶意攻击载荷代码放入SpiderMonkey引擎进行解释执行,监测并记录执行过程中产生的所有String变量,将所述String变量作为Libemu引擎的输入;

在Libemu引擎中,针对输入的String变量,检测其中是否包含Shellcode壳代码,如果包含Shellcode,判定其为恶意PDF文档;如果不包含Shellcode,判定其为非恶意PDF文档。

优选的,静态检测判定的恶意PDF文档存入YARA引擎的静态特征库以及更新入已知文件数据库。

如图2所示,提取待检测PDF文档中的恶意攻击载荷代码的步骤包括:

读取待检测的PDF文档;解析结构,根据交叉引用表和对象引用链提取所有PDF对象名;对所有PDF对象名进行归一化处理;进行目录字典检索,寻找活动字典的入口地址;对含有JavaScript代码的候选位置进行搜索,检测其数据类型;

如果其数据类型为“Rendition”或“JavaScript”,并且字典中包含有“JS”,则判定此字段便含有JavaScript代码,对JavaScript代码进行提取并形成所述恶意攻击载荷代码。

如图4所示,所述恶意攻击载荷代码进行反混淆处理的方法为:

遍历字符串s;

如果s中有字符“/*”,则删除s中以“/*”为起始点,以“*/”为终止点的字符串;

遍历字符串s;

如果s中有字符“+”,并且前一个字符为“””,则删除这三个字符;

检查s是否调用了编码的API,如果是,调用对应的解码的API;

将处理结果保存到新的文件中完成所述恶意攻击载荷代码的反混淆处理。

本发明在检测恶意PDF文档时,综合了静态检测高准确率、高效率和动态检测可以检测未知恶意代码的优点,最大程度上保证了检测的效率和准确率。

由于攻击者在PDF文档中嵌入恶意JavaScript代码时,常常会对其进行混淆,直接从混淆之后的JavaScript代码中提取静态特征的效果不好。本发明在静态检测之前,首先对混淆过的JavaScript代码进行反混淆操作,从而还原原始的JavaScript代码,再从中提取特征进行静态检测,提高了静态检测的准确率。

对于未知的恶意PDF文档,静态检测往往显得力不从心,本发明所述的动态检测过程可以很好地弥补纯静态检测的这一缺点。而且将动态检测和静态检测相结合,通过动态检测的结果,对静态特征库和已知文件库进行反馈,可以进一步加强静态检测的效果。

与现有技术相比,本发明提出的检测方法和装置不仅在静态检测部分针对代码混淆做了处理,提高了静态检测的准确率和可靠性;还结合了动态检测部分,可以检测出未知的恶意PDF文档;动态检测使用基于Libemu的仿真模拟法,相比使用虚拟机的方案速度更快,开销更小;动态检测的结果通过反馈可以进一步加强静态检测的效果。本发明实现简单,模块分离,易于系统集成。

以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

相关技术
  • 一种恶意PDF文档检测方法、装置及电子设备
  • 一种基于主动学习的恶意PDF文档检测方法
技术分类

06120112436883