首页
社区
课程
招聘
[原创]Windows 所有程序崩溃漏洞
发表于: 2013-5-6 01:16 14831

[原创]Windows 所有程序崩溃漏洞

2013-5-6 01:16
14831
收藏
免费 6
支持
分享
最新回复 (66)
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
26
那你当初也是因为程序的报错无意中发现的?
而且我attact了由od载入的kd,od并无捕获到异常,是已经被kd抛出了吗
2013-5-7 12:49
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
27
不知道你所说的kd是指什么意思?
如果OD接管异常优先级较低的话.
你就试试加入VEH.

AddVectoredExceptionHandler Function

Registers a vectored exception handler.

PVOID WINAPI AddVectoredExceptionHandler(
  __in          ULONG FirstHandler,
  __in          PVECTORED_EXCEPTION_HANDLER VectoredHandler
);

Parameters
FirstHandler
The order in which the handler should be called. If the parameter is nonzero, the handler is the first handler to be called. If the parameter is zero, the handler is the last handler to be called.

VectoredHandler
A pointer to the handler to be called. For more information, see VectoredHandler.
2013-5-7 13:48
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
28
是的,我的是无意中发现的.

你说你是发现IE的崩溃问题.
那你不能只在你电脑上测试,
你首先要找一个同样平台的,裸机(没装其他无关的软件)来测试,
如果仍然能重现崩溃的现象,你才能确定他是真的BUG.

否则的话,有可能只是你现在的环境,或者其他的软件 冲突 排斥 或者一些不可预料的原因,
导致的 崩溃.

所以,第一时间,发现程序崩溃了,不能说明什么的.要换个同样平台的裸机测试,才能确定.
2013-5-7 13:52
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
29
kd即是Kernel Detective,每次异常它先提示异常
至于裸机,我只记得在以前的电脑和系统有过这样情况,win7下用IE8没事(XP居然装新IE会失败),断定IE6的问题

做了新手能做的,在MsgIndirectW下了断(异常时会触发这个消息框),并追踪到了调用消息框的异常过程,
每加载一次网页,这个过程会调用几次,最后一次第二个参数会不符合并je去通知异常。

我最多能找到该地方的模块名,却始终得不到函数名和开头(push ebp),更别说原因了,我是不断通过eip得到"上级"并下断,只是似乎永远都没到完。
高手都会怎么处理这种异常呢?
2013-5-7 17:21
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
30
每浏览到看雪高手的那些文章,熟练用着调试器,哪里不对断哪里
从r3到r0,kd到xt,asm到msdn
我总有种自卑的感觉

我最多就可以弄个入门驱动,分析下rz的加密程序,
稍微抒了下情,有点动力研究下去了。
2013-5-7 17:27
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
31
IE的话,估计你要装上所有的补丁才测试.我对漏洞挖掘这块不怎么了解.但是我还是知道,IE经常出漏洞的.所以你要是想挖掘最新的漏洞,个人觉得应该装上所有的补丁,再做测试.
2013-5-7 17:34
0
雪    币: 402
活跃值: (342)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
32
我看了下这个.
是在edit控件的EM_SETHANDLE和EM_GETHANDLE消息上触发漏洞的.
触发是先发EM_SETHANDLE然后再发EM_GETHANDLE就成了.
使用SendMessage向Edit控件消息,会调用ComCtl32.dll的EditML_WndProc进程
处理方式如下:

 
LRESULT MLEditWndProc(
    HWND hwnd,
    PED ped,
    UINT message,
    WPARAM wParam,
    LPARAM lParam)
{
	switch (message) {
	....
	case EM_SETHANDLE:
		EditML_SetHandle(ped, (HANDLE)wParam);
		break;
	case EM_GETHANDLE:
	    if (ped->fAnsi)
                *(ECLock(ped) + ped->cch) = 0;
            else
                [COLOR="Red"]*((LPWSTR)ECLock(ped) + ped->cch) = 0;[/COLOR]
            ECUnlock(ped);
            return ((LRESULT)ped->hText);
	...
	}
}

漏洞触发后断在上面红色的代码处.
EditML_SetHandle 如下:
void __stdcall  EditML_SetHandle(PED ped, HLOCAL hNewText)
{
	*(_DWORD *)ped = hNewText;
       ...
       if (ped->fAnsi)
            ped->cch = strlen(ECLock(ped));
       else
            ped->cch = wcslen((LPWSTR)ECLock(ped));
       ECUnlock(ped);
       ....
}

ECLock 如下:
LPVOID __stdcall Edit_Lock(PED ped)
{
     v1 = LocalLock(*(HLOCAL *)ped);
     ...
     return v1;
}


先Send EM_SETHANDLE消息.comctl32.dll会将wParam当做一个Heap存放到*(_DWORD *)ped 中也就是ped->hText.然后再发送EM_GETHANDLE消息会将ped->hText的末尾赋0也就是字符串结束.

所以转化成ring3下任意地址写0的漏洞.
但必须保证:
1,  LocalLock(地址) == 地址;
2, 地址必须是可写的.
2013-5-7 18:05
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
33

赞一个.
分析的好透切.

不过不仅仅是 em_sethandle em_gethandle
我分析的时候,有的时候, em_getrecv 等 消息,有时也会崩溃的.
不同的控件,崩溃的地址不一样的.
所以我都是从 0xb0 开始发消息.
2013-5-7 18:13
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
34
用od调试完全无法断下异常
这是windbg下的异常
This exception may be expected and handled.
eax=fffffff8 ebx=00000001 ecx=7ffdf000 edx=000002dc esi=00180000 edi=00000000
eip=776064d0 esp=0014f584 ebp=0014f5b4 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246
ntdll!RtlpNtMakeTemporaryKey+0x4b8c:
776064d0 80780705        cmp     byte ptr [eax+7],5  //eax<0,error         
ds:0023:ffffffff=??

好像与你希望异常的地方不一样
而且用易语言的程序来实验,attact后居然无反应,真的逆天了
2013-5-7 18:28
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
35
你说的OD无反映是指没有效果?还是UI卡住了?
OD全是自绘的,没有用控件,所以没有效果是正常的.
2013-5-7 18:35
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
36
用od调试记事本完全无法断下异常
我用的是win7,是COMDLG32.dll引起的异常
没od很难跟踪函数
2013-5-7 18:51
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
37
我测试的时候是在xp上测试的,可以断下.
win7上没有测试,你可以开个vmware,试试看~

不同的控件,不同的消息,异常的地址可能都不一样.
感觉这个问题不小.
2013-5-7 18:56
0
雪    币: 341
活跃值: (138)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
38
好厉害哟哟。。。
2013-5-7 19:05
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
39
的确是个严重bug,广播个Msg如果没hook保护估计几乎全死了
始终不懂易语言怎么躲过攻击的,除非是自绘
2013-5-7 19:10
0
雪    币: 141
活跃值: (318)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
这个bug要收下,大有用处
2013-5-8 11:01
0
雪    币: 232
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
41
楼主分析下能不能干掉杀软?
2013-5-8 11:12
0
雪    币: 85
活跃值: (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
不能, 杀软基本都是自绘+HOOK消息保护, 都不在这个漏洞的出发条件之内;
2013-5-8 12:31
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
高级玩意儿!
2013-5-8 13:40
0
雪    币: 86
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
这样的好像只是好玩。。。没有多在作用吧。
2013-5-8 14:48
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
45
哦, 有这情况哟.
不过那控制台版的也太暴力了吧...

for(int i = 0xb0; i < 0x2000; i++)
{
        ::SendMessage(hWindow, i, 0x0, 0x0);
}

只看现象的话,感觉是消息轰炸炸死的.
有时间好好研究研究~~~
2013-5-9 21:53
0
雪    币: 284
活跃值: (3434)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
46
Console_Src .c .h都加密了
2013-5-9 22:18
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
47
不好意思,那个是在公司里面写的,
公司有透明加密,我给忘了.
25L的就是源码了,
你可以看25L的.
2013-5-9 22:33
0
雪    币: 284
活跃值: (3434)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
48
25  2013-05-07, 11:40:03            
大杀器嘛 哈哈

其实那个MFC的里面有码,
  for(int i = 0xb0; i < 0xcc; i++)
  {
    ::SendMessage(hWindow, i, 0x0, 0x0);
  }
2013-5-9 22:36
0
雪    币: 85
活跃值: (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
刚微软中国给的售后服务人员金某反馈了, 我复制下原文
最终的反馈结果是:此问题确实可以导致高权限进程被低权限下的进程被崩溃,但是此问题属于两个进程的兼容性问题,而不属于安全漏洞,关于此问题如需其他帮助,可致电微软上海客服获得解决方案。
所以, 大牛们想艹翻的 想逆天的, 都出手吧
2013-5-10 15:51
0
雪    币: 85
活跃值: (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
刚微软中国给的售后服务人员金某反馈了, 我复制下原文
最终的反馈结果是:此问题确实可以导致高权限进程被低权限下的进程被崩溃,但是此问题属于两个进程的兼容性问题,而不属于安全漏洞,关于此问题如需其他帮助,可致电微软上海客服获得解决方案。
所以, 大牛们想艹翻的 想逆天的, 都出手吧
2013-5-10 15:53
0
游客
登录 | 注册 方可回帖
返回
//