一.样本信息
- 文件名称: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],ECX为0x209C远超过了该