CN103310150A - 一种检测pdf漏洞的方法和装置 - Google Patents
一种检测pdf漏洞的方法和装置 Download PDFInfo
- Publication number
- CN103310150A CN103310150A CN201210065644XA CN201210065644A CN103310150A CN 103310150 A CN103310150 A CN 103310150A CN 201210065644X A CN201210065644X A CN 201210065644XA CN 201210065644 A CN201210065644 A CN 201210065644A CN 103310150 A CN103310150 A CN 103310150A
- Authority
- CN
- China
- Prior art keywords
- detected
- pdf document
- function
- critical field
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种检测PDF漏洞的方法和装置,其中方法包括:获取待检测PDF文件;静态检测步骤:对所述待检测PDF文件中满足预设可疑要求的关键字段进行统计分析,如果统计分析结果指示所述待检测PDF文件为可疑文件,则执行动态检测步骤;动态检测步骤:判断所述待检测PDF文件中是否包含触发JavaScript执行的函数,如果是,则确定所述待检测PDF文件为恶意文件。本发明针对PDF文档漏洞的特点,通过静态检测和动态检测的结合全面有效地实现PDF漏洞的检测。
Description
【技术领域】
本发明涉及计算机安全技术领域,特别涉及一种检测PDF漏洞的方法和装置。
【背景技术】
当前在网页挂马中,便携文件格式(PDF,Portable Document Format)的漏洞利用很广泛,处理PDF文件的方式让黑客执行程序代码,漏洞可能被黑客利用电子邮件、网络下载等方式传播病毒,例如把热门小说制作为PDF电子书,利用漏洞在其中植入病毒以专门攻击点击阅读PDF的用户电脑。根据Adobe提供的信息显示,黑客通过漏洞的攻击可能会导致目标***的崩溃,或者会让黑客能够暂时获得控制目标电脑的最高权限。
但是目前基于PDF漏洞的检测方法很少,由于PDF文件结构有其自身的独特性,现有的文件漏洞检测方法不能有效地检测PDF漏洞。
【发明内容】
有鉴于此,本发明提供了一种检测PDF漏洞的方法和装置,以解决现有文件漏洞检测方法不能有效地检测PDF漏洞的问题。
具体技术方案如下:
一种检测PDF漏洞的方法,该方法包括:
获取待检测PDF文件;
静态检测步骤:对所述待检测PDF文件中满足预设可疑要求的关键字段进行统计分析,如果统计分析结果指示所述待检测PDF文件为可疑文件,则执行动态检测步骤;
动态检测步骤:判断所述待检测PDF文件中是否包含触发JavaScript执行的函数,如果是,则确定所述待检测PDF文件为恶意文件。
根据本发明一优选实施例,所述满足预设可疑要求的关键字段包括:
没有配对出现的关键字段obj和endobj;
没有配对出现的关键字段stream和endstream;
存在关键字段JS或Javascript;
存在关键字段AA、OpenAction或URI。
根据本发明一优选实施例,所述统计分析结果指示所述待检测PDF文件为可疑文件为:
满足预设可疑要求的关键字段的统计次数达到预设的可疑次数阈值。
根据本发明一优选实施例,所述静态检测步骤还包括:
判断所述待检测PDF文件中是否存在关键字段xref或trailer,如果否,则确定所述待检测PDF文件为安全文件;或者,
判断关键字段page的值是否大于预设的安全页码值,如果是,确定所述待检测PDF文件为安全文件;或者,
判断关键字段Colors是否大于或等于预设的恶意色彩值,如果是,确定所述待检测PDF文件为恶意文件;否则,确定所述待检测PDF文件为安全文件;或者,
判断所述待检测PDF文件中是否存在可执行文件的标识,如果是,则确定所述待检测PDF文件为恶意文件。
根据本发明一优选实施例,所述触发JavaScript执行的函数包括:用于解码的unescape函数、用于返回由参数中ASCII值所表示字符组成的字符串的String.fromCharCode函数或用于计算字符串并执行其中javascript代码的eval函数。
根据本发明一优选实施例,所述动态检测步骤具体包括:
B1、判断所述待检测PDF文件中是否包含unescape函数、String.fromCharCode函数或eval函数,如果包含unescape函数或String.fromCharCode函数,则确定所述待检测PDF文件为恶意文件;如果包含eval函数,则继续执行步骤B2;
B2、将所述eval函数转化为alert函数并执行,分析执行结果中是否包含可疑内容,如果是,则确定所述待检测PDF文件为恶意文件。
根据本发明一优选实施例,步骤B2中的所述可疑内容包括:collectEmailInfo函数、util.printf函数、getlcon函数、spell.customDictionaryOpen函数、getAnnots函数、newPlayer函数、Doc.printSeps函数或可执行文件的标识。
根据本发明一优选实施例,在所述动态检测步骤中,判断所述待检测PDF文件中是否包含触发JavaScript执行的函数之前还包括:
B0、判断所述待检测PDF文件是否加密,如果是,解析所述待检测PDF文件的加密方式,调用对应的解密算法对所述待检测PDF文件进行解密。
根据本发明一优选实施例,判断所述待检测PDF文件是否加密具体包括:如果所述待检测PDF文件中包含关键字段encrypt,或者,所述待检测PDF文件所包含的对象中指示有加密方式,则确定所述待检测PDF文件被加密;
解析所述待检测PDF文件的加密方式具体为:解析所述待检测PDF文件所包含的对象中指示的加密方式。
一种检测PDF漏洞的装置,该装置包括:
文件获取单元,用于获取待检测PDF文件;
静态检测单元,用于对所述待检测PDF文件中满足预设可疑要求的关键字段进行统计分析,如果统计分析结果指示所述待检测PDF文件为可疑文件,则触发动态检测单元;
动态检测单元,用于受到触发后,判断所述待检测PDF文件中是否包含触发JavaScript执行的函数,如果是,则确定所述待检测PDF文件为恶意文件。
根据本发明一优选实施例,所述满足预设可疑要求的关键字段包括:
没有配对出现的关键字段obj和endobj;
没有配对出现的关键字段stream和endstream;
存在关键字段JS或Javascript;
存在关键字段AA、OpenAction或URI。
根据本发明一优选实施例,所述统计分析结果指示所述待检测PDF文件为可疑文件为:
满足预设可疑要求的关键字段的统计次数达到预设的可疑次数阈值。
根据本发明一优选实施例,所述静态检测单元还用于判断所述待检测PDF文件中是否存在关键字段xref或trailer,如果否,则确定所述待检测PDF文件为安全文件;或者,
判断关键字段page的值是否大于预设的安全页码值,如果是,确定所述待检测PDF文件为安全文件;或者,
还用于判断关键字段Colors是否大于或等于预设的恶意色彩值,如果是,确定所述待检测PDF文件为恶意文件;否则,确定所述待检测PDF文件为安全文件;或者,
判断所述待检测PDF文件中是否存在可执行文件的标识,如果是,则确定所述待检测PDF文件为恶意文件。
根据本发明一优选实施例,所述触发JavaScript执行的函数包括:用于解码的unescape函数、用于返回由参数中ASCII值所表示字符组成的字符串的String.fromCharCode函数或用于计算字符串并执行其中javascript代码的eval函数。
根据本发明一优选实施例,所述动态检测单元具体包括:
第一判断子单元,用于判断所述待检测PDF文件中是否包含unescape函数、String.fromCharCode函数或eval函数,如果包含unescape函数或String.fromCharCode函数,则确定所述待检测PDF文件为恶意文件;如果包含eval函数,则触发转换执行子单元;
转换执行子单元,用于受到触发后,将所述eval函数转化为alert函数并执行,分析执行结果中是否包含可疑内容,如果是,则确定所述待检测PDF文件为恶意文件。
根据本发明一优选实施例,所述可疑内容包括:collectEmailInfo函数、util.printf函数、getlcon函数、spell.customDictionaryOpen函数、getAnnots函数、newPlayer函数、Doc.printSeps函数或可执行文件的标识。
根据本发明一优选实施例,所述动态检测单元还包括:
解密处理子单元,用于判断所述待检测PDF文件是否加密,如果是,解析所述待检测PDF文件的加密方式,调用对应的解密算法对所述待检测PDF文件进行解密后提供给所述第一判断子单元。
根据本发明一优选实施例,所述解密处理子单元如果确定所述待检测PDF文件中包含关键字段encrypt,或者,所述待检测PDF文件所包含的对象中指示有加密方式,则确定所述待检测PDF文件被加密;以及解析所述待检测PDF文件所包含的对象中指示的加密方式。
由以上技术方案可以看出,本发明针对PDF文档漏洞的特点,通过静态检测和动态检测的结合全面的检测PDF漏洞,即首先通过对关键字段的统计分析确定出可疑的PDF文件,再进一步对可疑的PDF文件检测是否包含触发JavaScript执行的函数,从而有效地识别待检测PDF文档是否为恶意文档,即是否包含漏洞。
【附图说明】
图1为本发明实施例一提供的检测PDF漏洞的方法流程图;
图2为本发明实施例二所提供的静态检测过程的流程图;
图3为本发明实施例三提供的动态检测过程的流程图;
图4为本发明实施例四提供的检测PDF漏洞的装置结构图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
实施例一、
图1为本发明实施例一提供的检测PDF漏洞的方法流程图,如图1所示,该方法包括以下步骤:
步骤101:获取待检测PDF文件。
步骤102:执行静态检测:对待检测PDF文件中满足预设可疑要求的关键字段进行统计分析,如果统计分析结果指示该待检测PDF文件为安全文件,则输出检测结果,并结束检测流程;如果统计结果指示该待检测PDF文件为恶意文件,则输出检测结果,并结束检测流程;如果统计结果指示该待检测PDF文件为可疑文件,则继续执行步骤103和步骤104所述的动态检测。
静态检测的具体实现过程将在实施例二中详细描述。
步骤103:判断待检测PDF文件中是否包含用于解码的unescape函数、用于返回由参数中ASCII值所表示字符组成的字符串的String.fromCharCode函数或用于计算字符串并执行其中javascript代码的eval函数;如果包含unescape函数或String.fromCharCode函数,则确定该待检测PDF文件为恶意文件,输出检测结果;如果包含eval函数,则继续执行步骤104。
如果判断结果为否,也就是说不包含unescape函数、String.fromCharCode函数和eval函数,则可以输出该待检测PDF文件为可疑文件。
上述unescape函数、String.fromCharCode函数和eval函数均属于触发JavaScript执行的函数,除此之外还可以进一步包含其他能够触发JavaScript执行的函数,在本发明实施例中不再一一穷举。由于恶意的PFD文件可以通过JavaScript执行,即调用JavaScript来执行木马,因此,对于可疑PFD文件而言,一旦确定出包含触发JavaScript执行的函数就可以认为其为恶意文件,但为了进一步提高准确性,如果包含eval函数,则可以进一步执行以下步骤。
步骤104:将eval函数转化为alert函数并执行,分析上述执行结果中是否包含可疑内容,如果是,则确定该待检测PDF文件为恶意文件,即存在漏洞;否则输出该待检测PDF文件为可疑文件,可能存在漏洞。
上述步骤103和步骤104是对PDF文件的动态检测过程,详细实现过程将在实施例三中具体描述。
实施例二、
本实施例中详细描述对待检测PDF文件的静态检测过程。经过观察和分析,在PDF文件结构中填充畸形数据使得PDF文件结构不完整,是恶意PDF文件的其中一种特征,静态检测过程主要是针对这种特征进行的检测,这种特征主要体现在PDF文件的关键字段上。
图2为本发明实施例二所提供的静态检测过程的流程图,如图2所示,该过程可以具体包括以下步骤:
步骤201:对待检测PDF文件中的关键字段进行查找和解析。
步骤202:判断关键字段obj和endobj是否配对出现,如果是,则执行步骤203;否则,将可疑变量统计次数进行自加后,执行步骤203。
本发明实施例中涉及可疑变量统计次数用于记录PDF文件出现的可疑状况次数,表征了PDF文件的可疑状况。涉及的自加可以为将当前值加1。
步骤203:判断关键字段stream和endstream是否配对出现,如果是,则执行步骤204;否则,将可疑变量统计次数进行自加后,执行步骤204。
通常在安全的PDF文件中,obj和endobj、stream和endstream均是配对出现,如果不是配对出现,则说明PDF文件结构不完整,存在可疑状况,将可以变量统计次数进行自加。
步骤204:判断是否存在关键字段xref或trailer,如果否,确定该待检测PDF文件为安全文件,结束检测流程;如果是,执行步骤205。
xref字段表征交叉引用表,用于描述每个间接对象的编号、版本和绝对的文件位置。PDF文件的第一个索引必须从版本为65535的0号对象开始,xref后面的第一个数字是第一个间接对象的编号,第二个数字是交叉引用表的大小。
trailer字段声明了交叉引用表的地址,指明文件体的根对象(Catalog),还保存了加密等安全信息。
通常,只要一个PDF文件中不包含关键字段xref或trailer,则可以确定它不是恶意的PDF文件。
步骤205:判断是否存在关键字段JS或Javascript,如果是,将可疑变量统计次数进行自加后,执行步骤206;否则,执行步骤206。
如果存在关键字段JS或Javascript,则说明待检测PDF文件中嵌入了JavaScript代码,绝大多数恶意PDF文件嵌入了JavaScript代码,利用JavaScript代码的解析漏洞或者使用JavaScript代码来实现堆喷射(heapspray)。
步骤206:判断是否存在关键字段AA、OpenAction或URI,如果是,将可疑变量统计次数进行自加后,执行步骤207;否则,执行步骤208。
关键字段AA、OpenAction以及URI表明当前查看PDF文件时会有自动的动作随其执行,几乎所有嵌入JavaScript代码的恶意PDF文件都有自动执行的动作,如果一个PDF文件包含AA、OpenAction或URI字段,又含有JavaScript代码,则很有可能是恶意文件。
步骤207:判断当前的可疑变量统计次数是否达到预设的可疑次数阈值,如果是,则确定该待检测PDF文件为可疑文件,对该待检测PDF文件继续执行动态检测步骤;否则,确定该待检测PDF文件为安全文件,结束检测流程。
在此可以通过实际的检测准确度需求设置可疑次数阈值。除此之外,还可以进一步设置一个恶意次数阈值,如果当前的可疑变量统计次数达到预设的恶意次数阈值,则可以直接确定该待检测PDF文件为恶意文件。
步骤208:判断关键字段page的值是否大于预设的安全页码值,如果是,确定待检测PDF文件为安全文件,结束检测流程;否则,执行步骤209。
通常恶意PDF文件的页数不会太多,如果超过了预设的安全页码值,可以认为该待检测PDF文件为安全文件。该安全页码值可以采用经验值,例如取10。
步骤209:判断关键字段Colors是否大于或等于预设的恶意色彩值,如果是,确定该待检测PDF文件为恶意文件;否则,确定待检测PDF文件为安全文件,结束检测流程。
在本步骤实施例中恶意色彩值的设置可以根据PDF漏洞类型进行设置,例如,当恶意色彩值为1073741806时,对应CVE-2009-3459漏洞。
需要说明的是,上述对关键字段的判断步骤并没有限定的先后顺序,可以以任意的顺序执行,本发明实施例中所示的仅为其中一种实现方式。
上述步骤实际上是检查待检测PDF文件的各个对象以及对象之间是否符合PDF文件格式规范,并综合上述各关键字段分析待检测PDF文件是否可能为恶意文件,即可疑文件。上述静态检测技术虽然对PDF文件的检测准确率还不错,但从静态检测技术中很多判断步骤并不能绝对性的肯定当前PDF文件是安全的还是恶意的,特别是分析一些经过混淆技术或者特殊处理的PDF文件,因此在本发明中采用了将静态检测和动态检测相结合的检测技术,下面通过实施例三对动态检测技术进行详细描述。
实施例三、
图3为本发明实施例三提供的动态检测过程的流程图,如图3所示,该过程可以具体包括以下步骤:
步骤301:根据待检测PDF文件中的关键字段encrypt判断该PDF文件是否加密,如果是,执行步骤302;否则执行步骤303。
关键字段encrypt指明PDF文件有数字水印或者是被加密过的,除了通过扫描关键字段encrypt的方式来判断PDF是否加密之外,也可以通过某些对象中的指示来判断,例如在某些对象中通过ASCII码指示出了加密方式,则说明该待检测PDF文件为加密文件,并可以在下一步骤中进一步解析该ASCII码所指示的加密方式。
步骤302:解析该待检测PDF文件的加密方式,调用对应的解密算法对待检测PDF文件进行解密。
PDF文件的加密方式可能是一种,也可能是多种加密算法一起使用,例如在不同数据块中使用不同的加密算法。在此需要调用相应的解密算法还原出明文流中无法看到的代码。
步骤303:判断待检测PDF文件中是否包含unescape函数或String.fromCharCode函数;如果是,确定待检测PDF文件为恶意文件,输出检测结果,结束检测流程;否则,执行步骤304。
经观察分析,包含恶意行为的PDF文件可能使用unescape函数或String.fromCharCode函数转为JavaScript执行,因此,如果检测到unescape函数或String.fromCharCode函数,则可以进一步确定可疑的PDF文件为恶意文件。
步骤304:判断待检测PDF文件中是否包含eval函数,如果是,执行步骤305;否则,确定该待检测PDF文件为可疑PDF文件,输出检测结果,结束检测流程。
步骤305:将eval函数转换为alert函数并执行,分析执行结果中是否包含可疑内容,如果是,则确定该待检测PDF文件为恶意文件,输出检测结果;否则,确定该待检测PDF文件为可疑文件,输出检测结果。
eval函数用于计算字符串,并执行其中的JavaScript,恶意PDF文件可以通过eval函数执行的方式躲避检测,因此,如果检测出待检测PDF文件包含eval函数,则可以通过转化为alert函数并执行,分析执行结果来进一步分析是否为恶意文件。
alert函数是JavaScript脚本语言中窗口对象的一个常用方法,用于通过执行相应的操作弹出对话框的语言,该对话框用于对用户提示信息。
在执行alert函数时,会弹出对话框,分析对话框的信息中是否包含可疑内容,其中可疑内容包括但不限于:collectEmailInfo函数(对应CVE-2007-5659漏洞)、util.printf函数(对应CVE-2008-2992漏洞)、getlcon函数(对应CVE-2009-0927漏洞)、spell.customDictionaryOpen函数(对应CVE-2009-1493漏洞)、getAnnots函数(对应CVE-2009-1492漏洞)、newPlayer函数(对应CVE-2009-4324漏洞)或Doc.printSeps函数(对应CVE-2010-4091漏洞),另外,如果对话框的信息中包含EXE、BAT、cmd或com等可执行文件的标识,例如包含“.EXE”、“.BAT”、“.cmd”或“.com”,则也可以认为该待检测PDF文件为恶意文件。
另外,需要说明的是,如果在静态检测中检测出待检测PDF文件包含EXE、BAT、cmd或com等可执行文件的标识,也可以直接确定该待检测PDF文件为恶意文件。
通过执行alert函数的方式,即便对话框的信息中不包含上述可疑内容,也可以将该待检测PDF文件中的代码用意现出原形,以便进行进一步解析。例如,如果对话框的信息中不包含以上所列的函数,但其中包含一些莫名其妙的链接,则可以将该链接进行进一步的解析,以确定是否包含木马。
以上是对本发明所提供方法进行的详细描述,下面通过实施例四对本发明所提供的装置进行详细描述。
实施例四、
图4为本发明实施例四提供的装置结构图,如图4所示,该装置包括:文件获取单元400、静态检测单元410和动态检测单元420。
文件获取单元400,用于获取待检测PDF文件。
静态检测单元410,用于对待检测PDF文件中满足预设可疑要求的关键字段进行统计分析,如果统计分析结果指示待检测PDF文件为可疑文件,则触发动态检测单元420。
动态检测单元420,用于受到触发后,判断待检测PDF文件中是否包含触发JavaScript执行的函数,如果是,则确定待检测PDF文件为恶意文件。
其中,静态检测单元410统计分析的满足预设可疑要求的关键字段可以包括但不限于:
没有配对出现的关键字段obj和endobj;
没有配对出现的关键字段stream和endstream;
存在关键字段JS或Javascript;
存在关键字段AA、OpenAction或URI。
此时,如果统计得到的满足预设可疑要求的关键字段的统计次数达到预设的可疑次数阈值,则确定待检测PDF文件为可疑文件。此处,对于满足预设可疑要求的关键字段的统计次数可疑通过对可以变量统计次数进行自加的方式实现,即每扫描到满足预设可疑要求的关键字段,则将变量统计次数加1,最终依据变量统计次数确定是否满足可疑次数阈值。在此可以通过实际的检测准确度需求设置可疑次数阈值。除此之外,还可以进一步设置一个恶意次数阈值,如果当前的可疑变量统计次数达到预设的恶意次数阈值,则可以直接确定该待检测PDF文件为恶意文件。
除了上述关键字段之外,静态检测单元410还判断所述待检测PDF文件中是否存在关键字段xref或trailer,如果否,则确定待检测PDF文件为安全文件。
还可以判断关键字段page的值是否大于预设的安全页码值,如果是,确定待检测PDF文件为安全文件。该安全页码值可以采用经验值,例如取10。
另外,静态检测单元410还可以判断关键字段Colors是否大于或等于预设的恶意色彩值,如果是,确定待检测PDF文件为恶意文件;否则,确定待检测PDF文件为安全文件。恶意色彩值的设置可以根据PDF漏洞类型进行设置,例如,当恶意色彩值为224时,对应CVE-2009-3459漏洞。
还可以判断待检测PDF文件中是否存在可执行文件的标识,如果是,则确定待检测PDF文件为恶意文件。其中可执行文件可以包括但不限于:EXE、BAT、cmd或com等格式的文件。
需要说明的是,对上述关键字段的统计分析和判断处理没有固定的先后顺序,具体实施的实例可以参见实施例二中所示。
动态检测单元420在动态检测过程中,采用的触发JavaScript执行的函数包括但不限于:用于解码的unescape函数、用于返回由参数中ASCII值所表示字符组成的字符串的String.fromCharCode函数或用于计算字符串并执行其中Javascript代码的eval函数。
具体地,动态检测单元420可以包括:第一判断子单元421和转换执行子单元422。
第一判断子单元421,用于判断待检测PDF文件中是否包含unescape函数、String.fromCharCode函数或eval函数,如果包含unescape函数或String.fromCharCode函数,则确定待检测PDF文件为恶意文件;如果包含eval函数,则触发转换执行子单元422。
转换执行子单元422,用于受到触发后,将eval函数转化为alert函数并执行,分析执行结果中是否包含可疑内容,如果是,则确定待检测PDF文件为恶意文件。
其中涉及的可疑内容可以包括但不限于:collectEmailInfo函数、util.printf函数、getlcon函数、spell.customDictionaryOpen函数、getAnnots函数、newPlayer函数、Doc.printSeps函数或可执行文件的标识。其中可执行文件可以包括但不限于:EXE、BAT、cmd或com等格式的文件。
除此之外,对于某些恶意PDF文件会采用加密的方式,针对此,动态检测单元420还可以包括:
解密处理子单元423,用于判断待检测PDF文件是否加密,如果是,解析待检测PDF文件的加密方式,调用对应的解密算法对待检测PDF文件进行解密后提供给第一判断子单元421。如果没有加密,则直接将待检测PDF文件提供给第一判断子单元421。
其中,解密处理子单元423如果确定待检测PDF文件中包含关键字段encrypt,或者,待检测PDF文件所包含的对象中指示有加密方式,则确定待检测PDF文件被加密。通过解析待检测PDF文件所包含的对象中指示的加密方式,调用对应的解密算法。
本实施例中所示的装置通常以客户端的形式实现,当然也不排除用本发明所示方法和装置实现的其他形式。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (18)
1.一种检测PDF漏洞的方法,其特征在于,该方法包括:
获取待检测PDF文件;
静态检测步骤:对所述待检测PDF文件中满足预设可疑要求的关键字段进行统计分析,如果统计分析结果指示所述待检测PDF文件为可疑文件,则执行动态检测步骤;
动态检测步骤:判断所述待检测PDF文件中是否包含触发JavaScript执行的函数,如果是,则确定所述待检测PDF文件为恶意文件。
2.根据权利要求1所述的方法,其特征在于,所述满足预设可疑要求的关键字段包括以下所列的至少一种:
没有配对出现的关键字段obj和endobj;
没有配对出现的关键字段stream和endstream;
存在关键字段JS或Javascript;
存在关键字段AA、OpenAction或URI。
3.根据权利要求1或2所述的方法,其特征在于,所述统计分析结果指示所述待检测PDF文件为可疑文件为:
满足预设可疑要求的关键字段的统计次数达到预设的可疑次数阈值。
4.根据权利要求1或2所述的方法,其特征在于,所述静态检测步骤还包括:
判断所述待检测PDF文件中是否存在关键字段xref或trailer,如果否,则确定所述待检测PDF文件为安全文件;或者,
判断关键字段page的值是否大于预设的安全页码值,如果是,确定所述待检测PDF文件为安全文件;或者,
判断关键字段Colors是否大于或等于预设的恶意色彩值,如果是,确定所述待检测PDF文件为恶意文件;否则,确定所述待检测PDF文件为安全文件;或者,
判断所述待检测PDF文件中是否存在可执行文件的标识,如果是,则确定所述待检测PDF文件为恶意文件。
5.根据权利要求1所述的方法,其特征在于,所述触发JavaScript执行的函数包括:用于解码的unescape函数、用于返回由参数中ASCII值所表示字符组成的字符串的String.fromCharCode函数或用于计算字符串并执行其中javascript代码的eval函数。
6.根据权利要求5所述的方法,其特征在于,所述动态检测步骤具体包括:
B1、判断所述待检测PDF文件中是否包含unescape函数、String.fromCharCode函数或eval函数,如果包含unescape函数或String.fromCharCode函数,则确定所述待检测PDF文件为恶意文件;如果包含eval函数,则继续执行步骤B2;
B2、将所述eval函数转化为alert函数并执行,分析执行结果中是否包含可疑内容,如果是,则确定所述待检测PDF文件为恶意文件。
7.根据权利要求6所述的方法,其特征在于,步骤B2中的所述可疑内容包括:collectEmailInfo函数、util.printf函数、getlcon函数、spell.customDictionaryOpen函数、getAnnots函数、newPlayer函数、Doc.printSeps函数或可执行文件的标识。
8.根据权利要求1或5所述的方法,其特征在于,在所述动态检测步骤中,判断所述待检测PDF文件中是否包含触发JavaScript执行的函数之前还包括:
B0、判断所述待检测PDF文件是否加密,如果是,解析所述待检测PDF文件的加密方式,调用对应的解密算法对所述待检测PDF文件进行解密。
9.根据权利要求8所述的方法,其特征在于,判断所述待检测PDF文件是否加密具体包括:如果所述待检测PDF文件中包含关键字段encrypt,或者,所述待检测PDF文件所包含的对象中指示有加密方式,则确定所述待检测PDF文件被加密;
解析所述待检测PDF文件的加密方式具体为:解析所述待检测PDF文件所包含的对象中指示的加密方式。
10.一种检测PDF漏洞的装置,其特征在于,该装置包括:
文件获取单元,用于获取待检测PDF文件;
静态检测单元,用于对所述待检测PDF文件中满足预设可疑要求的关键字段进行统计分析,如果统计分析结果指示所述待检测PDF文件为可疑文件,则触发动态检测单元;
动态检测单元,用于受到触发后,判断所述待检测PDF文件中是否包含触发JavaScript执行的函数,如果是,则确定所述待检测PDF文件为恶意文件。
11.根据权利要求10所述的装置,其特征在于,所述满足预设可疑要求的关键字段包括以下所列的至少一种:
没有配对出现的关键字段obj和endobj;
没有配对出现的关键字段stream和endstream;
存在关键字段JS或Javascript;
存在关键字段AA、OpenAction或URI。
12.根据权利要求10或11所述的装置,其特征在于,所述统计分析结果指示所述待检测PDF文件为可疑文件为:
满足预设可疑要求的关键字段的统计次数达到预设的可疑次数阈值。
13.根据权利要求10或11所述的装置,其特征在于,所述静态检测单元还用于判断所述待检测PDF文件中是否存在关键字段xref或trailer,如果否,则确定所述待检测PDF文件为安全文件;或者,
判断关键字段page的值是否大于预设的安全页码值,如果是,确定所述待检测PDF文件为安全文件;或者,
还用于判断关键字段Colors是否大于或等于预设的恶意色彩值,如果是,确定所述待检测PDF文件为恶意文件;否则,确定所述待检测PDF文件为安全文件;或者,
判断所述待检测PDF文件中是否存在可执行文件的标识,如果是,则确定所述待检测PDF文件为恶意文件。
14.根据权利要求10所述的装置,其特征在于,所述触发JavaScript执行的函数包括:用于解码的unescape函数、用于返回由参数中ASCII值所表示字符组成的字符串的String.fromCharCode函数或用于计算字符串并执行其中javascript代码的eval函数。
15.根据权利要求14所述的装置,其特征在于,所述动态检测单元具体包括:
第一判断子单元,用于判断所述待检测PDF文件中是否包含unescape函数、String.fromCharCode函数或eval函数,如果包含unescape函数或String.fromCharCode函数,则确定所述待检测PDF文件为恶意文件;如果包含eval函数,则触发转换执行子单元;
转换执行子单元,用于受到触发后,将所述eval函数转化为alert函数并执行,分析执行结果中是否包含可疑内容,如果是,则确定所述待检测PDF文件为恶意文件。
16.根据权利要求15所述的装置,其特征在于,所述可疑内容包括:collectEmailInfo函数、util.printf函数、getlcon函数、spell.customDictionaryOpen函数、getAnnots函数、newPlayer函数、Doc.printSeps函数或可执行文件的标识。
17.根据权利要求15所述的装置,其特征在于,所述动态检测单元还包括:
解密处理子单元,用于判断所述待检测PDF文件是否加密,如果是,解析所述待检测PDF文件的加密方式,调用对应的解密算法对所述待检测PDF文件进行解密后提供给所述第一判断子单元。
18.根据权利要求17所述的装置,其特征在于,所述解密处理子单元如果确定所述待检测PDF文件中包含关键字段encrypt,或者,所述待检测PDF文件所包含的对象中指示有加密方式,则确定所述待检测PDF文件被加密;以及解析所述待检测PDF文件所包含的对象中指示的加密方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210065644XA CN103310150A (zh) | 2012-03-13 | 2012-03-13 | 一种检测pdf漏洞的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210065644XA CN103310150A (zh) | 2012-03-13 | 2012-03-13 | 一种检测pdf漏洞的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103310150A true CN103310150A (zh) | 2013-09-18 |
Family
ID=49135356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210065644XA Pending CN103310150A (zh) | 2012-03-13 | 2012-03-13 | 一种检测pdf漏洞的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103310150A (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239801A (zh) * | 2014-09-28 | 2014-12-24 | 北京奇虎科技有限公司 | 0day漏洞的识别方法以及装置 |
CN104239800A (zh) * | 2014-09-28 | 2014-12-24 | 北京奇虎科技有限公司 | Pdf中触发漏洞威胁的检测方法及装置 |
CN104239796A (zh) * | 2014-09-28 | 2014-12-24 | 北京奇虎科技有限公司 | 0day漏洞的识别方法以及装置 |
CN104298923A (zh) * | 2014-09-28 | 2015-01-21 | 北京奇虎科技有限公司 | 漏洞类型识别方法以及装置 |
CN104462966A (zh) * | 2014-11-28 | 2015-03-25 | 北京奇虎科技有限公司 | Pdf中触发漏洞威胁的检测方法及装置 |
CN104462986A (zh) * | 2014-11-28 | 2015-03-25 | 北京奇虎科技有限公司 | Pdf中触发漏洞威胁的检测方法及装置 |
CN104966019A (zh) * | 2014-06-16 | 2015-10-07 | 哈尔滨安天科技股份有限公司 | 一种启发式文档威胁检测方法及*** |
CN105095756A (zh) * | 2015-07-06 | 2015-11-25 | 北京金山安全软件有限公司 | 可移植文档格式文档的检测方法和装置 |
CN105868630A (zh) * | 2016-03-24 | 2016-08-17 | 中国科学院信息工程研究所 | 恶意pdf文档检测方法 |
CN106446686A (zh) * | 2016-09-30 | 2017-02-22 | 北京奇虎科技有限公司 | 恶意文档的检测方法及装置 |
CN106650451A (zh) * | 2016-12-30 | 2017-05-10 | 北京启明星辰信息安全技术有限公司 | 一种检测方法和装置 |
CN107292168A (zh) * | 2016-03-30 | 2017-10-24 | 阿里巴巴集团控股有限公司 | 检测程序代码的方法及装置、服务器 |
CN108875374A (zh) * | 2018-04-13 | 2018-11-23 | 中国科学院信息工程研究所 | 基于文档节点类型的恶意pdf检测方法及装置 |
CN108985064A (zh) * | 2018-07-16 | 2018-12-11 | 中国人民解放军战略支援部队信息工程大学 | 一种识别恶意文档的方法及装置 |
CN109194609A (zh) * | 2018-07-20 | 2019-01-11 | 西安四叶草信息技术有限公司 | 一种检测漏洞文件的方法及装置 |
CN109327451A (zh) * | 2018-10-30 | 2019-02-12 | 深信服科技股份有限公司 | 一种防御文件上传验证绕过的方法、***、装置及介质 |
CN109408810A (zh) * | 2018-09-28 | 2019-03-01 | 东巽科技(北京)有限公司 | 一种恶意pdf文档检测方法及装置 |
CN109948123A (zh) * | 2018-11-27 | 2019-06-28 | 阿里巴巴集团控股有限公司 | 一种图像合并方法及装置 |
CN112231701A (zh) * | 2020-09-29 | 2021-01-15 | 广州威尔森信息科技有限公司 | Pdf文件处理方法及装置 |
CN113536300A (zh) * | 2021-07-12 | 2021-10-22 | 杭州安恒信息技术股份有限公司 | 一种pdf文件信任过滤及分析方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826139A (zh) * | 2009-12-30 | 2010-09-08 | 厦门市美亚柏科信息股份有限公司 | 一种非可执行文件挂马检测方法及其装置 |
US20100333203A1 (en) * | 2009-06-25 | 2010-12-30 | Check Point Software Technologies, Ltd. | Methods for detecting malicious programs using a multilayered heuristics approach |
US20110247072A1 (en) * | 2008-11-03 | 2011-10-06 | Stuart Gresley Staniford | Systems and Methods for Detecting Malicious PDF Network Content |
US20110307955A1 (en) * | 2010-06-11 | 2011-12-15 | M86 Security, Inc. | System and method for detecting malicious content |
-
2012
- 2012-03-13 CN CN201210065644XA patent/CN103310150A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110247072A1 (en) * | 2008-11-03 | 2011-10-06 | Stuart Gresley Staniford | Systems and Methods for Detecting Malicious PDF Network Content |
US20100333203A1 (en) * | 2009-06-25 | 2010-12-30 | Check Point Software Technologies, Ltd. | Methods for detecting malicious programs using a multilayered heuristics approach |
CN101826139A (zh) * | 2009-12-30 | 2010-09-08 | 厦门市美亚柏科信息股份有限公司 | 一种非可执行文件挂马检测方法及其装置 |
US20110307955A1 (en) * | 2010-06-11 | 2011-12-15 | M86 Security, Inc. | System and method for detecting malicious content |
Non-Patent Citations (1)
Title |
---|
CRYIN: "恶意PDF文件检测思路", 《HTTP://WWW.2CTO.COM/ARTICLE/201012/79332.HTML》, 2 December 2010 (2010-12-02), pages 2 - 5 * |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104966019B (zh) * | 2014-06-16 | 2017-12-22 | 哈尔滨安天科技股份有限公司 | 一种启发式文档威胁检测方法及*** |
CN104966019A (zh) * | 2014-06-16 | 2015-10-07 | 哈尔滨安天科技股份有限公司 | 一种启发式文档威胁检测方法及*** |
CN104298923A (zh) * | 2014-09-28 | 2015-01-21 | 北京奇虎科技有限公司 | 漏洞类型识别方法以及装置 |
CN104239796A (zh) * | 2014-09-28 | 2014-12-24 | 北京奇虎科技有限公司 | 0day漏洞的识别方法以及装置 |
CN104239800A (zh) * | 2014-09-28 | 2014-12-24 | 北京奇虎科技有限公司 | Pdf中触发漏洞威胁的检测方法及装置 |
CN104239801A (zh) * | 2014-09-28 | 2014-12-24 | 北京奇虎科技有限公司 | 0day漏洞的识别方法以及装置 |
CN104239796B (zh) * | 2014-09-28 | 2017-04-19 | 北京奇虎科技有限公司 | 0day漏洞的识别方法以及装置 |
CN104298923B (zh) * | 2014-09-28 | 2018-01-02 | 北京奇虎科技有限公司 | 漏洞类型识别方法以及装置 |
CN104239800B (zh) * | 2014-09-28 | 2017-10-13 | 北京奇虎科技有限公司 | Pdf中触发漏洞威胁的检测方法及装置 |
CN104462966A (zh) * | 2014-11-28 | 2015-03-25 | 北京奇虎科技有限公司 | Pdf中触发漏洞威胁的检测方法及装置 |
CN104462986A (zh) * | 2014-11-28 | 2015-03-25 | 北京奇虎科技有限公司 | Pdf中触发漏洞威胁的检测方法及装置 |
CN104462986B (zh) * | 2014-11-28 | 2019-02-01 | 北京奇虎科技有限公司 | Pdf中触发漏洞威胁的检测方法及装置 |
CN104462966B (zh) * | 2014-11-28 | 2018-01-02 | 北京奇虎科技有限公司 | Pdf中触发漏洞威胁的检测方法及装置 |
CN105095756A (zh) * | 2015-07-06 | 2015-11-25 | 北京金山安全软件有限公司 | 可移植文档格式文档的检测方法和装置 |
CN105868630A (zh) * | 2016-03-24 | 2016-08-17 | 中国科学院信息工程研究所 | 恶意pdf文档检测方法 |
CN107292168A (zh) * | 2016-03-30 | 2017-10-24 | 阿里巴巴集团控股有限公司 | 检测程序代码的方法及装置、服务器 |
CN106446686A (zh) * | 2016-09-30 | 2017-02-22 | 北京奇虎科技有限公司 | 恶意文档的检测方法及装置 |
CN106446686B (zh) * | 2016-09-30 | 2020-10-20 | 北京奇虎科技有限公司 | 恶意文档的检测方法及装置 |
CN106650451A (zh) * | 2016-12-30 | 2017-05-10 | 北京启明星辰信息安全技术有限公司 | 一种检测方法和装置 |
CN108875374B (zh) * | 2018-04-13 | 2020-09-25 | 中国科学院信息工程研究所 | 基于文档节点类型的恶意pdf检测方法及装置 |
CN108875374A (zh) * | 2018-04-13 | 2018-11-23 | 中国科学院信息工程研究所 | 基于文档节点类型的恶意pdf检测方法及装置 |
CN108985064A (zh) * | 2018-07-16 | 2018-12-11 | 中国人民解放军战略支援部队信息工程大学 | 一种识别恶意文档的方法及装置 |
CN108985064B (zh) * | 2018-07-16 | 2023-10-20 | 中国人民解放军战略支援部队信息工程大学 | 一种识别恶意文档的方法及装置 |
CN109194609A (zh) * | 2018-07-20 | 2019-01-11 | 西安四叶草信息技术有限公司 | 一种检测漏洞文件的方法及装置 |
CN109408810A (zh) * | 2018-09-28 | 2019-03-01 | 东巽科技(北京)有限公司 | 一种恶意pdf文档检测方法及装置 |
CN109327451A (zh) * | 2018-10-30 | 2019-02-12 | 深信服科技股份有限公司 | 一种防御文件上传验证绕过的方法、***、装置及介质 |
CN109948123A (zh) * | 2018-11-27 | 2019-06-28 | 阿里巴巴集团控股有限公司 | 一种图像合并方法及装置 |
CN109948123B (zh) * | 2018-11-27 | 2023-06-02 | 创新先进技术有限公司 | 一种图像合并方法及装置 |
CN112231701A (zh) * | 2020-09-29 | 2021-01-15 | 广州威尔森信息科技有限公司 | Pdf文件处理方法及装置 |
CN113536300A (zh) * | 2021-07-12 | 2021-10-22 | 杭州安恒信息技术股份有限公司 | 一种pdf文件信任过滤及分析方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103310150A (zh) | 一种检测pdf漏洞的方法和装置 | |
Stolfo et al. | Towards stealthy malware detection | |
US10924502B2 (en) | Network security using inflated files for anomaly detection | |
US9836612B2 (en) | Protecting data | |
KR101083311B1 (ko) | 악성 스크립트 분석 시스템 및 그를 이용한 악성 스크립트 분석 방법 | |
US8220048B2 (en) | Network intrusion detector with combined protocol analyses, normalization and matching | |
CN106961419A (zh) | WebShell检测方法、装置及*** | |
US8712049B2 (en) | System for implementing dynamic pseudorandom keyboard remapping | |
US8712050B2 (en) | Method for implementing dynamic pseudorandom keyboard remapping | |
CN104243474B (zh) | 电子设备真伪验证方法及装置 | |
Stolfo et al. | Fileprint analysis for malware detection | |
CN108075888B (zh) | 动态url生成方法及装置、存储介质、电子设备 | |
WO2020199603A1 (zh) | 服务器漏洞检测方法、装置、设备和存储介质 | |
CN106919811A (zh) | 文件检测方法和装置 | |
US8825728B2 (en) | Entering confidential information on an untrusted machine | |
CN112131564A (zh) | 加密数据通信方法、装置、设备以及介质 | |
US9389839B2 (en) | Safe code for signature updates in an intrusion prevention system | |
CN114218561A (zh) | 一种弱口令检测方法、终端设备及存储介质 | |
CN105809494A (zh) | ***生成及验证方法及*** | |
US20160210474A1 (en) | Data processing apparatus, data processing method, and program | |
CN115883078A (zh) | 文件加密方法、文件解密方法、装置、设备及存储介质 | |
CN112910920A (zh) | 恶意通信检测方法、***、存储介质和电子设备 | |
Chapman | {SAD}{THUG}: Structural Anomaly Detection for Transmissions of High-value Information Using Graphics | |
CN109981669A (zh) | 应用于服务器的数据安全方法及*** | |
CN110417743B (zh) | 一种加密压缩包分析方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130918 |