首页
社区
课程
招聘
[翻译]Windows Exploit开发系列教程第一部分: Introduction to Exploit Development
发表于: 2015-12-31 21:25 18855

[翻译]Windows Exploit开发系列教程第一部分: Introduction to Exploit Development

2015-12-31 21:25
18855
译者:Netfairy

【翻译】Windows Exploit开发系列教程第二部分:Saved Return Pointer Overflows
http://bbs.pediy.com/showthread.php?t=206858
【翻译】Windows Exploit开发系列教程第三部分:Structured Exception Handler (SEH)
http://bbs.pediy.com/showthread.php?t=206859
【翻译】Windows Exploit开发系列教程第四部分:Egg Hunters
http://bbs.pediy.com/showthread.php?t=206860
【翻译】Windows Exploit开发系列教程第五部分:Unicode 0x00410041
http://bbs.pediy.com/showthread.php?p=1410166#post1410166
【翻译】Windows Exploit开发系列教程第六部分:WIN32 shellcode编写
http://bbs.pediy.com/showthread.php?t=207096
翻译】Windows Exploit开发系列教程第七部分:返回导向编程(ROP)
http://bbs.pediy.com/showthread.php?t=207144
【翻译】Windows Exploit开发系列教程第八部分:堆喷射第一节【覆写EIP】
http://bbs.pediy.com/showthread.php?p=1411614&posted=1#post1411614

这是我个人利用课余时间翻译的翻译的不好的请别见怪. 其实Corelan Team系列教程已经很好了, 我翻译这个系列教程一来锻炼自己的英语, 同时也是给初学者多一个选择参考. 在我看来这个教程比Corelan Team系列教程系列教程更偏向实战,它的每一节都用一个有漏洞的程序讲解,尤其是堆喷射那两节,Corelan Team的是理论,,配上这系列的实战就更好了。废话不多说,上!

前言
漏洞利用系列教程的第一部分. 这部分涉及漏洞利用最基本的内容, 比如漏洞利用需要什, 漏洞利用基本概念, 还有如果要成功执行shellcode, 我们需要记住的几件事. 本系列教程不涉及如何发现软件的bug, 相反, 每一部分都有一个有漏洞的程序, 通过特定的技术, 可以成功利用它.我会在适当的时候介绍从’溢出覆盖返回地址’ 到 ’ROP(返回导向编程)’等一系列技术. 值得一提的是, 这个教程不会涉及所有漏洞利用所有的细节;通过(1)能节约我一些时间(2)能帮助热爱学习的参与进来

这里我尤其要感谢 Offensive Security and Corelan, 谢谢你们使我染上这神奇而又痛苦的毒瘾.

(1)我们需要什么
Immunity Debugger – 下载
Immunity Debugger类似于Ollydbg, 但是它支持python, 有助于我们在漏洞利用中运行一些脚本. 它完全免费;点上面 ‘下载’ 链接然后填上一些虚假的信息就可以下载到Immunity Debugger.
Mona.py – 下载
Mona是一个很好的工具, 它的很多功能使得漏洞利用更快速和稳定. 当然我不会介绍所有的参数, 在教程接下来的部分我们将会用到它们. 下载然后把它放到Immunity’s PyCommands文件夹.
Pvefindaddr.py – 下载
Pvefindaddr是mona’s的老版本. 我知道它有点过时了, 只是它有一些有用的功能没有集成到mona中. 下载然后把它放到Immunity’s PyCommands文件夹.
Metasploit Framework –下载
我们将经常使用Metasploit 框架,最重要的是我们能从这个msf得到漏洞利用的shellcode,还有, 我们需要一个接收任何连接的平台, 通过反连进行漏洞利用. 我建议你用Backtrack, 因为它集成了我们需要的所有东西, 并且你可以随意设置metasplot, 使它工作在你认为合适的方式.
虚拟机
基本上会选择VirtualBox(免费)或者Vmware(收费). 如果有条件, 我建议用Vmware; 聪明的人可能不需要付钱;)). 与之配套, 我们需要装上几个32位的操作系统(最常用的是Windows xp sp3 和 Windows 7).

(2)溢出
对于这个教程的, 我认为该简单的要讲的简单,反义也是. 一般来说, 如果我们想写一个漏洞利用程序, 首先需要找到一个有溢出漏洞的程序.通常, 这些bug会是缓冲区溢出(内存被比它大的数据覆盖)或者堆溢出(通常是超长数据超出堆得范围). 溢出发生时,我们需要知道两件事;(1)需要覆写eip的缓冲区(当前指令指针), (2)一个指向我们缓冲区的寄存器. 下面是x86 cpu寄存器列表和它们的功能. 记住, 任何一个寄存器都可以指向我们的缓冲区(shellcode).
EAX –用于算术运算和累加, 保存算术运算结果和函数的返回值
EBX – 基地址寄存器, 指向DS段. 用于保存程序的基地址.
ECX - 计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。
EDX –通用寄存器. 也用于I/O操作. 扩展EAX到64位
ESI - 源标索引寄存器. 指向DS指向的数据段. 在字符串或数组操作时用作偏移. 是读取数据的源地址
EDI - 目标索引寄存器. 指向ES指向的数据段.  在字符串或数组操作时用作偏移. 保存字符串复制的目的地址
EBP –基址指针.指向栈上的数据. 指向当前栈帧底部. 用于引用局部变量.
ESP –堆栈指针.指向当前栈帧顶部. 用于引用局部变量
EIP – 指令指针(保存将要被执行指令的地址)

(3)它如何工作?

基本上
(1)  我们有一个缓冲区溢出程序(通过超长字符串)
(2)  这个字符串会覆盖eip, 它的地址保存在某个寄存器
(3)  找到一个指向这个寄存器的指针
(4)  用这个指针覆盖原来的eip
(5)  当程序返回的时候最终会跳去执行我们的指令
(6)  把shellcode放在某个寄存器所指向的地址
实际上我们劫持了程序, 把eip指向我们可控的区域. 能做到这, 我们就可以远程执行任意代码. 这似乎有点简单了,但这就是漏洞利用的基本思想.

附上原文:http://www.fuzzysecurity.com/tutorials/expDev/1.html

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 4
支持
分享
最新回复 (12)
雪    币: 3723
活跃值: (594)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
还是熟悉的头像,还是牛X的帖子.
洋文还是必须要熟练的,现在找中文的资料太难找了.
2015-12-31 21:28
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
3
支持一下,这个系列以前有看过
2015-12-31 21:44
0
雪    币: 44229
活跃值: (19950)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
更新了一楼,把其他3篇的链接放上来了。这个精华是针对这个系列的,其他3篇就只设优秀了。
2015-12-31 22:21
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
5
我实在是懒得翻译,喜欢原汁原味。侵犯了你的肖像权不介意吧?
2015-12-31 22:54
0
雪    币: 191
活跃值: (848)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
6
E文好的都懒得看翻译应该是你比我先用这个头像,所以我想请你别介意哈
2015-12-31 22:59
0
雪    币: 60
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上两位大神 好逗~
2016-1-1 10:26
0
雪    币: 1491
活跃值: (975)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
8
支持!
看到了不错的文章
2016-1-1 11:22
0
雪    币: 453
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
辛苦了 好文章  期待后续
2016-1-1 12:50
0
雪    币: 1176
活跃值: (1234)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
10
厉害 前来支持
2016-1-2 08:14
0
雪    币: 251
活跃值: (302)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
感谢分享!
2016-1-2 10:40
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
感谢分享
2017-3-27 22:10
0
雪    币: 4
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
请修正几处下载地址, 
mona  -  https://github.com/corelan/mona
pvefindaddr-  https://www.corelan.be/wp-content/downloads/freetools/pvefindaddr/v173/pvefindaddr.py
2018-5-17 16:36
1
游客
登录 | 注册 方可回帖
返回
//