CVE-2012-0158漏洞的样本分析

本文详细分析了一个名为E5937775444C94CA3C1A309A7BDEC42E.doc的文件,该文件关联到CVE-2012-0158漏洞。通过使用Procmon.exe、附加调试等技术,揭示了漏洞发生在MSCOMCTL.OCX模块,由于内存拷贝越界导致的栈溢出。分析指出,问题源于sub_275C876D函数中的REP MOVS指令,当ECX值超过堆栈大小时,引发栈溢出并可能导致shellcode执行。然而,由于下载dead.exe失败,完整分析受限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一.样本信息

  • 文件名称:E5937775444C94CA3C1A309A7BDEC42E.doc
  • 文件大小:129K
  • MD5:E5937775444C94CA3C1A309A7BDEC42E
  • SHA-1:DB6B1FA595D0A561BFF364181CAB6441D7F24B1D

二.样本分析
0x01.将文件上传至virustotal分析,有许多认为是CVE-2012-0158,该漏洞发生在MSCOMCTL.OCX模块,因为内存拷贝越界导致栈溢出漏洞的触发。

0x02.使用Procmon.exe,尝试运行该文件,观察行为



0x03.进行附加调试,打开文件后,程序抛出了异常,查看堆栈,发现堆栈取已经被覆盖了。尝试在样本中寻找堆栈中的溢出的数据,对比发现后,可以看到堆栈在ESP+13C处之后为样本的数据覆盖,也就是这下面的堆栈已经被破坏了


0x04.往上回溯,找到最近的函数位于MSCOMCTL模块的函数sub_275C8B2B,重新调试文件,尝试在MSCOMCTL.OCX加载后对该函数入口点0x275C8B2B下断点。可以看到堆栈仍是被破坏,继续尝试向上回溯,可以看到地址0x275C8A0A是位于函数sub_275C89C7中,之后在该函数入口点处重新调试下断。



0x05.程序在该入口点断下后,观察堆栈发现还并没有被破坏,逐步向下调试,发现在第二个函数sub_275C876D调用,也就就是运行到0x275C8A0A后,堆栈被破坏。判断可能是该函数导致,重新调试在运行到该函数前对EBP+4也就是函数sub_275C89C7的返回地址下硬件写断点,程序断在sub_275C876D函数该语句处REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]ECX0x209C远超过了该函数的堆栈大小,导致内存拷贝太多,破坏了堆栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值