漏洞文件使用了混淆技术怎么办?

安全 漏洞
漏洞文件使用了混淆技术怎么办?本文我们就以PDF文件为例:对于PDF文件的解析,必须先要熟悉PDF文件各式,貌似所有官方的PDF文件各式文档都是英文的。这样就没办法了,硬着头皮去读呗,如果你对自己的英语够自信那就到这里看吧参考。

漏洞文件使用了混淆技术怎么办?我们下面就以PDF文件为例:

对于PDF文件的解析,必须先要熟悉PDF文件各式,貌似所有官方的PDF文件各式文档都是英文的。这样就没办法了,硬着头皮去读呗,如果你对自己的英语够自信那就到这里看吧参考。除此之外就只能找一些国内撰写的相关资料了。熟悉了PDF文件各式之后,怎么解析PDF文件呢?我目前的办法是查 找PDF文件里面的关键字段,这样做的弊端是对于Obj对象里的数据流对象(stream)包含的内容是没办法查找的 。另外也有一些PDF漏洞文件使用了一些混淆技术,这样的PDF文件暂时就没有什么好办法解析了。如下面的情况:

%PDF-1.5

1 0 obj

<</#54#79P#65 R 0 5 O#70e#6e#41c#74i#6fn 3 Pages C#61ta#6c#6f#67>>

endobj

关键字这里就考虑一般的恶意PDF文件,主要是对以下关键字段(个人认为和漏洞不牵扯关系的就不考虑了)进行查找和解析,如下面所示:

·obj

·endobj

·stream

·endstream

·xref

·trailer

·startxref

·/Page

·/Encrypt

·/ObjStm

·/JS

·/JavaScript

·/AA

·/OpenAction

·/AcroForm

·/URI

·/Filter

·/JBIG2Decode

·/RichMedia

·/Launch

解析思路:

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

/xref 交叉引用表,描述每个间接对象的编号、版本和绝对的文件位置。PDF文档中的第一个索引必须从版本为65535的0号对象开始,标识符/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)数量

最后的工作就是检查PDF文件的各个对象以及对象之间是否符合Adobe的PDF文件格式规范。并综合上面描述的各关键字段信息分析该PDF文件是否可能为恶意文件。

责任编辑:蓝雨泪 来源: 黑客x档案
相关推荐

2022-03-02 14:00:46

Nest.jsExpress端口

2021-06-16 06:14:29

React17Toast组件React bug

2017-03-02 21:00:53

Windows 10Windows搜索框

2017-06-12 11:14:52

程序员技术停滞

2017-02-21 13:11:43

SDN网络体系SDN架构

2009-11-03 08:56:02

linux死机操作系统

2022-12-19 11:31:57

缓存失效数据库

2022-05-19 08:01:49

PostgreSQL数据库

2009-11-02 10:17:08

2018-01-28 20:39:39

戴尔

2019-10-12 09:50:46

Redis内存数据库

2022-07-05 11:48:47

MySQL死锁表锁

2010-08-18 10:07:37

NATPAT

2015-10-22 09:09:59

2016-03-05 20:31:39

2015-07-10 10:16:27

JS库新手

2017-12-21 20:01:38

润乾报表

2011-07-28 13:45:06

2020-03-18 19:00:29

电脑内存不足系统

2019-08-29 07:35:29

网站404空白nginx
点赞
收藏

51CTO技术栈公众号