​《0day安全》——漏洞分析技术概述

漏洞分析方法

漏洞分析是指在代码中迅速定位漏洞,弄清攻击原理,准确地估计潜在的漏洞利用方式和风险等级的过程

常用分析方法:

动态调试:通过od等,从栈中一层层地回溯出发生溢出或其他漏洞的函数

静态分析:ida,通常辅助动态调试

指令追踪技术:现正常运行程序,记录下所有执行过的指令序列,再触发漏洞,记录攻击状况下程序执行过的指令序列,比较这两轮执行过的指令,重点逆向表现不同的代码区,并动态调试跟踪这部分代码,从而迅速定位漏洞函数

补丁比较:一些经验丰富的黑客,在补丁发布当天就可以写出exploit

运动中寻求突破:调试技术

漏洞分析与源码调试的不同点:

blob.png

断点技巧

畸形RetAddr断点

就是将POC中溢出覆盖的函数返回地址修改为一个非法地址(如0xffffffff),从而触发一个非法的内存访问错误,使得调试器中断下来,从栈中找到前一次函数调用,往往就是触发漏洞的函数

条件断点

就是一个带有条件表达式的int3断点

如bp CreateFileW UNICODE[[ESP+4]] = "c:\\test.txt"

blob.png

可看到颜色都不一样

blob.png

我们打开c盘我们新建的test.txt看看

blob.png

接下来看看记录断点,在刚才的断点处shift +f4

blob.png

上面解码选错了

blob.png

在选一下就可以了

blob.png

blob.png消息断点

这是调试UI程序的常用技巧

打开calc.exe,f9运行,看到windows窗口

blob.png

但这里没显示0到F的标题啊

上面是win7,吓得我打开了xp

清晰极了

blob.png

直接在上面的下断点,都不能用了

我们在TranslateMessage过程中下断点

bp TranslateMessage MSG==WM_LBUTTONUP

还是在xp耍好了,按下1时

blob.png

回到程序领空,看到消息分发函数

blob.png

我们f7进入到DispatchMessageW,之后在内存窗口f2 calc的代码段下断点

blob.png

f9运行,就暂停在下面这了

blob.png

那就可以借助ida分析这个窗口过程处理函数了

blob.png

内存断点

有时候我们更关心是内存的读取和访问操作,这就用到内存断点了

blob.png

一次性断点,在内存窗口处

blob.png

硬件断点

4个调试寄存器用来保存断点的地址,DR7设定状态,应该是执行,读取还是写入什么的

执行硬件断点

blob.png

读取或写入硬件断点

blob.png

回溯思路

一般都是通过栈回溯

alt+k就可以打开函数调用栈窗口

blob.png

还可以加载符号

blob.png

blob.png

blob.png

用“白眉”在PE中漫步

本来装了py2.7,看看装2.4行不行

装有点问题,装好再写

补丁比较

打赏
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

发表评论