|
漏洞分析是指在代码中迅速定位漏洞,弄清攻击原理,准确地估计潜在的漏洞利用方式和风险等级的过程。
扎实的漏洞利用技术是进行漏洞分析的基础,否则很可能将不可利用的bug判断成漏洞,或者将可以允许远程控制的高危漏洞误判成D.O.S型的中级漏洞。
一般情况下,漏洞发现者需要向安全专家提供一段能够重现漏洞的代码,这段代码被称作POC(Proof of Concept)。
POC可以是很多种形式,只要能够触发漏洞就行。例如,它可能是一个能够引起程序崩溃的畸形文件,也可能是一个Metasploit的exploit模块。根据POC的不同,漏洞分析的难度也会有所不同——按照MSF标准公布出来的exploit显然要比几个二进制形式的数据包容易分析得多。
在拿到POC之后,安全专家需要部署实验环境,重现攻击过程,并进行分析调试,以确定到底是哪个函数、哪一行代码出的问题,并指导开发人员制作补丁。
安全专家常用的分析方法包括:
(1)动态调试:使用OllyDbg等调试工具,跟踪软件,从栈中一层层地回溯出发生溢出的漏洞函数。
(2)静态分析:使用IDA等逆向工具,获得程序的“全局观”和高质量的反汇编代码,辅助动态调试。
(3)指令追踪技术:我们可以先正常运行程序,记录下所有执行过的指令序列;然后触发漏洞,记录下攻击状况下程序执行过的指令序列;最后比较这两轮执行过的指令,重点逆向两次执行中表现不同的代码区,并动态调试和跟踪这部分代码,从而迅速定位漏洞函数。
除了安全专家需要分析漏洞之外,黑客也经常需要分析漏洞。比如当微软公布安全补丁之后,全世界的用户不可能全都立刻patch,因此,在补丁公布后一周左右的时间内,其所修复的漏洞在一定范围内仍然是可利用的。
安全补丁一旦公布,其中的漏洞信息也就相当于随之一同公布了。黑客可以通过比较分析Patch前后的PE文件而得到漏洞的位置,经验丰富的黑客甚至可以在补丁发布当天就写出exploit。
鉴于这种攻击的价值,补丁比较也是漏洞分析方法中重要的一种,不同的是,这种分析方法多被攻击者采用。
|
【收藏】【打印】【进入论坛】 |
|
|
|
|
|
|
|