首页
社区
课程
招聘
[原创]ProbeBypass攻击技术
发表于: 2009-10-29 22:37 20688

[原创]ProbeBypass攻击技术

2009-10-29 22:37
20688

本文介绍了一种方法,利用很多安全防御软件在进行用户态内存校验时的漏洞,对其保护系统进行攻击,达到绕过保护的目的。

这是安全防御软件对于用户态内存校验未能慎重处理而引发的恶果之一。去年10月我曾在对国内外绝大部分主动防御产品的系列漏洞文章中,揭示了同样由于对用户态内存校验不慎重,导致的一些本地内核模式拒绝访问漏洞的问题,这里我将介绍利用这类漏洞进行的攻击绕过方法,这个漏洞是我去年发现并在内部圈子做过一些讨论的,现在我将它公开出来。

本文会以Malware Defender最新版 2.4.1的实际存在的漏洞为例,来讲解这个攻击方法,但并不代表仅有这个安全软件存在漏洞,市面上大部分带防御驱动的安全产品都存在此漏洞。

很多安全防御软件在进行用户态内存的校验时,会使用 ProbeForRead函数,这个函数的源代码如下:

   if (Length != 0) {
        if (((ULONG_PTR)Address & (Alignment - 1)) != 0) {
            ExRaiseDatatypeMisalignment();

        } else if ((((ULONG_PTR)Address + Length) > (ULONG_PTR)MM_USER_PROBE_ADDRESS) ||
                   (((ULONG_PTR)Address + Length) < (ULONG_PTR)Address)) {

            *(volatile UCHAR * const)MM_USER_PROBE_ADDRESS = 0;
        }
    }
HookedNtCreateFile(....)

{

IncRefCnt(NT_CREATE_FILE_INDEX);

... //省略无关代码

__try

{

ProbeForRead(ObjectAttributes , sizeof(OBJECT_ATTRIBUTES) , 1);

ProbeForRead(ObjectAttributes->ObjectName , sizeof(UNICODE_STRING) , sizeof(WORD));

///省略无关代码

}

__except(EXCEPTION_EXECUTE_HANDLER)

{

bPassRequest = TRUE ;

}

if (bPassRequest)

{

///此处调用原始函数,放行操作

}

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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (40)
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
膜拜啊,楼主实在太强悍了。
得通知MD作者更新去了,还在用MD呢
2009-10-29 22:58
0
雪    币: 200
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
下载试用。有效,内流满面
2009-10-29 23:11
0
雪    币: 351
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
强大,学习。。
2009-10-29 23:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
很好很强力。。。膜拜楼主。。。。
2009-10-29 23:41
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
牛逼......学习了..
2009-10-30 00:19
0
雪    币: 205
活跃值: (12)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
不知道能用在什么地方
2009-10-30 00:57
0
雪    币: 276
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这才是我们愿意看到的美机0011,原理+代码+分析
赞一个。
2009-10-30 06:00
0
雪    币: 306
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
小学生路过,学习下。。。
2009-10-30 08:07
0
雪    币: 202
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
只能入来膜拜,,完全不明~~
2009-10-30 08:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
作者已经更新了此bug
2009-10-30 12:10
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
12
无法学习,只能膜拜!
2009-10-30 12:35
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
BUG是更新了,但是想法值得学习
2009-10-30 12:44
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
14
更新了也没用,想破随便破:

http://hi.baidu.com/mj0011/blog/item/9cc6932656459f1d8b82a150.html
2009-10-30 13:58
0
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
非常赞同。偶们菜鸟也可以演示一把了。
S大很勤奋的,看谁能扛到最后。
2009-10-30 15:47
0
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
MD已更新到2.4.3Final。真快啊。在虚拟机中测试了一下,已成功防御。
2009-10-30 15:57
0
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
17
作者可否给个http://www.debugman.com这个的邀请吗哈,可以的话发我油箱把
834858875@qq.com
谢谢哈
2009-10-30 16:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
更新到2.4.3了,修复了已知的bug
2009-10-30 16:06
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
这样也行。膜拜
2009-10-30 16:47
0
雪    币: 296
活跃值: (89)
能力值: ( LV15,RANK:340 )
在线值:
发帖
回帖
粉丝
20
很强大!字节对其引发的问题也能找到。
之前看到 MS08-066 : Catching and fixing a ProbeForRead / ProbeForWrite bypass 中谈到的那个 ProbeForRead / ProbeForWrite 0长度bypass已经认为够神奇的了,原来还能这样...
2009-10-30 20:43
0
雪    币: 34
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
给个网址~~
2009-10-30 21:31
0
雪    币: 34
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
看看~~~~
http://blogs.technet.com/srd/archive/2008/10/14/ms08-066-how-to-correctly-validate-and-capture-user-mode-data.aspx
2009-10-30 21:33
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
23
又破了,都告诉你了
http://hi.baidu.com/mj0011/blog/item/6e5a22faca402414a9d31121.html
2009-10-30 21:49
0
雪    币: 622
活跃值: (65)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
24
占楼学习。。。
2009-10-30 22:33
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
25
太强了,又发现个大牛博客
2009-10-31 04:44
0
游客
登录 | 注册 方可回帖
返回
//