Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Extract Me if You Can: Abusing PDF Parsers in Malware Detectors

论文下载

这篇文章发表在NDSS 16上,作者是Syracuse University的Curtis Carmony。这篇文章里,作者针对PDF的malware,对Adobe Reader做了个javascript提取工具,来自动化地提取恶意PDF里的javascript。然后作者分析了现有PDF病毒分析工具存在的缺陷,并总结了一些PDF javascript的混淆方法,来绕过PDF病毒分析工具和杀软。最后,作者提出了一些应对的措施,来加强PDF病毒的检测。

背景

Signature-based malicious PDF detectors

基于特征值和哈希来判断PDF是否是恶意的。

Metadata and Structural Features Based Detection

  • 基于对PDF文件结构的分析,来判断PDF是否是恶意的。
  • PDF Malware Slayer和PDFrate都使用了机器学习的方法,Random Forest,对PDF文件结构进行分类学习。攻击者可以伪造PDF的文件结构来bypass这类检测器。

JavaScript Based Detection

  • 基于对PDF文件里的javascript代码,进行分析,来判断PDF是否是恶意的。
  • MDScan会解析并提取出PDF里面的javascript代码,然后在一个改过的js引擎里执行,并进行检测。
  • PJScan用机器学习的方法,One-Class SVM,来判断js代码是否是恶意的。
  • MPScan直接hook了Adobe Reader的js引擎,在执行过程中判断是否执行的恶意行为。

Fig

Reference Javascript Extractor

作者认为,只有Javascript-based检测器比较有前途,然而,现在的这类检测器的实现都存在许多问题。作者认为,怎么提取出PDF文件里面的javascript代码是个很重要的问题。

Fig

Reference Extractor是基于TZB实现的一个工具,TZB(Tappan Zee (North) Bridge: Mining Memory Accesses for Introspection)是一个基于Panda的污点分析工具。

作者记录下Adobe Reader解析PDF文件的指令序列,然后进行分析。作者使用了三种输入:有JS的PDF,正常的PDF,Malformed PDF。分别记录下解析它们的指令序列。然后线下分析,找出三个Tap Point:JS提取完成的点,Adobe Reader进程正常结束的点,进程异常退出的点。

对第一个Tap Point,作者对每条内存读写指令记录下:

Fig

然后把内存地址连续的操作归类。

Fig

Fig

然后,匹配每组内存中的数据,是否包含javascript的关键字。如果存在,就说明提取出了javascript,把调用这些指令的函数设成Tap Point。

对后两类Tap Point,作者分别记录下ETJS,ETWF,ETMF,分别表示有JS的PDF,正常的PDF,Malformed PDF对应的指令集合。

正常退出的Tap Point指:

  1. 在ETWF里,the basic block is always executed once and only once
  2. 不在ETMF里
  3. 在ETJS里,只出现在Javascript Tap Point之后

异常退出的Tap Point指:

  1. 在ETMF里,the basic block is always executed once and only once
  2. 不再ETWF里

后续执行时,遇到Tap Point时,作者用Microsoft Detours library来做一系列操作。

Evaluation

Fig

Reference Extractor是作者的提取工具。Matches指的是其他工具提取的javascript和作者的一样;Invalid指的是提取出来的javascript不一样;Zero指的是作者的工具提取出了javascript,但别的工具没有提取出来;Inconclusive指的是其他工具提取出来了但作者的工具没有提取出来。

Fig

开源PDF分析工具存在的问题

Fig

作者提出的PDF混淆方法和测试

Fig

Reference Extractor配合PJScan的测试

Fig