天下网吧 >> 网吧天地 >> 网吧技术 >> 网吧安全 >> 正文

微软视频漏洞导致木马爆发 两天内数百万电脑遭攻击

F0D5EF push ecx

  .text:59F0D5F0 push edi

  .text:59F0D5F1 call dword ptr [eax+0Ch]

  .text:59F0D5F4 cmp eax, 1

  .text:59F0D5F7 jnz short loc_59F0D5FE

  .text:59F0D5F9 mov eax, 80004005h

  在0x59F0D5F1处,读取了2字节,以确定被读取的VARIANT的类型(VARTYPE)。

  .text:59F0D67F cmp eax, 2011h

  .text:59F0D684 jnz loc_59F0D70E

  .text:59F0D68A mov eax, [edi]

  .text:59F0D68C push ebx

  .text:59F0D68D push 8

  .text:59F0D68F lea ecx, [ebp+cElmts]

  .text:59F0D692 push ecx

  .text:59F0D693 push edi

  .text:59F0D694 call dword ptr [eax+0Ch]

  .text:59F0D697 cmp eax, ebx

  .text:59F0D699 jl loc_59F0D760

  .text:59F0D69F cmp eax, 1

  接着,从0x59F0D68A处开始进入VARTYPE为2011h,即VT_UI1|VT_ARRAY的处理流程:在0x59F0D694处读取了8个字节,但只使用低32位来确定该字节数组的大小。

  .text:59F0D6AE mov eax, [ebp+cElmts]

  .text:59F0D6B1 mov [ebp-20h], eax

  .text:59F0D6B4 lea eax, [ebp-20h]

  .text:59F0D6B7 push eax ; rgsabound

  .text:59F0D6B8 push 1 ; cDims

  .text:59F0D6BA push 11h ; vt

  .text:59F0D6BC mov [ebp+rgsabound.lLbound], ebx

  .text:59F0D6BF call ds:SafeArrayCreate

  .text:59F0D6C5 mov ebx, eax

  .text:59F0D6C7 test ebx, ebx

  .text:59F0D6C9 jnz short loc_59F0D6D5

  接着,在0x59F0D6B1处构造SAFEARRAYBOUND结构(将之前读取的个数存入该结构),并调用SafeArrayCreate创建出SAFEARRAY结构。

  .text:59F0D6D5 lea eax, [ebp+pvData]

  .text:59F0D6D8 push eax ; ppvData

  .text:59F0D6D9 push ebx ; psa

  .text:59F0D6DA call ds:SafeArrayAccessData

  .text:59F0D6E0 test eax, eax

  .text:59F0D6E2 jl short loc_59F0D760

  .text:59F0D6E4 mov eax, [edi]

  .text:59F0D6E6 push 0

  .text:59F0D6E8 push [ebp+cElmts]

  .text:59F0D6EB lea ecx, [ebp+ pvData]

  .text:59F0D6EE push ecx

  .text:59F0D6EF push edi

  .text:59F0D6F0 call dword ptr [eax+0Ch]

  .text:59F0D6F3 push ebx ; psa

  .text:59F0D6F4 mov [ebp+var_18], eax

  .text:59F0D6F7 call ds:SafeArrayUnaccessData

  .text:59F0D6FD mov eax, [ebp+var_18]

  .text:59F0D700 test eax, eax

  .text:59F0D702 jl short loc_59F0D760

  .text:59F0D704 cmp eax, 1

  .text:59F0D707 jz short loc_59F0D6A4

  .text:59F0D709 mov [esi+8], ebx

  .text:59F0D70C xor ebx, ebx

  接下来,使用SafeArrayAccessData获得SAFEARRAY的数据区域,并将该指针保存到局部变量pvData(ebp+8)中。

  在0x59F0D6EB处,代码错误地将pvData的地址作为IStream::Read (0x59F0D6F0)的参数,而不是pvData的值,而该值指向的内存才是真正用于存放从流中读取数据的缓冲区。

  这样就导致了以下情况:试图将任意长度的数据放入原本4字节长度的内存中,导致了缓冲区溢出。

  攻击者可随意覆盖SEH或者RET,将EIP设置成任意数值。结合JS堆喷射,“挂马”利用成功率将相当高,风险很大。

  注:

  在6.5.6000.16386版本的MSVidCtl.dll中,也存在类似代码:

  .text:37D46DFF push ebx

  .text:37D46E00 push 8

  .text:37D46E02 lea ec9 7 3 1 2 3 4 8 :

本文来源:华军资讯 作者:厂商投递

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。文章是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 Email:support@txwb.com,系统开号,技术支持,服务联系微信:_WX_1_本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行