logo资料库

基于混合特征的恶意PDF文档检测.pdf

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
14-180055-\fØ
第 40 卷第 2 期 2019 年 2 月 通 信 学 报 Journal on Communications Vol.40 No.2 February 2019 基于混合特征的恶意 PDF 文档检测 杜学绘,林杨东,孙奕 (解放军战略支援部队信息工程大学河南省信息安全重点实验室,河南 郑州 450001) 摘 要:针对现有恶意 PDF 文档在检测方案存在特征顽健性差、易被逃避检测等问题,提出了一种基于混合特征 的恶意 PDF 文档检测方法,采用动静态混合分析技术从文档中提取出其常规信息、结构信息以及 API 调用信息, 并基于 K-means 算法设计了特征提取方法,聚合出表征文档安全性的核心混合特征,从而提高了特征的顽健性。 在此基础上,利用随机森林算法构建分类器并设计实验,对所提方案的检测性能以及抵抗模拟攻击的能力进行了 探讨。 关键词:恶意 PDF 文档;混合特征;机器学习;检测 中图分类号:TP393 文献标识码:A doi: 10.11959/j.issn.1000−436x.2019028 Malicious PDF document detection based on mixed feature Henan Provincial Key Laboratory of Information Security, Information Engineering University, Zhengzhou 450001, China DU Xuehui, LIN Yangdong, SUN Yi Abstract: Aiming at the problem of poor robustness and easy to evade detection in the detection of malicious PDF doc- ument, a malicious PDF document detection method based on mixed features was proposed. It adopted dynamic and stat- ic analysis technology to extract the regular information, structure information and API calling information from the document, and then a feature extraction method based on K-means clustering algorithm was designed to filter and select the key mixed features that characterize the document security. Ultimately, it improved the robustness of features. On this basis, it used random forest algorithm to construct classifier and perform experiment to discuss the detection performance of the scheme and its ability to resist mimicry attacks. Key words: malicious PDF document, mixed feature, machine learning, detection 1 引言 PDF 是由 Systems[1]在 1993 年提出的,用于文 件交换的一种文件格式,其优点在于跨平台、能保 留文件原有格式、开放标准等。PDF 文件格式自被 提出以来,就以其高效性、稳定性和交互性而被广 泛应用于政府、组织、企业等重要机构的日常办公。 自 2008 年第一个基于恶意代码的 PDF 漏洞[2] 被提出后,针对 PDF 文件格式漏洞的利用技术迅速 发展。近几年来,随着社会工程学和 APT(advanced persistent treat)等攻击手段的兴起和发展,PDF 格 式的漏洞也不断被挖掘出来,利用嵌入恶意 PDF 文 档的钓鱼邮件,结合社会工程学对政府、组织、企 业等进行攻击的案例也屡见不鲜。 2016 年 9 月,PaloAlto 研究中心的安全研究人 员首先发现了针对苹果系统的新型钓鱼邮件攻击, 其技术核心在于钓鱼邮件中携带有木马病毒的恶 意 PDF 文档。2017 年 5 月 12 日,WannaCry 勒索 收稿日期:2018−02−05;修回日期:2018−05−11 通信作者:林杨东,xd_lyd@163.com 基金项目:国家高技术研究发展计划(“863”计划)基金资助项目(No.2015AA016006);国家自然科学基金资助项目(No.61702550) Foundation Items: The National High Technology Research and Development Program of China (863 Program) (No.2015AA016006), The National Natural Science Foundation of China (No.61702550) 2019028-1
第 2 期 杜学绘等:基于混合特征的恶意 PDF 文档检测 ·119· 病毒软件借助高危漏洞“永恒之蓝”在全球范围内 爆发,攻击范围覆盖医疗、教育、公安等多个行业, 影响极其恶劣。相关人士表示,WannaCry 勒索病 毒主要通过钓鱼邮件结合恶意附件进行传播,然后 嵌入文档、感染文档并对文档进行加密。 种种案例表明,钓鱼邮件是当前恶意文档的主 要传播途径,攻击者通常将恶意文档作为邮件附 件,结合社会工程学等,诱使用户打开恶意文档, 从而执行进一步的恶意操作。现有的针对恶意 PDF 文档的反病毒系统大多是基于签名的方法和基于 启发式规则的方法[3],其在应对多态攻击方面存在 一定的缺陷,且无法应对新型安全威胁。为了解决 这些问题,近年来,研究工作主要分为以下 2 个方 面:1) 着重关注恶意 PDF 文档中的静态特征,如 结构特征、内容元数据特征等,来判别恶意 PDF, 而不关注其恶意内容及具体的行为操作;2) 利用静 态分析和动态分析的方法,针对恶意 PDF 文档中的 JavaScript 特征进行检测。前一种方法的检测效果和 检 测 效 率 均 比 后 者 更 优 , 且 可 以 检 测 不 包 含 JavaScript 的恶意文档,然而,这种方法由于选取特 征的顽健性较弱,已被证明极易被攻击者通过简单 的操作而绕过,因此,研究人员又重新关注恶意文 档中 JavaScript 特征的相关研究。 为了解决现有检测方案特征顽健性较差、易被 逃避检测的问题,本文提出了一种基于混合特征的 恶意 PDF 文档检测方案。该方案采用静态分析技术 从文档中提取出其常规信息(版本号、大小等)以 及其结构信息,采用动态分析技术从文档中提取出 文档执行时的 API(application programming inter- face)调用信息。对于常规信息,本文根据对文档 的分析结果进行过滤筛选;对于结构信息及 API 调 用信息,本文采用 K-means 聚类算法对其进行聚类, 从中聚合出最能表征文档恶意性的关键结构特征 及 API 调用特征,以此 3 种特征构成特征向量,利 用随机森林算法构建分类器并最终设计实验进行 验证。结果表明,本文方法与现有已公开的 3 种最 新检测工具相比,检测率和误报率均有一定提高, 且在应对基于特征加法的模拟攻击上效果较好。 2 相关工作 2.1 PDF 文档结构简介 由于 PDF 使用起来方便快捷并且支持各类功 能,其在我国信息化进程中逐渐成为主流的文档信 息交换的主要格式,但与此同时也成为恶意代码传 播的主要载体[4]。 一个典型的 PDF 文档通常包含丰富的文本、图 像等信息,此外,在 PDF 中,往往还存在超链接、 数 据 交 换 以及 允 许 其 他应 用 调 用 的接 口 等 来 为 PDF 文档的各类功能提供支持。因此,PDF 拥有十 分复杂的结构特征。 PDF 文档由一组逻辑上相互连接的对象组成, 其 结 构 [5] 主 要 包 括 文 件 头 (header )、 文 件 主 体 (body)、交叉引用表(cross-reference table)、文件 尾(trailer)和其他可选部分。文件头主要记录了该 文件使用的 PDF 结构标准规范,文件主体包括了 所有的对象内容,交叉引用表记录了间接对象的 地址索引表,文件尾主要记录了交叉引用表的物 理位置。 文件头位于 PDF 文档的最前端,指定了文件使 用的 PDF 规范的版本,如“%PDF-1.7”表示该 PDF 文档使用 PDF 1.7 版本的规范。需要注意的是,文 件头可以被放置在 PDF 文件的前 1 024 B 中的任意 位置。 文体主体由文件头和交叉引用表之间的所有 对象组成,这些对象共同构成了 PDF 文件的具体内 容,如页面、文本、链接、图像等。 交叉引用表为间接对象的随机存取提供了索 引地址表,它的一个重要作用是保证了在整个 PDF 文件被完整加载之前,可以将部分文档先进行显 示。对于一个 PDF 文档而言,其交叉引用表会随着 PDF 文件的更新而更新,不断添加新的内容。 文件尾位于文件的结尾,以“trailer”为起始标 志,指定了交叉引用表以及一些特殊对象的物理地 址,并以“%%EOF”为结束标志。 2.2 恶意 PDF 文档检测相关方法 恶意 PDF 文档检测技术已有一定的基础。目 前,对恶意 PDF 文档检测的分析方法主要有 2 种类 型,即静态分析和动态分析。静态分析主要针对 PDF 文档中的静态特征,利用反编译的手段从文档 中解析出结构、内容、JavaScript 代码等特征,并以 此建立恶意 PDF 文档检测模型;动态分析则是利用 虚拟机、硬件模拟等技术,通过 API 挂钩等手段对 恶意 PDF 文档及其内嵌代码的动态执行进行监控, 并以此建立 PDF 文档行为检测模型。 早期的恶意文档检测,普遍使用静态分析的方 法。2007 年,Li 等[6]首次提出了利用机器学习结合 2019028-2
·120· 通 信 学 报 第 40 卷 n-gram 分析对原始文档进行字节级分析,然而这些 方法主要针对 word 文档、可执行文件(exe)等, 并未在 PDF 文档检测方面进行尝试,其主要原因在 于受编码、过滤和加密等技术的影响,无法定位到 PDF 文档中的主要特征。随着恶意 PDF 文档的危害 性不断增强,后续的研究工作着重分析 PDF 文档中 的 JavaScript 代码特征。 PDF 文档中的 JavaScript 代码特征主要有 2 类, 即动态行为特征和词汇特征。针对 JavaScript 代码 的动态行为特征分析已经提出了许多解决方案,并 设计出了 CWSandbox[7]、JSand[8]、Cujo[9]、Zozzle[10]、 Prophiler[11]等多种 JavaScript 代码分析工具,被广 泛用于不同格式的文档中嵌入式 JavaScript 代码的 检测,在此基础上形成了 MalOffice[12]、ShellOS[13]、 MDscan[14]等检测系统。然而,利用虚拟环境对 JavaScript 进行分析的时间开销和计算开销都较高, 且攻击者可以利用不同的 JavaScript 引擎或不同的 阅读器版本等来绕过检测。为了降低开销,研究人 员逐渐关注于对 JavaScript 代码的静态词汇分析, 通过解析器,对 PDF 文档中的 JavaScript 进行定位 和提取,随后利用分类器进行学习,形成检测模型, 典型的代表有 PJScan[15]等。 然而,在针对 PDF 文件中 JavaScript 代码特征 的分析过程中,由于存在压缩、加密、混淆等技术 手段,JavaScript 代码的定位、抽取及解析始终具有 较大难度,因此,针对元数据[16-17]的分析方法应运 而生。基于元数据特征检测的特征抽取过程一般较 为简单,且不需要对 JavaScript 进行解析和执行, 其关注的特征主要有内容特征和结构特征 2 类。内 容特征主要关注 PDF 文档中的重要关键字,如/JS、 /JavaScrip 以及字体对象、流对象长度等一系列特 征,其主要不足在于无法抽取出流对象中的数据, 而流对象数据又容易被攻击者用来隐藏恶意内容, 从而绕过此类检测。另一类利用 PDF 文档结构特征 的检测方法[18]在检测率和应对新型威胁上均有进 一步的提高,然而已被证明易被攻击者通过在正常 文档中嵌入恶意内容来绕过[19]。 尽管通过对元数据的分析建立起来的检测模 型的检测率及效率均较高,但其顽健性方面存在明 显的不足,因而研究又逐渐转向 PDF 文档中的恶 意代码。最新的进展主要有:通过在 PDF 文档中 嵌入环境监控代码对 PDF 文档的动态行为进行监 控[20];根据 PDF 文档运行过程中的 API 调用信息 作为特征对 PDF 文档进行分类检测[21];利用沙箱 来增强打开 PDF 文档从而保护系统的安全性等[22]。 此后,Maiorca 等[23]提出了结合 PDF 文档的结构 和内容特征来对恶意 PDF 文档进行检测,在一 定程度上增 强了纯静态 的结构特征 分析所带来 的顽健性弱 的问题,但 由于采用的 仍是静态分 析,因此在对抗模拟攻击方面依然存在顽健性不 足的问题。 3 基于混合特征的恶意 PDF 文档检测方法 通过对现有技术的分析,本文发现近几年对于 PDF 文档检测的研究大部分集中于检测其中的 JavaScript 代码以及相应的结构和内容元数据。 针对 JavaScript 代码的检测顽健性较强,但存 在定位和解析 JavaScript 困难、分析代价较高、难 以应对其他类型的安全威胁等问题;针对结构和内 容元数据的分析检测效率和检测率较高,然而容易 被攻击者设计特定文档而绕过,顽健性较差。 为了克服这些缺点,本文提出了一种基于混合 特征的恶意 PDF 文档检测方法,在现有研究的基础 上,着重关注恶意 PDF 文档的常规特征、结构特征 及其 API 调用特征。方案框架如图 1 所示。 图 1 基于混合特征的恶意 PDF 文档检测方案框架 2019028-3
第 2 期 杜学绘等:基于混合特征的恶意 PDF 文档检测 ·121· 本文以 PDFiD 和 PhoneyPDF 这 2 款工具为基 础构建了文档解析器,采用动静态分析相结合的方 法 , 从 文 档中 提 取 内 容信 息 和 结 构信 息 , 并 将 JavaScript 特征转化为对应的 API 调用特征从而解 决 JavaScript 代码定位难、代码混淆等问题,并通 过聚类获得最能表征恶意 PDF 文档的结构特征及 API 调用特征,去除了大量冗余信息,并将此特征 集合与常规特征相结合作为混合特征向量用于分 类器的训练学习,最终得到检测模型。 3.1 混合特征设计 由于单一特征存在顽健性差等问题,因此本文 设计了一种混合特征,用以表征 PDF 文档的恶意 性,具体可分为常规特征、结构特征、API 调用特 征 3 类,下面进行详细介绍。 3.1.1 常规特征 通过对 PDF 文档的分析,结合已有的在恶意 PDF 文档检测领域的相关经验结果,本文选取了以下 7 个重要特征作为常规特征,包括文件大小、文件版 本号、包含 JavaScript 代码的对象数量、嵌入的文件 数量、不完整对象的数量、交叉引用表的数量、特 殊操作函数(如 OpenAction、Launch 等)数量。这 些常规特征与 PDF 文档的安全相关性如表 1 所示。 这些单一特征并不足以用来标识 PDF 文档的 恶意性,但它们结合起来可以作为 PDF 文档的一个 整体概述。例如,根据对大量文档的分析,恶意 PDF 文档的大小通常小于正常 PDF 文档的大小,因为一 般恶意 PDF 文档并不包含有用的文本、图片等内 容,且文件越小,其感染效率就越高;同样,对象、 交叉引用表通常用于隐藏文档中的恶意内容,与文 档的恶意性存在一定的相关性;此外,JavaScript 代码及特殊操作函数等是绝大部分恶意 PDF 文档 完成其恶意目的的必备内容,也能在一定程度上反 映文档的恶意性。因此,这些特征构成了 PDF 文档 的常规特征,其可以在一定程度上表征文档的恶意 性,但并非充分条件。 3.1.2 结构特征 利用结构特征来表征 PDF 文档的恶意性,最早 由 Šrndic 等[18]提出,其方案以恶意 PDF 文档在结 构上与正常 PDF 文档存在的差异性为基础,设计了 一种结构路径用于表征 PDF 文档的结构特征,其主 要问题在于特征复杂,且不利于进一步分析。因此 本文设计了一种更为简便的且更具有可解释性的 结构特征。不同类别的文档,其文档结构上的关键 字存在一定的差异,当一个关键字在正常样本或恶 意样本中出现的频率较大时,其可在一定程度上反 映文档的实际类别。因此,本文在对 PDF 文档进行 解析并获取其结构关键字及其频率的基础上,设计 了一种结构特征提取算法对所提取出的关键字进 行聚类,从中筛选得到出现频率较高的关键字作为 结构特征,从而以尽可能小的特征数量来最大程度 地表征 PDF 文档。算法具体描述如下。 输入 PDF 文档样本集合 D,关键字集合 K 输出 特征关键字集合 Kt 1) 记 F 为关键字在样本中出现频次的集合 for each ki in K do for dj in D do end for end for if ki 在 dj 中出现 then end if fi= fi +1 2) 随机选择 2 个关键字出现频次值 f 作为初始 均值向量 repeat 令两簇集 C1、C2 为空集 for each fi in F do 表 1 常规特征 文件大小 文件版本号 常规特征与 PDF 文档的安全相关性 安全相关性 恶意 PDF 文档一般不包含有意义的文本图片等内容,文件大小一般较小 不同版本的漏洞数量及安全性存在差异 包含 JavaScript 代码的对象数量 一般情况下,恶意 PDF 文档中包含 JavaScript 的可能性远大于正常 PDF 文档 嵌入的文件数量 不完整对象的数量 交叉引用表的数量 特殊操作函数 正常文档一般没有额外嵌入的文件,而部分类型的恶意文档通过嵌入恶意文件来实施攻击 恶意文档中存在缺失结构字段的对象数量比例往往远大于正常文档 恶意文档中缺少交叉引用表或交叉引用表不可识别的比例往往远大于正常文档 恶意文档中出现 OpenAction、Launch 等操作函数的可能性较正常文档更大 2019028-4
·122· 通 信 学 报 第 40 卷 end for 计算样本 fi 与初始均值向量的距离 根据距离将样本归入相应的簇 计算新的均值向量 until 当前均值向量均无更新 3) 令 t1=ft,ft 为簇 C2 里靠近簇 C1 的边界样本值 for each fi > t1 do 将对应的关键字 ki 添加到特征关键字集合 Kt, Kt = Kt {∪ ki}; end for 本文利用上述算法,分别对正常 PDF 集合和恶 意 PDF 集合的特征关键字集合进行提取,最终得到 正常样本关键字子集合 Kb 和恶意样本关键字子集 合 Km 及其对应的出现频次,分别用以表示正常样 本的结构特征和恶意样本的结构特征。本算法主要 包括 3 个步骤,对应的复杂度分别为 O(|K||D|)、 O(2T|K|)、O(|K|),其中,T 为 K-means 算法中的迭 代次数,由于迭代次数远小于样本数量,因此算法 复杂度为 O(|K||D|)。 结构特征集合中的关键字数量主要取决于样 本集合和聚类结果。文档的结构特征通常与文件执 行的特征操作相关联,并且主要通过关键字来执行 对应操作,因此选择特征关键字来表示文档的结构 特征是可行的。例如,/Font 是正常样本中的特征关 键字,主要是因为此关键字与文档中的字体相关 联,出现此关键字说明样本内容中会显示不同字 体,对于正常样本来说这是合理的,但恶意文档一 般不包含具体内容,以轻便简单为主,因此一般不 出现此关键字;又如,/OpenAction 是恶意样本中的 特征关键字,其主要功能是执行对象中的打开操 作,常用来执行 JavaScript 代码,这与恶意样本中 有 90%以上的样本包含 JavaScript 相吻合[24]。 通过聚类,利用文档结构中的关键字特征来表 征其结构特征,极大地降低了特征向量的复杂度, 并且由于排除了大量冗余关键字,从而加大了攻击 者在正常文档结构基础上构建恶意文档从而绕过 检测的难度。 3.1.3 API 调用特征 恶意 PDF 文档中所包含的恶意代码往往都会 经过复杂的混淆和隐藏,直接进行静态分析难以解 决代码定位难与代码混淆等问题,为此,本文基于 API 调用与恶意代码执行过程的相关性,利用 API 调用特征来间接地表征 JavaScript 代码的执行特 征。现有的针对恶意 PDF 文档中 JavaScript 代码 的分析中,最常见的是采用 SpiderMonkey 等工具 进行分析,这些工具最大的不足在于其识别的标 准为 JavaScript 通用标准,对于 PDF 文档中特定 JavaScript 代码(如 app.doc.getAnnots、app. plugIns. length 等)无法有效识别。本文采用了 PhoneyPDF 这一分析框架对 PDF 的内嵌 JavaScript 执行过程进 行分析,它是一种基于 Adobe DOM 仿真的分析框 架,可以执行并分析 PDF 中所使用的各类 JavaScript 代码。通过对其执行过程中的 API 调用进行抽取, 设计了一种特征 API 调用提取算法对关键 API 调用 进行了选择。 记 R 为 Acrobat PDF 标准中所有可调用的 API 函数集合,N 为其元素个数。本文的任务即从全集 R 中筛选出对 PDF 文档标签具有表征价值的 API 函数子集合。 对于任意的 r∈R,定义 θ=∑φi 为其有效性权 值,则有 , 在第 个样本中出现且样本为恶意样本 , 在第 个样本中出现且样本为正常样本 (1) r 1 ⎧ ⎪ m ⎪ 1 = ⎨−⎪ b ⎪ r 0 , 不在第 个样本中出现 ⎩ r i i i ϕ i 有效性权值 θ 表示对应的 API 函数在恶意样本 和正常样本中出现的比率,θ 越大,说明其在恶意 文档中出现的可能性越大,可作为表征恶意文档的 特征;反之,θ 越小,则可将其作为正常文档的特征。 本文利用 K-means 算法,根据有效性权值 θ, 计算对应的欧氏距离,对训练样本的 API 调用进行 聚类,找到阈值 t2 并将其分为 2 个簇(k=2),对应 的子集 Rt={rj ||θj|> t2}则为对应的特征 API 集合。算 法具体描述如下。 输入 AcrobatPDF 标准中可调用 API 集合 R, 恶意 PDF 集合 Dm 及其 API 调用集合 Rm,正常 PDF 集合 Db 及其 API 调用集合 Rb 输出 API 调用特征集合 Rt 1) 计算恶意样本及正常样本数量 M = |Rm|, B = |Rb| 2) 计算 API 调动的有效性权值 θ for each ri in R do for each dj in Dm and dk in Db do 2019028-5
第 2 期 杜学绘等:基于混合特征的恶意 PDF 文档检测 ·123· if ri∈Rdj then ; φ = 1 M else if ri∈Rdk then − ; φ = 1 B φ = 0; end for else then end if θi = θi + φ; end for 3) 令 iθ′ = |θi |,随机选择 2 个样本值作为初始 均值向量 for each ri in R do 令 C1 = ∅, C2 = ∅; repeat 计算其有效性权值 iθ′ 与初始均值向量的距离 根据距离将样本划入相应的簇 until 当前均值向量均无更新 4) 令 t2 = tθ′ , tθ′ 为簇 C2 里靠近簇 C1 的边界样 end for 计算新的均值向量 本值 for each iθ′ > t2 do 将对应的 API 调用 ri 添加到特征调用集合 Rt, 即 Rt = Rt {∪ ri} end for 在特征 API 调用提取算法中,K-means 算法的 迭代轮数远小于本文的样本集合大小,因此本文算 法复杂度为 O(|R||D|)。为了提升算法的效率,本文 使 用 样 本 中 出 现 的 所 有 API 调 用 集 合 来 代 替 AcrobatPDF 标准中可调用 API 集合 R,从而在一定 程度上降低了算法的复杂度。 3.2 分类检测算法 为了对训练集中的良性和恶意样本进行学习, 建立模型并利用测试集进一步优化和调整模型,本 文采用半监督学习来建立检测模型。由于本文所设 计的混合特征在数据结构上存在差异,因此需要选 择一种能适应多种不同数据结构的分类算法。决策 树算法可以较好地解决此问题,然而决策树存在容 易导致过拟合、泛化效果较差等问题,因此,本文 采用随机森林算法。随机森林算法是对决策树算法 的一个集成和改进,它在以决策树为基学习器构建 Bagging 集成的基础上,进一步在决策树的训练过 程中引入了随机属性选择,能较好地应对本文所设 计混合特征存在的异构性,且计算开销小、集成的 泛化性较好。最终,选择了 10 棵树的随机森林算法 进行分类器的构建,并采用十折交叉验证过程。 3.3 方法评价指标 评价本文方法的功能指标主要是对恶意 PDF 文档的检测效果进行评价,恶意文档分类结果混淆 矩阵定义如表 2 所示。 表 2 真实情况 恶意文档 良性文档 恶意文档分类结果混淆矩阵 预测结果 恶意文档 良性文档 DMM' DBM' DMB' DBB' 表 2 中,DMM'表示恶意 PDF 文档被正确检测 为恶意的样本数量;DMB'表示恶意 PDF 文档被错误 检测为良性的样本数量;DBM'表示良性 PDF 文档被 错误检测为恶意的样本数量,DBB'表示良性 PDF 文 档被正确检测为良性的样本数量。对应的几项评价 指标如下。 1)真正类率(TPR, true positive rate),又称为检 测率,表示被正确检测为恶意的恶意 PDF 文档数占 恶意 PDF 文档总数的比率,计算式为 TPR = ′ D MM D′ + ′ MB D MM (2) 2)假正类率(FPR, false positive rate),又叫误 报率,表示被错误检测为良性的恶意 PDF 文档数占 恶意 PDF 文档总数的比率,计算式为 FPR = ′ D BM D′ + ′ BB D BM (3) 3)准确率(accuracy),表示检测结果是正确的 样本数占样本总数的比率,计算式为 Acc = D MM ′ + D MM D MB ′ + +′ D D ′ BB ′ BM (4) + D ′ BB 4 实验设计与结果分析 4.1 实验样本集合与环境配置 在测试实验中,本文构建了 5 928 个恶意 PDF 文档以及 5 881 个良性 PDF 文档的实验样本集合。 2019028-6
·124· 通 信 学 报 第 40 卷 其中,恶意样本主要在 VirusTotal 上收集而来,类 别如表 3 所示,包括近几年来 Adobe Reader 及 Acrobat 的高危漏洞以及 2004—2011 年用户提交到 VirusTotal 的未经过鉴别分类的恶意PDF 文档样本。 这部分未鉴别的样本涵盖了常见的利用恶意 PDF 文档进行攻击的多种类型,如内嵌代码、内嵌其他 恶意文件等。 表 3 恶意 PDF 文档样本类别 漏洞编号 CVE-2016-4255 CVE-2015-5090 CVE-2014-0512 CVE-2014-0496 CVE-2013-0640 CVE-2012-0754 CVE-2011-2462 CVE-2010-2883 CVE-2010-0188 其他未归类样本 样本数量/个 12 31 17 39 21 3 25 49 25 5 708 正常样本主要通过在 Google、Yahoo 上下载得 到,包括论文、销售广告、报告等 PDF 文档,并通 过卡巴斯基杀毒软件检测为正常样本。在此需要强 调的是,本文对正常样本集合进行了控制,着重增 加了包含 3D 图像、flash、视频、JavaScript 等内容 的正常 PDF 样本,保证了正常样本集合的全面性, 降低了由于样本不平衡性所导致的结果误差。正常 PDF 样本类别如表 4 所示。 表 4 正常 PDF 文档样本类别 类别 样本数量/个 包含 3D 图像的文档 包含 JavaScript 代码的文档 包含 flash 的文档 PDF 格式的 jar 文件 包含视频的文档 内嵌文件的文档 其他未归类样本 28 219 61 3 35 16 5 519 本文随机地将这些数据分为训练样本以及测 试样本,其中,训练样本共包括 3 949 个恶意 PDF 文 档和 3 916 个良性 PDF 文档;测试样本包括 1 979 个 恶意样本和 1 965 个良性样本。实验的软硬件环境 配置如表 5 所示。 表 5 实验环境配置 硬件配置 2 个英特尔至强处理器(E5 2600V4) RAM(90 GB) 4.2 检测性能测试 软件配置 Ubuntu PyCharm 为对本文所设计方案的检测性能进行验证,在 训练集(3 949 个恶意 PDF 文档和 3 916 个良性 PDF 文档)的基础上,对本文的模型进行了训练,从而 建立检测模型,并对测试集(1 979 个恶意样本 和 1 965 个良性样本)进行测试。最终将测试结果 与现有的 3 种最新公开的恶意 PDF 检测工具 (PJScan、PDFRate、Wepawet)相比较。由于 PJScan 使用的是单分类 SVM 算法,其训练数据不包括正 常样本,因此本文仅使用训练集以及测试集中的恶 意样本作为 PJScan 的训练集和测试集,从而进行对 比实验。而另外 2 款公开的工具均为在线服务,其 中,PDFRate 使用了 5 000 个恶意 PDF 样本(收集 于 Contagio)和 5 000 个正常样本进行训练,而 Wepawet 的训练数据集及大小均未知,因此,想要 设计实验对这 2 款系统进行相同的准确训练并不可 行。但通过比较这 3 类系统与本文方法对测试样本 的检测结果,可以在一定程度上反映本系统的检测 性能。 4 种方法对测试集最终的检测结果如表 6 所示。 本文主要从检测率(真正类率)、误报率(假正类 率)和准确率这 3 个方面对模型的检测性能进行比 较,表 6 中括号内为标准差。 表 6 系统 4 种方法检测效果对比 误报率 检测率 准确率 本文方法 99.73% (±0.16%) 0.030%(±0.014%) 99.85% PJScan 80.64% (±1.44%) 0.020%(±0.012%) 90.27% PDFRate 99.05% (±0.63%) 0.092%(±0.028%) 97.39% Wepawet 88.93% (±0.81%) 0.061%(±0.008%) 94.32% 在实验过程中发现,所有不包含 JavaScript 代 码的文档均会被 PJScan 系统分类为正常文档,这是 由于 PJScan 系统仅针对文档中的恶意 JavaScript 代 码进行检测,但这显然是不合理的。此外,Wepawet 系统在解析结构不完整的 PDF 样本时,会出现分析 出错的情况,这是由于其没有实现全部 Adobe 的规 范,而仅是模拟嵌入式 JavaScript 代码和可执行文 件的运行结果。 2019028-7
第 2 期 杜学绘等:基于混合特征的恶意 PDF 文档检测 ·125· 实验结果表明,本文方法在检测性能上明显优 于 PJScan 和 Wepawet,PJScan 的误报率最低,但 其检测率相较于本文方法而言差距较大;Wepawet 的检测率及误报率均弱于本文方法;PDFRate 在检 测率方面与本文方法较为接近,而在误报率方面则 存在一定的弱势。总地来说,本文方法在检测性能 上要优于其他 3 类工具。 为对本文检测模型的检测效率进行进一步的 分析,将本文方法的单个文件的平均检测时间与其 他已公开该项数据的方案进行对比,结果如表 7 所 示,其中,本文方法以及 PJScan 的数据为实验得出, 其他方案的数值均为从文献[13-14,22]中获得。此 外,由于 Wepawet 以及 PDFRate 为在线服务,本文 无法得到其准确检测时间,并且在公开文献中也无 法找到相关描述,因此本文并未对其进行分析。 表 7 几种不同方法检测效率对比 系统 本文方法 PJScan ShellOS MDScan 结构路径 类型 动静态混合分析 纯静态分析 纯动态分析 动静态混合分析 纯静态分析 检测耗时/ms 650~1 200 58 7 400~25 460 1 500~3 000 28 本 文 方 法 针 对 正 常 文 档 的 平 均 检 测 耗 时 为 650 ms,针对恶意文档的平均检测耗时为 1 200 ms, 可以满足终端机器上的实时检测需求。在实验过程 中发现,正常文档的检测耗时主要取决于文档的解 析过程,这是由于正常文档往往包含丰富的内容 (文本、图片、表格),而仅小部分文档包含 JavaScript 代码,其文档解析过程耗时较长;恶意文档一般只 包含执行漏洞或恶意代码的对象,其具体页面内容 较少,因此文档解析过程较快,其检测耗时主要取 决于执行 JavaScript 的时间。 可以看到,检测效率主要与采用的分析类型有 关,总体趋势为纯静态分析<动静态混合分析<纯动 态分析。PJScan 和基于结构路径的方法在检测耗时 上比本文方法更优,但本文方法使用了模拟 Adobe DOM,可以对 PDF 文档进行更全面的分析。此外, 与同类型的 MDScan 相比,本文方法的检测耗时更 少,主要原因在于本文方法间接地使用特征 API 调 用来表征 JavaScript 代码特征,而 MDScan 则是对 Shellcode 进行进一步的执行与分析。 4.3 抗攻击测试 通过对本文设计的方案进行分析不难发现,攻 击者要想攻击本文提出的检测系统,主要可从 3 个 方面进行:1)彻底研究本文系统的检测框架,设计 出本文系统无法提取到的恶意特征;2)使用恶意样 本破坏本文的数据集,干扰模型的建立过程;3)分 析本文选取的检测特征,进而操控样本对应的特 征,最终找到可绕过检测的恶意样本。这 3 种方法 均可实现对本文系统进行攻击,但很明显,前两种 方法十分复杂,且需要操控本文系统的数据集,因 而不易实现;而第三种方法则仅需要攻击者不断修 改并提交自制恶意样本到本系统进行检测,直至被 误报为正常样本,即攻击成功。 为测试本文系统对上述第三种攻击手段的防 御能力,本文选择了基于特征加法的模拟攻击作为 对抗模型。模拟攻击是指通过微弱地改变文件的整 体结构,从而将恶意内容嵌入正常 PDF 文档中,形 成相应的恶意 PDF 文档,这种攻击模型已经被证明 能十分简便有效地逃避基于结构路径检测系统。为 简化实验过程,本文在其思想的基础上,通过直接 对已抽取出的恶意 PDF 文档特征向量进行调整,在 其特征向量中加入正常 PDF 文档的相关特征,从而 模拟攻击过程。此过程可以简单地理解为,通过不 断增加恶意文档的正常性,来引起检测模型的误 报,从而达到逃避检测的目的。 嵌入的良性特征主要从正常样本特征集合 Kb 和 Rb 中选取。Kb 和 Rb 为利用本文的特征提取算法 对样本集合进行特征提取得到的集合。由于一般情 况下,正常样本不包含 JavaScript 代码,嵌入对应 的 API 调用特征,可能导致文档恶意性的增加,因 此,本文仅选择正常样本的关键字特征进行嵌入。 定义特征关键字在样本集合中出现的概率 p,平均 每个样本中出现的次数为 c,则特征关键字在样本 集合中出现的期望值 e 可表示为 p c = × e (5) 特征关键字的良性表征度 γ 为 γ = e b e m − e b (6) 其中,eb、em 分别表示特征关键字在正常样本和恶 意样本中出现的期望值。 为 最 大 限 度 地 考 量 模 型 应 对 模 拟 攻 击 的 能 力,本文根据特征关键字的良性表征度,选取了 最能表征良性 PDF 文档的 20 个特征,具体描述 如表 8 所示。 2019028-8
分享到:
收藏