CVE-2010-2883浅析-Adobe Reader栈溢出漏洞
来源:互联网 发布:手机淘宝 平板 编辑:程序博客网 时间:2024/05/22 14:16
前言
2012年3月29日,纽约时报报道了一个由TrendMicro发布的APT攻击分析报告——Inside an APT Campaign with Multiple Targets in India and Japan。根据这份报告,该攻击针对印度和日本的航空航天、军队、能源等单位进行了长时间的渗透和刺探。报告显示这次攻击行动是通过钓鱼邮件开始的,例如针对日本目标的钓鱼邮件的内容大都跟福岛核电站的核辐射问题有关。攻击利用了很多针对pdf/rtf的漏洞,包括CVE-2010-3333,CVE-2010-2883,CVE-2010-3654,CVE-2011-0611,CVE-2011-2462等。最后,报告将疑似攻击者定位到了一位前川大的学生——Gu Kaiyuan。当事人在腾讯工作,后来腾讯和其本人都澄清了此事。
SHA256: 69dd4a5f606ccbe2a69acd6d7eec98b17d4d8bc4545b08511454b784ef6885a3
使用PDFStreamDumper分析PDF恶意样本
首先用PDFStreamDumper可以看到样本中包含的堆喷的JS代码和TTF对象。
将TTF对象保存以后用010editor模板查看。TTF表目录项结构如下。
根据offset定位到具体的内容。
CVE-2010-2883
在IDA中打开CoolType.dll,在字符串中搜索SING,通过交叉引用定位到漏洞点。可以看到正是在CoolType.dll中解析SING字体时调用strcat没有对字符串长度进行检测就将其直接复制到固定大小的栈空间从而导致栈溢出。
下面来实际调试一下,可以看到strcat的第二个参数是SING字体偏移0x10处的内容,010editor中从0x11C开始。
一般情况下应该覆盖返回地址绕过GS了,但是这个漏洞的利用过程中非常巧妙的一点是函数返回之前会调用一个栈上的地址。
0803DDAB E8 483D1300 call jmp.MSVCR80.strcat0803DEAF E8 2A8DFDFF call CoolType.08016BDE 08016C56 E8 C64E0000 call CoolType.0801BB21 0801BB41 FF10 call dword ptr ds:[eax] 0808B308 FF10 call dword ptr ds:[eax] // 触发点
这里调用关系很复杂,不过最终call dword ptr ds:[eax]处eax的值是我们可控的。
接下来的ROP操作如图所示。
经过ROP1和ROP2后栈顶指向了0x0c0c0c0c,这是JS代码堆喷射得到的。接下来的shellcode都比较套路了。主要作用是:
1.调用CreateFileA函数创建一个名为iso88591的隐藏文件;
2.调用CreateFileMappingA函数创建文件映射;
3.调用MapViewOfFile函数映射到本进程的地址空间内;
4.调用memcpy函数复制下一个阶段的shellcode并执行。
下一个阶段的shellcode经过一系列获取临时文件目录并创建文件之后使用WinExec启动创建的文件。Adobe Reader的沙盒保护是在Adobe Reader 10中加入的,所以这里也不用像CVE-2013-3346那样还需要一个CVE-2013-5065内核漏洞获取权限了。
参考资料
1.《漏洞战争》第二章第三节
2.CVE-2010-2883 Analysis
- CVE-2010-2883浅析-Adobe Reader栈溢出漏洞
- Adobe Reader 缓冲区溢出漏洞 (CVE-2010-2883)漏洞分析报告
- CVE-2010-3333浅析-word栈溢出漏洞
- CVE-2010-5301浅析-Kolibri栈溢出漏洞
- CVE-2017-7269浅析-IIS6.0栈溢出漏洞
- CVE-2012-0158浅析-word栈溢出漏洞
- CVE-2011-0104浅析-excel栈溢出漏洞
- 漏洞分析之CVE-2010-2883(栈溢出)
- CVE-2017-6008浅析-HitmanPro内核池溢出漏洞(Win7)
- CVE-2016-10190浅析-FFmpeg堆溢出漏洞
- CVE-2012-1876浅析-Internet Explorer堆溢出漏洞
- CVE-2014-6332浅析-Internet Explorer整数溢出漏洞
- CVE-2013-3346&CVE-2013-5065-Adobe Reader释放重引用漏洞+NDProxy.sys数组越界漏洞联合利用恶意样本分析
- CVE-2014-3791浅析-Easy File Sharing Web Server栈溢出漏洞(从fuzzing到0day)
- CVE-2013-4694 WinAmp 5.63 栈溢出漏洞分析
- CVE-2010-2883字体文件SING表栈溢出
- Adobe Acrobat Reader 漏洞分析过程
- Adobe Flash Player CVE-2012-0779漏洞技术分析
- 第十三周LeetCode
- fastjson SerializerFeature详解
- 阿里云MaxCompute携手华大基因打造精准医疗应用云平台
- Java中的值传递和引用传递
- Mybatis SQL 报错:Parameter 'position' not found. Available parameters are [arg2, arg1, arg0。。。
- CVE-2010-2883浅析-Adobe Reader栈溢出漏洞
- [Leetcode] 475. Heaters 解题报告
- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
- 唯快不破:深刻理解Python中的元类(metaclass)
- Gartner发布2018人工智能预测,五大未来愿景显示AI发展前景
- 关系型数据库工作原理-SQL解析(翻译自Coding-Geek文章)
- Java Mail 介绍及使用
- 外观模式
- 轮播图