当前位置:   article > 正文

恶意PDF文档分析工具介绍和简单分析_pdf stream object 分析工具

pdf stream object 分析工具

一、PDF说明

             PDF(便携式文件格式,Portable Document Format)是由Adobe Systems在1993年用於文件交换所发展出的文件格式。
因为PDF的文件格式性质广泛用于商业办公,引起众多攻击者对其开展技术研究,在一些APT(Advanced Persistent Threat)攻击中。针对特定目标投递含有恶意代码的PDF文档,安全意识薄弱的用户只要打开PDF文档就会中招。

             PDF的结构可以从文件结构和逻辑结构两个方面来理解。PDF的文件结构指的是其文件物理组织方式,逻辑结构则指的是其内容的逻辑组织方式。以下为文件结构:

          

二、解析工具

           1.PDF文件可以理解理解为 二进制文件,所以可以使用十六进制工具打开,打开之后也可以直白的看出PDF的关键字段以及文件结构。

  1. %PDF-1.6 #文件头+版本号,16进制读取文件0x25 0x50 0x44 0x46开头即证明是pdf文件
  2. %çóÏÓ #下面就是很多的Object对象
  3. 2 0 obj #Object对象,其中2是Obj顺序号,0是Obj的版本号,obj也是对象开始的标志
  4. << #<<>>之间为Object对象的字典内容,包含关键字
  5. [/ICCBased 3 0 R]
  6. >>
  7. Endobj #Object结束关键字
  8. 7 0 obj
  9. <<
  10. /Filter
  11. /FlateDecode #流对象的压缩方式为/FlateDecode
  12. /Length 148 #流对象的长度
  13. >>
  14. Stream #流对象
  15. #文件内容信息,注:此处为直观从而手动填写的
  16. Endstream #流对象结束标志
  17. Endobj
  18. 8 0 obj
  19. <<
  20. /Contents 7 0 R #页面内容对象的对象号为7
  21. /MediaBox [0 0 595.2 841.68] #页面显示大小,以像素为单位
  22. /PageIndex 1
  23. /Parent 1 0 R #其父对象号为1以及Pages对象
  24. /Resources #该页包含的资源
  25. <</Font <</F4 4 0 R >> #字体的类型
  26. /Shading <<>>
  27. /XObject <<>> #外部对象
  28. /ColorSpace <</CS1 2 0 R>>
  29. >>
  30. /Type /Page
  31. >>
  32. Endobj
  33. 1 0 obj
  34. <<
  35. /Count 1 #页码数量为1
  36. /Kids [8 0 R ] #kids对象说明它的子页对象为8
  37. /Type /Pages
  38. >>
  39. Endobj
  40. 13 0 obj
  41. <<
  42. /Author (? Cryin')
  43. /CreationDate (D:20100926145832+08'00')
  44. /Title (? PDF文件格式分析)
  45. >>
  46. endobj
  47. Xref #表示交叉引用表开始
  48. 0 14 #0表明引用表描述的对象编号从0开始,8说明共有8个对象#此行在交叉引用表中可出现多个
  49. 0000000000 65536 f #一般pdf都是以这行开始交叉引用表的,起始地址0和产生号
  50. 0000003195 00000 n #表示对象1,就是catalog,3195为偏移地址n表示对象在使用
  51. 0000000018 00000 n
  52. 0000000051 00000 n
  53. 0000003464 00000 n
  54. 0000000000 00000 f
  55. 0000004282 00000 n
  56. 0000002728 00000 n
  57. 0000002992 00000 n
  58. 0000003256 00000 n
  59. 0000003892 00000 n
  60. 0000003620 00000 n
  61. 0000008660 00000 n
  62. 0000008712 00000 n
  63. Trailer #说明文件尾对象开始
  64. <</Size 14 #14说明PDF文件对象数目
  65. /Root 12 0 R #说明跟对象号为12
  66. /Info 13 0 R>>
  67. startxref
  68. 8980 #8980为交叉引用表的偏移地址,此处为十进制表示
  69. %%EOF #文件结束标志

           2.PdfStreamDumper : 这是一款可以对恶意的PDF文档进行分析的免费工具。

         3.pdfid.py : 这个工具不是PDF解析器,但是它会扫描一个文件来寻找特定的PDF关键字,让我们识别包含JavaScript的PDF文件。

pdfid.py xxx.pdf

 

每一个PDF文件都包含有前7个字段,也有可能不包含strea和endstream。据说有一些ODF文件没有xref或则trailer,但是这种情况比较少见。如果一个PDF文件没有xref或者trailer关键字段,那么可以确定它不是恶意的PDF文件。

/xref 交叉引用表,描述每个间接对象的编号、版本和绝对的文件位置。

/xref后面的第一个数字是第一个间接对象(即0号对象)的编号,第二个数字是/xref(交叉引用表)的大小。

/Page指明PDF文件的页数,大多数恶意PDF文件仅仅只有一页

/Encrypt指明PDF文件有数字水印或者是被加密过的。

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

/JS与/JavaScript指明PDF文件中是否含嵌有JavaScript代码。通常恶意的PDF文件都嵌套有JavaScript代码,这里一般都是利用JavaScript的解析漏洞或者使用JavaScript来实现堆喷射(heap spray),也有很多正常的PDF文件里会含有JavaScript代码

/AA、/OpenAction和/AcroForm指明当查看PDF文件或者PDF的某页时会有动作随其执行,几乎所有嵌有JavaScript代码的恶意PDF文件都有自动执行JavaScript代码的动作(action)。如果一个PDF文件包含有/AA或/OpenAction自动执行动作的关键字段,而且含有JavaScript代码,那么这个PDF文件就极有可能是恶意的PDF文件

/URI 如果你要在PDF文件中执行打开网页的动作就需要这个关键字段

/Filter 一般为FlateDecode则是使用了Zlib压缩解压缩算法。

/JBIG2Decode指明PDF文件使用了JBIG2压缩。虽然JBIG2压缩本身可能会有漏洞(CVE-2010-1297)。但/JBIG2Decode关键字段并不能说明PDF文件是否可疑

/RichMedia Flash文件

/Launch执行动作(action)数量

4.其他工具

https://www.cnblogs.com/DeeLMind/p/7238171.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/923018
推荐阅读
相关标签
  

闽ICP备14008679号