MPEG-2网马

 

MPEG-2网马生成器

MPEG-2网马生成器下载地址http://www.zhuahei.cn/download/MPEG20DAY.zip
将生成的go.jpg文件和muma.html,logo.gif三个文件放同一网站目录下,如果网站是liunx或非WINDOWS系统请改go.jpg文件名为go.js,相对应的muma.html代码里的go.jpg改为go.js。
  1. MPEG2 0DAY漏洞分析报告
  2. 该漏洞表现在在MSVidCtl.dll(xpsp2:6.5.2600.2180,vista:6.5.6000.16386)中,MSVidCtl.dll为系统标准组件。产生漏洞的原因是不正确读取持久化的字节数组(VT_UI1|VT_ARRAY),攻击者可以通过构造特殊的文件触发该漏洞,最终导致以当前进程权限执行任意代码。
  3. 以下是存在漏洞代码的分析:
  4. 以6.5.2600.2180版本的MSVidCtl.dll为例:
  5. .text:59F0D5E3                 push    edi
  6. .text:59F0D5E4                 mov     edi, [ebp+arg_3C]
  7. .text:59F0D5E7                 mov     eax, [edi]
  8. .text:59F0D5E9                 push    ebx
  9. .text:59F0D5EA                 push    2
  10. .text:59F0D5EC                 lea     ecx, [ebp+vt]
  11. .text:59F0D5EF                 push    ecx
  12. .text:59F0D5F0                 push    edi
  13. .text:59F0D5F1                 call    dword ptr [eax+0Ch]
  14. .text:59F0D5F4                 cmp     eax, 1
  15. .text:59F0D5F7                 jnz     short loc_59F0D5FE
  16. .text:59F0D5F9                 mov     eax, 80004005h
  17. 在0x59F0D5F1处,读取了2字节,以确定被读取的VARIANT的类型(VARTYPE)。
  18. .text:59F0D67F                 cmp     eax, 2011h
  19. .text:59F0D684                 jnz     loc_59F0D70E
  20. .text:59F0D68A                 mov     eax, [edi]
  21. .text:59F0D68C                 push    ebx
  22. .text:59F0D68D                 push    8
  23. .text:59F0D68F                 lea     ecx, [ebp+cElmts]
  24. .text:59F0D692                 push    ecx
  25. .text:59F0D693                 push    edi
  26. .text:59F0D694                 call    dword ptr [eax+0Ch]
  27. .text:59F0D697                 cmp     eax, ebx
  28. .text:59F0D699                 jl      loc_59F0D760
  29. .text:59F0D69F                 cmp     eax, 1
  30. 接着,从0x59F0D68A处开始进入VARTYPE为2011h,即VT_UI1|VT_ARRAY的处理流程:在0x59F0D694处读取了8个字节,但只使用低32位来确定该字节数组的大小。
  31. .text:59F0D6AE                 mov     eax, [ebp+cElmts]
  32. .text:59F0D6B1                 mov     [ebp-20h], eax
  33. .text:59F0D6B4                 lea     eax, [ebp-20h]
  34. .text:59F0D6B7                 push    eax             ; rgsabound
  35. .text:59F0D6B8                 push    1               ; cDims
  36. .text:59F0D6BA                 push    11h             ; vt
  37. .text:59F0D6BC                 mov     [ebp+rgsabound.lLbound], ebx
  38. .text:59F0D6BF                 call    ds:SafeArrayCreate
  39. .text:59F0D6C5                 mov     ebx, eax
  40. .text:59F0D6C7                 test    ebx, ebx
  41. .text:59F0D6C9                 jnz     short loc_59F0D6D5
  42. 接着,在0x59F0D6B1处构造SAFEARRAYBOUND结构(将之前读取的个数存入该结构),并调用SafeArrayCreate创建出SAFEARRAY结构。
  43. .text:59F0D6D5                 lea     eax, [ebp+pvData]
  44. .text:59F0D6D8                 push    eax             ; ppvData
  45. .text:59F0D6D9                 push    ebx             ; psa
  46. .text:59F0D6DA                 call    ds:SafeArrayAccessData
  47. .text:59F0D6E0                 test    eax, eax
  48. .text:59F0D6E2                 jl      short loc_59F0D760
  49. .text:59F0D6E4                 mov     eax, [edi]
  50. .text:59F0D6E6                 push    0
  51. .text:59F0D6E8                 push    [ebp+cElmts]
  52. .text:59F0D6EB             lea     ecx, [ebp+ pvData]
  53. .text:59F0D6EE             push    ecx
  54. .text:59F0D6EF             push    edi
  55. .text:59F0D6F0             call    dword ptr [eax+0Ch]
  56. .text:59F0D6F3                 push    ebx             ; psa
  57. .text:59F0D6F4                 mov     [ebp+var_18], eax
  58. .text:59F0D6F7                 call    ds:SafeArrayUnaccessData
  59. .text:59F0D6FD                 mov     eax, [ebp+var_18]
  60. .text:59F0D700                 test    eax, eax
  61. .text:59F0D702                 jl      short loc_59F0D760
  62. .text:59F0D704                 cmp     eax, 1
  63. .text:59F0D707                 jz      short loc_59F0D6A4
  64. .text:59F0D709                 mov     [esi+8], ebx
  65. .text:59F0D70C                 xor     ebx, ebx
  66. 接下来,使用SafeArrayAccessData获得SAFEARRAY的数据区域,并将该指针保存到局部变量pvData(ebp+8)中。
  67. 在0x59F0D6EB处,代码错误地将pvData的地址作为IStream::Read (0x59F0D6F0)的参数,而不是pvData的值,而该值指向的内存才是真正用于存放从流中读取数据的缓冲区。
  68. 这样就导致了以下情况:试图将任意长度的数据放入原本4字节长度的内存中,导致了缓冲区溢出。
  69. 攻击者可随意覆盖SEH或者RET,将EIP设置成任意数值。结合JS堆喷射,“挂马”利用成功率将相当高,风险很大。
  70. 注:
  71. 在6.5.6000.16386版本的MSVidCtl.dll中,也存在类似代码:
  72. .text:37D46DFF                 push    ebx
  73. .text:37D46E00                 push    8
  74. .text:37D46E02                 lea     ecx, [ebp-20h]; 数组大小
  75. .text:37D46E05                 push    ecx
  76. .text:37D46E06                 push    edi
  77. .text:37D46E07                 call    dword ptr [eax+0Ch]
  78. .text:37D46E42                 lea     eax, [ebp+0Ch]
  79. .text:37D46E45                 push    eax             ; ppvData
  80. .text:37D46E46                 push    ebx             ; psa
  81. .text:37D46E47                 call    ds:SafeArrayAccessData
  82. .text:37D46E4D                     test    eax, eax
  83. .text:37D46E4F                     jl      loc_37D46ED5
  84. .text:37D46E55                     mov     eax, [edi]
  85. .text:37D46E57                     push    0
  86. .text:37D46E59                 push    dword ptr [ebp-20h]; 数组大小
  87. .text:37D46E5C                 lea     ecx, [ebp+0Ch]
  88. .text:37D46E5F                 push    ecx ; 读取缓冲区指向参数
  89. .text:37D46E60                 push    edi
  90. .text:37D46E61                 call    dword ptr [eax+0Ch]
  91. .text:37D46E64                      push    ebx             ; psa
复制代码
MPEG-2网马生成器下载地址:http://www.zhuahei.cn/download/MPEG20DAY.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值