滨海新区教体委:求助中了Exploit.WMF.d 这个脚本病毒怎么

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 18:04:00
怎么办啊

着是利用MS0601漏洞做网页木马。
Microsoft Windows Metafile Format (WMF)格式代码执行漏洞分析报告

Microsoft Windows Metafile Format (WMF)文件依靠存储一组StandardMetaRecord的序列,存储影像信息。其存储结构如下:

typedef struct _StandardMetaRecord
{
DWORD Size; /* Total size of the record in WORDs */
WORD Function; /* Function number (defined in WINDOWS.H) */
WORD Parameters[]; /* Parameter values passed to function */
} WMFRECORD;

WMF文件通过PlayMetaFile API来依次回放这些StandardMetaRecord序列,完成图像的绘制过程。

比如WMF文件中画一条直线的StandardMetaRecord:

Size 5 /* Five WORDs in the file */
Function 0x0213 /* LineTo function number */
Parameters[0] 50 /* Y Coordinate */
Parameters[1] 100 /* X Coordinate */

这条记录会被PlayMetaFile读出并被PlayMetaRecord解释为LineTo()的GDI函数

LineTo(hDC, 100, 5);

在GDI命令中,Escape功能的SETABORTPROC子功能可以在PlayMetaFile时设置一个回调函数,
该回调函数被设置后会在每次PlayMetaRecord之前会被执行。其返回值为0时结束播放,否则继续播放记录。

因为PlayMetaRecord在执行StandardMetaRecord的时候,没有做必要的参数检查,
如果记录中包含Escape功能的SETABORTPROC子功能的调用,就会把堆中该记录偏移0x0Ah处的任意数据当作回调函数的内容被执行。

恶意构造的WMF文件,可以导致任意代码以当前用户身份被执行。

PlayMetaFile 通过循环调用PlayMetaRecord来播放Standard Metafile格式文件。

ebx在循环中恒为0,esi指向当前被执行的StandardMetaRecord。

.text:77F05912 loop1: ; CODE XREF: sub_77F03F47+198j
.text:77F05912 ; sub_77F03F47+1A10j
.text:77F05912 cmp esi, ebx
.text:77F05914 jz Exit_Play
.text:77F0591A cmp esi, 0FFFFFFFFh
.text:77F0591D jz Exit_Play
.text:77F0591F cmp [ebp-20h], ebx
.text:77F05922 jnz short loc_77F0592D
.text:77F05924 mov eax, [ebp-24h]
.text:77F05927 test byte ptr [eax+5], 8
.text:77F0592B jz Exit_Play
.text:77F0592D
.text:77F0592D loc_77F0592D: ; CODE XREF: sub_77F03F47+19DBj
.text:77F0592D mov eax, [ebp-44h]
.text:77F05930 cmp eax, ebx
.text:77F05932 jz PlayRecord
.text:77F05934 mov eax, [eax+14h]
.text:77F05937 cmp eax, ebx ;判断回调是否被设置
.text:77F05939 jnz RunAbortProc ;如果设置则跳去执行
.text:77F0593F
.text:77F0593F PlayRecord: ; CODE XREF: sub_77F03F47+19EBj
.text:77F0593F ; sub_77F03F47+F4BDj
.text:77F0593F push dword ptr [ebp-30h] ; UINT
.text:77F05942 push esi ; LPMETARECORD
.text:77F05943 push dword ptr [ebp-34h] ; LPHANDLETABLE
.text:77F05946 push edi ; HDC
.text:77F05947 call PlayMetaFileRecord ;这里会解释GDI命令
.text:77F0594C push esi
.text:77F0594D push dword ptr [ebp-2Ch]
.text:77F05950 call GetNextMetaecord ;取下一条Standard Metafile Record
.text:77F05955 mov esi, eax
.text:77F05957 jmp short loop1

.text:77F133FE RunAbortProc: ; CODE XREF: sub_77F03F47+19F2j
.text:77F133FE push ebx
.text:77F133FF push edi
.text:77F13400 call eax ;执行回调函数
.text:77F13402 test eax, eax ;返回零退出播放循环,否则继续执行播放循环。
.text:77F13404 jnz PlayRecord
.text:77F1340A jmp Exit_Play

当有调用Escape的SetAbortProc的StandardMetaRecord被PlayMetaFileRecord执行,则会设置这个回调函数。

EBX指向当前正在被执行的StandardMetaRecord。
.text:77F04914 movzx eax, word ptr [ebx+6] ;EBX+6位置为子功能号。
.text:77F04918 cmp eax, 0Fh
.text:77F0491B jz loc_77F05067 ; default
.text:77F04921 push 0 ; LPVOID
.text:77F04923 lea ecx, [ebx+0Ah] ;EBX+0Ah开始为回调函数代码
.text:77F04926 push ecx ; LPCSTR
.text:7
至于解决办法.....
Aliases

Bloodhound.Exploit.56 (Symantec), Exploit.WMF, PFV-Exploit

别名:Bloodhound.Exploit.56

Virus Profile

Virus Information
Name: Exploit-WMF
Risk Assessment
- Home Users: Low
- Corporate Users: Low
Date Discovered: 2005-12-27
Date Added: 2005-12-27
Origin: Unknown
Length: Varies
Type: Trojan
SubType: Exploit
DAT Required: 4661

看来并不是很危险的病毒品种

Virus Characteristics

-- January 5, 2006 --
Microsoft has released a patch for the vulnerability attacked by Exploit-WMF, see:

http://www.microsoft.com/technet/security/bulletin/MS06-001.mspx

微软一月五日发布的针对性补丁