原文:http://countuponsecurity.com/2014/09/22/malicious-documents-pdf-analysis-in-5-steps/
大多数企业网络边界都被保护。然而恶意pdf文件或MS office 软件可以成功通过防火墙,IPS,Anti-spam,杀毒软件以及其它保护措施。当到达受害邮箱后,通过使用社会工程技巧诱惑用户点击/打开文档。例如,如果用户打开一个恶意pdf文件,当Adobe处理一个精心制作的文件时它通常会执行含有漏洞的Javascript代码。它会破坏堆/栈内存导致它执行一个从网络下载的恶意程序。根据Didier Stevens的描述([url]http://blog.didierstevens.com/[/url]),在一些场合下,可以不用点击文件,只需下载文件就可以利用漏洞执行恶意程序。
整体来看,PDF有header,body,reference table以及trailer组成。其中最重要的是body,body可能含有各种content type object,所以漏洞研究者对于parser十分感兴趣。语言丰富复杂的意思是同样的信息可以使用很多种方法编码以及模糊处理。例如object中可以有存储任意类型,任意大小的流。这些流被压缩,PDF标准支持多种算法包括ASCIIHexDecode,ASCI85Decode,ASCI85Decode,FlateDecode, RunLengthDecode, CCITTFaxDecode, DCTCDecode,它们被称为filter。PDF文件可以支持多媒体内容以及通过Flash object支持Javascript和ActionScript。使用JavaScript是一个很流行的攻击向量,因为可以使用不同的技术把它藏到流中,从而很难被发现。当PDF文件含JavaScript代码时,恶意代码通过触发一个漏洞然后执行shellcode。所有这些特点和能力都将成为攻击目标。

[b]本文通过REMnux来分析步骤:
1. 找到提取JavaScript
2. 去模糊JavaScript
3. 提取shellcode
4. 创建一个可执行的shellcode
5. 分析shellcode,确定功能[/b]
使用REMnux小抄:[color=blue][b]http://zeltser.com/reverse-malware/analyzing-malicious-document-files.pdf[/b][/color]
[color=blue]1. 找到提取JavaScript[/color]
一种方法是使用Didier Stevens的工具集([url]http://blog.didierstevens.com/programs/pdf-tools/[/url])分析内容寻找可以代码。其中的一个工具是pdfid,可以显示一些pdf中可以被漏洞利用的关键字。通过工具集找到6个object和两个stream。没有JavaScript,但是有/AcroForm以及/XFA。这意味着pdf中的XFA可能包含恶意内容。
[img]http://dl2.iteye.com/upload/attachment/0101/6315/024b75cf-dcb5-3fd0-828f-5aa0a19bf25d.png[/img]
然后深入调查,使用pdf-parser.py来显示6个object是的内容。输出为了方便起见被简化了。但是object2使用了/XFA,它引用了Object 1,并且包含了一个压缩的stream,非常可疑。
[img]http://dl2.iteye.com/upload/attachment/0101/6317/48cd645b-b4c7-3d8b-b08c-1ddaf5993695.png[/img]
通过–filter选项,pdf-parser.py允许我们显示一个object的内容,以及传递stream到一个支持的filter(FlateDecode, ASCIIHexDecode, ASCII85Decode, LZWDecode and RunLengthDecode)。–raw使输出更易读。查看这个文件的内容,我们可以获得解压的stream。然后调查这个文件可以发现一些原PDF文件中没有的JavaScript代码。如果这个文件被受害者打开,那么/XFA将会执行恶意代码。
[img]http://dl2.iteye.com/upload/attachment/0101/6321/8d067552-08a7-3524-a73e-00c5ed7d2804.png[/img]
另一种快速查找pdf是否含有恶意代码以及其他恶意元素的方法是使用peepdf.py,peepdf可以用来分析pdf文件,显示objects/streams,编码/解码streams,修改它们,获得不同版本,显示修改元数据,执行JavaScript代码以及shellcode。当使用最新版本的工具运行pdf文件,可以显示pdf的文件结构,它的内容,甚至检查它触发的是哪个漏洞(如果有签名)。
[img]http://dl2.iteye.com/upload/attachment/0101/6323/3494ab70-362e-3313-ac10-02797b341d39.png[/img]

[color=blue]2. 去模糊JavaScript[/color]
JavaScript代码可能被模糊了多次。本例中object.raw在<script xxxx contentType=”application/x-javascript”> 和一个 base64格式的<image> 标签间包含4个JavaScript元素。这些JavaScript需要提取,放到一个文件中。使用js-didier.pl 来分析代码。它本质上上是一个可以从命令行运行的没有插件的JavaScript解释器。
[img]http://dl2.iteye.com/upload/attachment/0101/6325/2cb9b1bd-bb76-34c3-98bd-9ba3aa7d5ee5.png[/img]
[color=blue]3. 提取shellcode[/color]
eval.005.log包含去模糊的JavaScript代码,它里面包含两个Unicode编码的变量。通过他们隐藏/模糊shellcode。通常JavaScript代码编码如下:
[img]http://dl2.iteye.com/upload/attachment/0101/6327/ea361818-9a63-30f3-9621-29f9eafa1152.png[/img]
这些Unicode编码的字符串需要解码为二进制文件。需要使用Remnux中一个叫做unicode2hex-escaped的脚步来实现转换。
[img]http://dl2.iteye.com/upload/attachment/0101/6329/0623e52f-f162-3871-8710-4239a2edeaf4.png[/img]
[color=blue]4. 创建一个可执行的shellcode[/color]
使用shellcode2exe.py来把shellcode转换成Windows可执行的二进制文件
[img]http://dl2.iteye.com/upload/attachment/0101/6331/aff54d53-1479-3941-91f5-2cf686de6cbe.png[/img]
[color=blue]5. 分析shellcode,确定功能[/color]
加载调试器,分析二进制文件
[img]http://dl2.iteye.com/upload/attachment/0101/6333/bada5ba1-8f46-3e3e-8305-181e68935161.png[/img]

[译]5步分析pdf文件相关推荐

  1. 关于RDP协议的分析 附上RDP 协议初步分析.pdf文件

    关于RDP协议的分析和研究                                         -------------- leadgenius 写这个一是便于学习,再就是与网友们共同讨 ...

  2. 把qss添加进qrc文件_PDF怎么压缩?一招教你快速压缩PDF文件

    在我们日常学习和日常工作中,时常会用到PDF文件,PDF文件可以将原稿的每一个字符.颜色以及图像都可以忠实的再现.所以就会导致有时候PDF文件过大,影响传输. 那么如何将PDF文件压缩变小,快捷传输呢 ...

  3. shell换行合并多个文件_如何合并多个pdf文件?这里有合并PDF最简单的方法

    如何合并多个pdf文件?今天在整理一些PDF文件的时候,由于文件的数量比较多,我就想着将这些PDF文件合并起来,好在平时也了解了一些PDF合并的方法,很快就完成了文件的合并.想到应该还有很多朋友还不知 ...

  4. 【Python】pdfminer3k模块批量转换本地PDF文件

    上一篇文章自己研究了一下如何批量将word或者ppt文件转换为PDF文件,但是有时候我们也想要将pdf文件转换为word或者txt文件,方便复制和处理.本文主要通过调用pdfminer3k模块进行处理 ...

  5. uPDF:免费功能强大的 PDF 全能工具箱, PDF 文件处理利器

    PDF 是一种我们经常会遇到的文件格式,不同于 Word 打开就能编辑修改,PDF 文件的处理往往需要专门的软件才行. 比如 PDF 转 Word.图片制作 PDF.PDF去水印等,经常难倒不少人. ...

  6. optics hecht pdf 5_干货分享:这些PDF文件压缩工具都是你不容错过的!

    你是否还在为pdf文件过大而烦恼呢?在制作PDF文件的时候,如果文件中内容简单,生成的PDF文件体积也会比较小.但是如果PDF文件内容中包含了许多图片.表格及特殊公式,这样的文件体积会很大.为了避免这 ...

  7. 唐诗三百首加密软件如何使用_如何对PDF文件加密?原来PDF加密用这个软件就可以!...

    如何对PDF文件加密?如果我们想要给Word文件加密,直接在Word软件中就可以完成.那么若文件是PDF格式的,你知道该怎么操作给这PDF加密吗?要是不会的,那么一定要来学习下我的这个PDF加密方法, ...

  8. 一个简单PDF文件的结构分析

    一个简单的PDF文件结构的分析 Adobe的PDF参考告诉我们一个PDF文件可以通过下面4个方面来理解: 1.         对象, 一个PDF文档是由一组基本数据类型组成的数据结构. 2.     ...

  9. pdf批量添加图章_1分钟学会制作电子公章,三步搞定,轻松在PDF文件中添加公章图片...

    相信职场办公的各位都有同感吧,平常需要盖章的地方真的蛮多的,如果是纸质文件还好,但是电子文档如何盖章呢?其实也很简单,今天小编就教大家用Word制作电子印章,超简单的,三步就搞定,一起看看吧! 一.如 ...

最新文章

  1. c语言实验七实验报告,C语言实验七 数 实验报告.doc
  2. Matlab学习一本通,matlab基础教程
  3. 【Python】函数递归实例之字符串反转、汉诺塔问题分析
  4. C语言学习之有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1
  5. linux 安装程序丢失链接动态库,Linux安装软件过程中提示缺少动态链接库.so的解决方法...
  6. 写给80后,我们的人生才刚刚开始
  7. Spring Boot 集成MyBatis
  8. Shell 相互调用
  9. 股票量化交易有哪些潜在的风险?如何去避免?
  10. 计算机类专业必备的软件,拿来把你
  11. 黑龙江伊春现受伤雄性东北虎 目前已被成功救治
  12. 灵山奇缘服务器维护中,灵山奇缘跨服系统详细介绍
  13. RocketMQ报错:service not available now, maybe disk full
  14. NeuS: Learning Neural Implicit Surfaces by Volume Rendering for Multi-view Reconstruction
  15. 【存储知识】文件系统与硬盘存储(分区、格式化、挂载、inode、软链接与硬链接)
  16. Span 有多强大?玩转各种文字特效
  17. 一个计算机爱好者的不完整回忆(三十)VB与Delphi
  18. 【数据库视频--概况
  19. css3彩虹渐变色,css3渐变 彩虹条纹
  20. SAP License:利润中心

热门文章

  1. 制作映射表并替换字符串中的内容
  2. 如何找出1000以内的“完数“
  3. docker build 18.04 镜像出现 Configuring tzdata - Please select the geographic area in which you live
  4. 红外夜视仪的 区别 功能 分类 国产品牌有什么推荐---TFN T70LR 红外热成像仪
  5. 在西安电子科技大学读研是一种什么样的体验
  6. 浏览器刷新、关闭页面与统计在线人数
  7. Ceph 存储集群2-配置:心跳选项、OSD选项、存储池、归置组和 CRUSH 选项
  8. 【学习】大数据关键技术
  9. (纪录片)数学的故事 The Story of Maths (2008)
  10. 【Java开发】设计模式 19:观察者模式