首页
论坛
专栏
课程

[系统底层] [翻译]利用WPN与ROP绕过DEP保护机制

2010-8-27 15:10 24279

[系统底层] [翻译]利用WPN与ROP绕过DEP保护机制

2010-8-27 15:10
24279
作者:Sud0
译者:riusksk (泉哥:http://riusksk.blogbus.com)

前言
对于本教程,假设读者具备以下条件:
1. 在电脑拥有各项所需工具的实验环境;
2. 具备编写栈溢出利用程序的基础;
3. 掌握SEH概念及利用SEH编写exploit的基础知识。

基础概念
DEP(Data Execution Prevention):防止一些内存位置执行代码的一种保护机制,特别是堆栈,因此在windows中利用栈返回技术攻击溢出的方法已不再适用了。
ROP(Return Oriented Programming):连续调用程序代码本身的内存地址,以逐步地创建一连串欲执行的指令序列。
WPM(Write Process Memory):利用微软在kernel32.dll中定义的函数比如:WriteProcess Memory函数可将数据写入到指定进程的内存中。但整个内存区域必须是可访问的,否则将操作失败。函数原型:
WriteProcessMemory: procedure
(
        hProcess: dword;
        // Handle to the process whose memory is to be modified
        var lpBaseAddress: var;
        // Pointer to the base address in the specified process to which data will be written
        var lpBuffer: var;
        // Pointer to the buffer that contains data to be written into the address space of the specified process
        nSize: dword;
        // Specifies the requested number of bytes to write into the specified process
        var lpNumberOfBytesWritten: dword
        // Pointer to a variable that receives the number of bytes transferred.
);

目标
我们的目标是利用ROP技术来调用WPM,以便将shellcode写入地址0x7C8022CF,这样当从ntdll.ZwWriteVirtualMemory函数中返回时可正确地执行shellcode。
……
具体内容参见附件:
利用WPN与ROP绕过DEP保护机制.doc

2020安全开发者峰会(2020 SDC)议题征集 中国.北京 7月!

上传的附件:
最新回复 (24)
riusksk 41 2010-8-27 15:13
2
0
冒似发错版块了,麻烦版主移到翻译版块,谢谢!
skypismire 1 2010-8-27 15:27
3
0
我顶
hyq 2010-8-27 18:29
4
0
不错,学习了
sgogriu 2010-8-30 12:09
5
0
好文章,我顶!!!
dragonltx 6 2010-8-30 18:56
6
0
顶!泉哥能不能推荐几个英文技术文章?我也想翻译些文章学习下!
riusksk 41 2010-8-30 20:00
7
0
BlackHat USA 2010:
http://blackhat.com/html/bh-us-10/bh-us-10-archives.html
dragonltx 6 2010-8-31 16:08
8
0
谢谢泉哥!
dragonltx 6 2010-9-3 22:07
9
0
发现上面的文章都很高深!刚开始翻译,翻译起来有点困难!泉哥还有没有其他的网站推荐下?
zphdebug 1 2010-9-4 08:50
10
0
顶一个,谢谢lz
webwizard 2010-9-28 05:26
11
0
学习了。继续拜读!
jerrynpc 2010-9-29 09:01
12
0
该死泉哥整天翻译这些,搞点实际的
riusksk 41 2010-9-29 11:22
13
0
实际的自己搞就行了!!!
不过老外出的exploit基本都不能在我们的系统上运行,都得自己重新写exploit,但方法基本都那样了,自己编写自已系统上的可用exploit 就行了,这个月我也基本都在写exploit。
哥还没见你搞点东西让俺们这些小菜学习呢,总是扔张图,搞得那么神秘!!!!!!!!
轩辕小聪 7 2010-9-30 00:25
14
0
ROP搞起来要死比较多脑细胞
riusksk 41 2010-9-30 09:22
15
0
那些地址不好找啊,还好出了个"!pvefindaddr rop nonull"可以辅助查找,不然死得更多!
寻找并构造那些指令,真的可以把大脑搞到死循环了
仙果 19 2010-10-10 18:16
16
0
构造参数更难啊,看起来就像是在看天书
郁闷的很
imbadyc 2010-10-11 17:00
17
0
好文章,学习了
可见光 2010-10-12 00:10
18
0
r大,为啥"!pvefindaddr rop 在我这里一运行就假死状态~ 系统配置低? 你们有没有碰到类似情况
riusksk 41 2010-10-12 12:26
19
0
不是假死,它要搜索整个内存数据,需要较长时间,你放着就行,搜索完成后直接查看日志(按菜单上的"L"图标)就可以,日志中会给出提示,它会把结果保存在rop.txt文件中
lixupeng 2010-10-13 10:06
20
0
收下了
xlyvip 2010-10-13 23:23
21
0
关于ShellCode的布局:
第一次:
my $buffer = “A” x 4436 . “\x2F\x37\x01\x10” . “A” x 10000;
第二次:
my $buffer = “A” x 280 . “\x01\x00\x00\x00” . “B” x (4436 – 280) . “\x2F\x37\x01\x10” . “A” x 10000;

第二次是不是应该是
my $buffer = “A” x 280 . “\x01\x00\x00\x00” . “B” x (4436 – 280 - 4) . “\x2F\x37\x01\x10” . “A” x 10000;
cgfxiaohai 2010-10-22 10:40
22
0
好文章,好思路,谢了!
stefzhl 2011-1-7 10:09
23
0
好文章,收藏了。
fenggui 2011-2-26 23:52
24
0
谢谢,下载了,准备看看
Macinsh 2011-3-1 22:11
25
0
学习下,顺便看看有多少钱
游客
登录 | 注册 方可回帖
返回