1 - 污点分析

发布时间:2011-11-03 11:29:57   来源:文档文库   
字号:

1、基于调试器的污点分析

1.1 总体介绍

2011-7-9:经过前期调试器污点分析VDT-tracerintel指令集的学习,初步可以跟踪内存中的污点。

见以下示例:

这里主要记录了mov相关指令和字符串拷贝相关指令,

Mov指令包括case 0xA0: case 0xA1: case 0xA2: case 0xA3: case 0x8B: case 0x88: case 0x89: case 0x8A:

字符串拷贝相关指令包括:case 0xA5: movsd

能够将其中指定的污点数据所拷贝到的地方进行准确记录。上例中标记0x12ff20之后的4字节为污点,经过0x401000-0x4010bf整个函数,被传播的地址有3处:

根据检查,无误。

其中有一处寄存器被传播:

此时ebx指向12ff20,因此被传播。

注意:之后的al的操作被用作比较:。这里污点将影响指令流的逻辑。需要进一步分析。

1.2关键问题:

1、调试进程和被调试进程的关系问题;

2

1.3下一步所需要做的工作:

问题1:对其他指令进行污点传播,现已处理9条指令,还有200多条指令。

问题2:除了对污点的增加,还需要考虑污点的消失;

问题3:调试器中,污点传播的线程相关问题;

问题4:对标志位的影响问题;

问题5:解决段寄存器的问题;

高级问题:

问题1:污点传播策略问题,如一级传播策略,多级污点传播策略。设计与实现。

问题2:污点之间的约束关系问题;

问题3、对于大的商业程序的可行性问题;

问题4:污点标记数据结构的优化问题;

PrivateScope的参考:

1、对指令的处理

2、函数级的处理

3、约束关系的处理问题

需要做的,将污点传播进行应用。

Temu的参考:

1temu也可以通过hook readfile来实现污点标记,利用temu本身的污点传播功能,已经初步实现。但标记的是物理地址。打印出来后如图:

问题:

1、 标记了4个字节,为什么bitmap只有一位是1

2、 传播过程对哪些指令进行了处理?


2Temu污点传播过程和vdt污点传播过程的比较:

Temu的污点传播过程见附件《temu传播记录》,(o:\xqxbak\bitblaze\污点分析附件\

调试器的污点传播过程见附件《vdt传播记录》,(o:\xqxbak\bitblaze\污点分析附件\

分析中可见:

一致性:每次污点增加的地方一致。

不一致性1temu中有污点从3个增加到4个,又减少到3个的过程,而vdt中没有。记录如下:

猜测1)在cmp al , 0x41后增加,temu对控制流进行了污点传播?

2)增加的污点数据中增加了一个0x63,在第41位,与bitmap相符,可能是在某个地方操作了物理内存,而应用层无法感知???

不一致性2vdt传播记录中有将第一个污点消除,而temu中没有。实验证明,第一个污点确实别消除,覆盖。如记录:

猜测temu中是否没有设计将污点消除???

问题1temu中污点设置的是4个字节,为何bitmap表示为0x 100000000

问题2:如何通过eip知道在哪个函数中?

本文来源:https://www.2haoxitong.net/k/doc/7e33741d227916888486d7eb.html

《1 - 污点分析.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式