免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > 程序动态分析与软件漏洞利用(4)

程序动态分析与软件漏洞利用(4)

时间:2012-02-14 18:10来源:未知 整理:寂涯网络 点击:


语义:%esp <- %esp-4 (substraction) ss:[%esp] <-%eax (move)
如前所述,这是经中间语言处理的。在此我们需要追踪基本的内存区域,以及它们的大小和 寄存器名称(保持按位信息_这相对于字节级【21】可更好地避免误报,但收集的数据量 极易发生数据爆炸)。
布尔操作也存在一种特殊情况,就是当它们对相同数据或者固定值进行操作时可能会生 成不同的结果,比如相同的污染数据进行异或操作将返回未污染的信息(比如与0操作等 等…),正如前面解释的。一些字符串指令也可能被污染(一些整数溢出的发生可以是由数 据大小计算错误导致的)。关于字符串的污染操作将在后续的“从崩溃到利用” 一节中讲到。 污染数据可以在系统中存在很长时间,进而又导致其它问题的出现(若要删除追踪数据,就 得要求该数据是接收一个不可控制值的,或者已经以某种方式被释放了)。在数据追踪过程 中的指令复杂度应该简明些,便于加速分析进度。
污点分析可能面临着各种挑战,比如可能会遇到缺乏某一特定文件格式或协议的源数据 等详细信息,因此对于构造可用的故口10^也是存在很大困难的,在此笔者使用了一种与众 不同的方法。这种方法在你重现崩溃事件后非常有用,这种方法就叫污点回溯分析。 污点回溯撕 ^.^JV
污点回溯分析是通常的数据流污点分析的逆向方法。基本的方法就是不采用获取所有的 输入数据,而是将它们标记为污点,并在程, 去追踪它们,而我们要做的就是追踪过程中可收集一些有用的信息,比如有影响作用的地址以及数值(后面可用于检测数据是复制到哪里,以及它是如何被影响到的)。注意:
參这是使用[汕8&插件来完成的。
參只支持基础x86指令集(因此不支持碰伙和SSE)。这就局限了某些情况下的分析, 并且只能在支持的指令集上进行扩充。由于此项目是开源的,所以希望有人可提交补 丁给笔者,以帮助改进。
參简化指令集使下一步操作更为轻松。
为了简化指令集,就需要处理一些特殊情况,比如以下指令:
參 CMPXCHG r/m32, r32 ->将EAX与r/m32进行比较,如果相等,则ZF被标记,同时 r32被加载进r/m32;否则清除ZF,并将r/m32加载进AL【17】 像这类指令需要一定条件才可被污染,攻击者可通过控制%6&1和r32来控制r/m32o 追踪过程中可生成文件以用于下一步的操作,该文件包含:
參指令的内存地址 參操作数 參依赖的源操作数
这里举个依赖操作数的例子,比如间接内存地址。它将创建一个数据流结构树,而在崩溃指
令中存在一个根(root)。分析步骤中接收的地址范围里包含有攻击者恶意构造的数据,然 后对其进行自动分析,以检测出哪些数据被恶意控制了。
參这是一个独立工具(位于同一项目文件中),并且拥有界面!
由于数据流在崩溃指令的树根中是有效的,因此分析过程只需在这一树中进行搜索,这个借 助8?3算法【18】(译注:狭度优先搜索)即可实现。下面看些代码例子:
1-) mov edi, 0x1234 dst=edi, src=0xl234
2-) mov eax, [OxABCD] dst=eax, src=ptr 0xABCD
 注意0xABCD是一个邪恶的地址
3-) lea ebx, [eax+ecx*8] dst=ebx, src=eax, srcdepl=ecx
4-) mov [edi], ebx dst=ptr 0x1234, src=ebx
5-) mov esi, [edi] dst=esi, src=ptr 0x1234, srcdepl=edi
6-) mov edx, [esi] 崩溃!!! 

树结构看起来如下:
6-) [esi]来自哪里?
5-) [6七]赋予68丨,6七来自哪里,并且[6七]存在何值 4-) [edi]接受从6匕乂传来的值,其中6七是在1-)中 3-) ebx来源于使用6&1和601的168指令 2-) eax接收一可被攻击者控制的数值 ...601已经超出代码内容范围了。
从程序崩溃到利用
笔者是使用Mircosoft Visual Studio 2008 GUI界面和命令行调试插件来编译项目的, 这里不要忘记安装调试器插件30&【19】。为了编译程序,可先进入源目录,然后用丫4此1 3如七0打开项目。&111可通过口^」6(^匕丨^进行编译,犯1可通过命令行实现:
參打开003提示符 •执行_^ 
Cmd. exe /k C:\WinDDK\7600.16385.0\bin\setenv.bat \ C:\WinDDK\7600.16385.0\ chk WNET
打开目录¥01-1^06^并执行:
setpaths. cmd
在某些系统可能需要打开makefile文件(仅打开和关闭)
edit makefile
编译:
#将 bin\i386\vdt-tracer. dll 复制到 WinDBG 插件目录下。
附件中存在一个excel文件,是两年前我一朋友在搞取证分析时遇到的一个问题,当恢复 Excel电子数据表后,去打开它就会引起£工061崩溃,这一文件的名称就叫?几573^13。这 个问题在一年后被修复了。笔者并不打算在此讨论其具体的分析过程,但会说明如何通过工 具来分析它……

本页地址 http://www.jybase.net/biancheng/20120214772.html

百度搜索更多

谷歌搜索更多

顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com