首页
社区
课程
招聘
[讨论]漏洞分析的那些事儿(2012.08.05更新)
发表于: 2011-11-2 22:16 38700

[讨论]漏洞分析的那些事儿(2012.08.05更新)

2011-11-2 22:16
38700

题目:漏洞分析的那些事儿

作者:仙果

题记:忙了很长一段时间,也没有出任何成果,感觉自己正处于一个瓶颈期,该有的基础没有打牢,而需要研究的东西太多,自己感兴趣的方面也特别多,多而繁杂,
没有主线是目前最好的写照,所以很难得能够静下心来写点东西。一直在提醒自己要把这篇文章写出来,特别是最近每天都在提醒自己要写要写一定要写,这是一种很煎熬的感觉,不得不写这就是我现在的状态。
也许这是作为一个文科生的悲哀,一定要把这个完成。
      本文会是一篇经验和漏洞分析资源的整合,方便在漏洞分析方面没有入门的同学和朋友。有问题大家一起讨论,衷心希望在本版块大家都能够找到需要的知识和解答。
      文章会不定期更新,大家想知道什么方面的知识也可以跟帖提出,我会尽量解答,其他的朋友也会给你解答的。

目录:
一   漏洞分析方面的资源
二   漏洞分析的准备工作
0x1   样本获取
0x2   环境搭建
0x3   工具
三   漏洞分析的测试阶段
四   漏洞的分析阶段
五   其他方面的工作

一  漏洞分析方面的资源
     说到资源,看雪论坛本身就是一个很好的资源,很多志同道合的朋友在这里讨论学习,我的很多知识都是在这里学习到的。遇到了不懂的地方,可以在这里进行讨论,总有一个人会回答你的问题,平时你也可以解答别人提出的问题,大家共同进步。
     一个很好的资源就是看雪安全文档库,上面集中了很多人的心血都是非常精辟的文章,平时没事了多去翻翻总是有心中一亮的感觉。
     看雪软件安全文档库(http://kssd.pediy.com)
     需要从书本上学习的话,有几本书可以推荐下
     《0day安全:软件漏洞分析技术》:链接是新版,比08年的第一版要丰富了很多,是国内首屈一指的全面讲解漏洞分析各个方面的书。强烈推荐。
     《加密与解密(第三版) 》:书我已经不用再介绍,除了算法和.net加密解密部分,基本翻完了的。
     其他的资源大家可以慢慢的搜集,比较常用到的资源,可以用来做参考书的就以上这些了,如果能把以上关于漏洞的知识完全弄明白的话,你就会成为一个非常厉害的高手。
      说一些题外话,全当我在梦呓也可以。漏洞分析是一个很驳杂的学科(我把它看成一门学科),所以想要把漏洞分析做好,
需要掌握的知识有很多。汇编是基础,虽不要求能用汇编写出一个大型程序,但基本汇编要领和体系结构还是需要熟练掌握。C/C++语言基本,
懂得C/C++的编程,对漏洞分析方面的帮助会特别大,很多程序都是C/C++编写而成,C/C++类,虚函数,指针/引用 和数据结构都是容易触发漏洞的脆弱点,
对于理解程序处理流程进而逆向出高级代码有很大的帮助,自己最最欠缺的是这方面的知识和技能。
其他面向对象的高级编程语言/脚本,其中包括Perl,Python等等,对于写POC测试代码会非常有帮助。
      上面提到做漏洞分析最好具备的基础,其他方面比如操作系统架构,内存分配释放,进程的相关知识,都是需要学习的。如果分析flash的漏洞就需要对ActionScript 3代码进行学习,
了解AVM2虚拟机的相关架构,JAVA方面的漏洞也是如此。更不用说现在比较流行的移动平台,需要对ARM汇编学习,移动平台下的调试也需要学习。
      需要学习的东西很多,而一个人的精力有限,在这里也向大家请教如何更有效的学习。我没有达到上述的要求,这是自己的目标。即使你跟我一样没有任何基础也不要灰心,只要努力就能进入漏洞分析的大门。
自己下阶段的目标是学习C/C++的类和虚函数,到时候也会在这里和大家进行讨论。

二   漏洞分析的准备工作
0x1   样本获取
       若要分析一个漏洞,首先就要有漏洞样本,而样本从何而来,总体来说有以下几个渠道:
0x1.1
       http://www.exploit-db.com:非常出名的漏洞公布站点,新的漏洞基本都可以在这里找到,漏洞类型也比较丰富,不光有二进制漏洞,还有其他类型如SQL注入。
经常有些文章很不错英语比较好的同学可以关注下。国内类似的站点有乌云,Sebug.net,还有就是一些大牛的博客了,经常会更新一些漏洞信息。
0x1.2
        Metasploit:这个自不必多说,免费版是非常好的漏洞测试和利用工具,我们可以拿来提取和分析样本,更新也是非常的快。ShellCode也可以从Metasploit提取而不用自己写。
Exploit-db网站上的很多样本示例都是Metasploit的Ruby代码。
0x1.3
        朋友交流:这个是很私下的事情,比如某A大牛发现了一个软件的BUG,但是无法确定能否利用,于是就发给了B大牛,共同研究讨论。这种渠道很难得,如果你有这么样的朋友,
请珍惜吧。呵呵。
0x1.4
        地下交易:当无法从正常渠道拿到漏洞样本的时候,地下交易就有了市场,恐怕也是国内网络安全的一个趋势,并不对这种方式做任何评论。从中确实能够拿到漏洞样本来分析,过一段时间以后地下交易的漏洞样本就会公开,可供拿来分析了。
还有些就是只限于某个圈子,圈子外的人是拿不到样本的,也就无从分析。
0x1.5
     其他:这里的其他主要包括挖漏洞和某些抓漏洞。
挖漏洞称为FUZZING,有很多方法,最基本的就是二进制FUZZING,循环字节替换,很笨拙但是却很有效,理论上可以找到所有的漏洞,只要你构造的FUZZ样本能覆盖到所有的路径。当你FUZZING时发现一个崩溃的样本就可以进行分析,
这时你就找到了软件的某个脆弱点,即使不能成功利用,也是非常有成就感的一个事情,证明这时软件编写者未能完全考虑到的情况被你发现。
抓漏洞是一个技术活,搭建好蜜罐就可以开始抓了,据说很多大公司都有自己的蜘蛛爬虫在网络上不间断的分析网站链接,一旦有新的漏洞在网络上利用传开,很快就可以被蜘蛛爬虫发现并记录下来。
据说很多0Day漏洞就是这么被发现的。通过蜘蛛爬虫得到漏洞样本后就可以进行分析了,全是体力活。

0x2   环境搭建
      在测试环境搭建方面,推荐大家使用虚拟机,包括VMware Workstation ,Virtual BOX ,Virtual PC 等虚拟化工具。其中最出名的当属VMware Workstation,性能和易用性都不错,当开多个虚拟系统的时候占用的主机内存会很高,所以主机的性能越高越好,内存越大越好。
    特别需要注意的是某些漏洞在主机与虚拟机中的情况并不一致,这种情况特别是在RPC相关的漏洞中特别明显,如果想要做到稳定利用,最好做到主机和虚拟机都进行同样的测试并以主机为准。
操作系统安装在虚拟机中,接下来就应该准备测试的软件环境了。
   进行测试的软件往往发布有多个版本,因此需要明确测试软件的版本。比如Adobe Reader 从版本6至最新的10.1那么多,在确定漏洞所能针对的版本以后,就需要选择某个特定版本进行安装测试,例如选择Adobe Reader 9.0。某个漏洞只能针对Adobe Reader 8.2,那也只能选择对应版本。
若不知道漏洞具体能够针对的软件版本,则使用二分法进行漏洞确认。最好的情况是查看十六进制数据就能够确认漏洞,这需要长时间的经验积累过程。
    某些特殊的软件需要组合起来才能触发漏洞,因此在漏洞分析之前要确定漏洞成功触发所需要的软件环境,并依此搭建。

0x3   工具
使用工具的目的是为了能够更容易更快速的分析漏洞的成因和触发漏洞的详细过程。工具的选择也是因人而异,大牛可以通过IDA的静态代码就可以找到漏洞触发的本质所在,我等小菜就必须通过动态调试+静态分析+查找资料来分析漏洞。
具体来说有以下几个工具。
IDA:相信每个对反汇编了解的朋友都知道这个工具,据说最新版本为6.2但下载不到,能下载的版本为6.1界面很友好,掌握好IDA这个工具还是要花费一番力气的。
推荐一本书《IDA Pro 权威指南》,可以买本实体书,随时翻看。

Windbg:微软自己的动态调试工具,足够强大,具体使用方法网上已经有很多教程,大家可以自行翻看。
OD:破解和分析漏洞的必备,很多方面都用得到的。很多实用的脚本,非常强大。因为我分析漏洞用的是Windbg,OD使用的较少,很多用法都忘记的差不多了,基本的操作其实与Windbg一样的,反之也是成立的,只要学会其中一种即可,2中工具都能够精通当然最好。
SoftIce:使用此工具的朋友据说已经不错,但确实非常强大,偶尔还是会用到,容易引起蓝屏和死机。
Immunity Debugger:新兴的动态调试工具,界面与OD类似。操作也类似,据说是购买了OD的源码,强大之处是可以编写Python脚本辅助分析,网上也有很多现成的脚本,在漏洞利用方面比较好,可以很容易编写ROP代码和确认漏洞可否利用。
其他工具:还有很多工具没有介绍到,需要具体漏洞具体分析,如RPC漏洞就需要网络数据嗅探工具,辅助分析发包。包括Perl和ruby都是可能用到的工具。

三   漏洞分析的测试阶段
        上述的一些环境和工具准备好以后,现在就可以开始进行漏洞测试,你可能会有这样的疑问:为什么不直接到漏洞分析,偏偏还要走到这一步,不是多此一举吗?答案是显而易见的,漏洞测试也是非常的关键,这里我进行解释一下,首先当拿到一个样本时,你不能确定它是否就是漏洞,
如果是漏洞,利用形式是什么?有无便捷的漏洞分析方法?如果不是漏洞,是否是软件安装没有对应漏洞可以作用的版本等等一系列问题。进行漏洞测试时最好把上述的问题都能解决掉,这样漏洞触发原理分析时才会更有针对性也会节省很多的精力在判断漏洞与否方面。以下我简述一些需要
特别注意的情况,当然也比较片面,大家可以举一反三,不足之处见谅。
0x1 需要注意的情况
        主要有三个方面:软件配置、网络状态、操作系统准备
0x1.1        软件配置
        之所以提出这个问题是因为某些软件在默认安装的状态下是不会触发某些漏洞,配置上出现了问题才导致漏洞的产生;有些软件默认状态下存在漏洞,但修改了默认配置,有些漏洞就不会触发,这样的情况就会导致漏洞测试的不完整。下面我会举例子来说明这个问题。
例如CVE-2009-4324编号Adobe Reader 的漏洞,原型如下:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (87)
雪    币: 959
活跃值: (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持版主
2011-11-2 22:31
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
3
文科生呀,佩服,真是没想到。
2011-11-2 22:58
0
雪    币: 371
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hyp
4
期待楼主持续更新
2011-11-2 23:06
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
5
明天继续更新吧
2011-11-2 23:53
0
雪    币: 247
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
等待仙果同学更新
2011-11-3 00:00
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
7
哦,仙果的心得肯定要顶:)
2011-11-3 01:32
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我也是文科…擦
2011-11-3 07:58
0
雪    币: 1881
活跃值: (107)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
期待楼主更新啊~觉得方向有些明了了~
2011-11-3 08:35
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
严重期待中!!
2011-11-3 08:41
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
强烈期待楼主的大作
关注+studying
2011-11-3 08:53
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
12
观望中。等待更新
2011-11-3 08:58
0
雪    币: 678
活跃值: (101)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
13
《Exploit编写系列教程》也应该推荐下。顶顶更健康。
2011-11-3 09:07
0
雪    币: 94
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
也来膜拜一下,等待更新
2011-11-3 09:09
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
15
我原本是想加入进去的,文章是针对漏洞利用的,不太方便放到这里来。见谅,呵呵
2011-11-3 09:17
0
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
16
MARK
2011-11-3 09:17
0
雪    币: 6
活跃值: (1141)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
等待lz更新
2011-11-3 09:19
0
雪    币: 139
活跃值: (227)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
向版主学习,期待更新
2011-11-3 10:19
0
雪    币: 105
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
马克来的  还有内容要长
2011-11-3 10:36
0
雪    币: 173
活跃值: (132)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
20
坐等更新,呵呵
2011-11-3 10:45
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
21
明天更新环境搭建和工具
2011-11-3 22:39
0
雪    币: 393
活跃值: (150)
能力值: (RANK:110 )
在线值:
发帖
回帖
粉丝
22
仙果大牛,我建议你把提纲列好,然后请几个人每个人写一个方面。辅以实例分析,这样形成一个系列教程。比泛泛说说效果要好的多。

比如http://blog.sina.com.cn/s/blog_61bd83dc0100phos.html
2011-11-4 08:11
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
23
坐等果果下文……
2011-11-4 08:21
0
雪    币: 199
活跃值: (17)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
24
长期支持!!!
2011-11-4 08:36
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
25
有提纲,你说的我考虑过,很多东西书上都有,我这里把它提出来,如何提取样本自己去实践。这是我的想法,你的建议我再思考下。。。
谢谢
2011-11-4 09:55
0
游客
登录 | 注册 方可回帖
返回
//