Lotus Blossom 行动分析
1 漏洞介绍
1.1 代号 - Lotus Blossom行动
漏洞利用率很高 从2012 —2015或者说最近都还在使用 CVE-2012-0158
Lotus Blossom--莲花: 描述了对东南亚各国政府和军事组织的持续网络间谍活动。该报告公开了目标、工具和攻击技术,并提供了关于莲花营销活动的完整详情,包括所有妥协指标。42小组 使用PaloAlto网络自动聚焦™平台发现了这些攻击,这使得分析人员能够将数百万个报告的结果与野火所产生的结果关联起来。
1.2 具体信息
CVE-2012-0158 漏洞是一个典型栈溢出、长度可控漏洞,该漏洞是微软Office中的MSCOMCTL.ocx中MSCOMCTL.ListView控件检查失误造成的,攻击者可以通过精心构造的数据来控制程序的EIP实现任意代码执行。
CVE-2012-0158 的微软漏洞编号是ms12-027。
MSCOMCTL.ocx 可以认为是一种COM组件动态链接库,以ocx为后缀。MSCOMCTL.ListView 控件可以认为是MFC的列表控件了。
Windows系统下,除了某种编程语言的控件之外,还提供一些通用控件 封装在COM组件以.ocx为后缀的动态链接库里面。
2 分析使用的环境和工具
◆ 漏洞分析环境与工具:
◆ 操作系统: Window 7专业版(32位)
◆ 软件: office 2003 sp3
◆ 工具: Ollydbg, windbg, IDA Pro
◆ OfficeMalScanner, python模块oletools(rtfobj)
注:
OfficeMalScanner 可以用来扫描解析 office 文档格式。
python模块oletools, 可以用来执行 rtfobj 命令。
3.1 获取POC
获取Poc的主要途径有:
◆ 网络,论坛,Metasploit
◆ http://binvul.com/
◆ https://www.exploit-db.com/
◆ https://www.securityfocus.com/
3.2 复现漏洞
◆ 安装office 2003 sp3
◆ 执行poc以及样本
3.2.1 搭建环境执行poc获取现场
◆ 用OD附加目标Office,把poc若拽到Word中运行

分析:
覆盖的返回地址是0x127aac.
3.2.2 定位漏洞
◆ 调试漏洞, 定位漏洞触发点,分析漏洞成因
定位漏洞触发模块/函数/过程
在分析一处点附近堆栈的时候,溢出点下面的堆栈一般是刚刚调用的函数的上一层函数堆栈;溢出后可能已经破坏,溢出点上面的堆栈是刚刚执行的函数堆栈,可以发现一些模块内的地址,由此判断触发的模块.
比如:

原创手绘:

分析: 如果不确定是那一层调用的返回的溢出地址,那就在RETN/RET处下断点. 最接近现场而未移交权力的ret所在模块就是目标模块,即 哪个函数的ret 被Poc代码覆盖了,就是我们的目标模块.
这里的模块是MSCOMCTL!0X275C8A0A.
顺势,找到0x0X275C8A0A所在过程的起始位置

定位模块/函数/过程内具体子过程
在 定位好的模块/函数/过程内部起始位置下断点,然后单步补过,注意观察栈的返回地址,什么时候被覆盖.
把数据窗口定位到刚才被覆盖的位置,然后从刚才找出的模块过程开始位置单步补过跟

跟进结果如下

分析:
可以看到,刚好执行完
0x275c8a05C: call MSCOMCTL.0x275c876d
就将栈空间覆盖修改了.
进入0x275c8a05C: call MSCOMCTL.0x275c876d 跟进

3.2.3 分析漏洞
找出该模块

使用IDA分析:
根据前面的分析结果:
触发漏洞API: MSCOMCTL!0x275C876D
造成溢出的实际位置:MSCOMCTL!0X275C87CB

结合动态调试,查看相关参数异常:

分析:
可以看到,参数0x8282,异常的大
在POC中搜寻以下0x8282查看是否这个数字来源于文档设定
使用010editor打开

分析长度数值果然是通过文档数据设定的,还看到了我们覆盖返回地址的数据41414141
验证栈的覆盖的精确性

4 利用漏洞编写写EXP
这个时候直接使用 一个 jmp esp,就能执行栈中的自定义代码了.
Lotus Blossom 行动分析的更多相关文章
- CVE-2012-0158:Microsoft Office MSCOMCTL.ocx 栈溢出漏洞调试分析
0x01 Lotus Blossom 行动 在 2015 年 6 月,国外安全厂商 Palo Alto Networks 的威胁情报团队 Unit42 发现了一起针对东南亚政府的一次间谍行为,试图获取 ...
- Lotus分析
一 Lotus的任务 Lotus是一个消息通知服务,topic和subscription是多对多的关系.后面我加了一个发送自定义邮件和自定义短信的功能. 产品里面有个监控报警和通知列表.监控报警里创建 ...
- b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释
继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更新页面显示状态这种方式在运作的,从若干年前简单的ajax流行起来 ...
- b2c项目基础架构分析(一)b2c 大型站点方案简述 已补充名词解释
我最近一直在找适合将来用于公司大型bs,b2b b2c的基础架构. 实际情况是要建立一个bs架构b2b.b2c的网站,当然还包括wap站点.手机app站点. 一.现有公司技术人员现状: 1.熟悉asp ...
- Lotus 迁移到Exchange 2010 之准备使用Transport 同步Lotus 相关信息!
这里我们先来分析下Lotus迁移到Exchange2010 的一些原理,由于存在一定周期的共存时间,因此在共存期间必须来实现相应的同步计划,整个同步计划包含了如下的同步计划:
- 使用awstats分析iis站点的日志
环境:win7 + iis7 + perl(ActivePerl-5.20.1.2000) + awstats 7.3 一.找到iis日志所在目录 建议全部都打勾 二.安装perl AWStats是p ...
- Nmon 性能:分析 AIX 和 Linux 性能的免费工具
原文摘自: http://www.ibm.com/developerworks/cn/aix/library/analyze_aix/ 官网:http://www.ibm.com/developerw ...
- 52. 模版和设计元素——Lotus Notes的代码重用
不论是理论上还是实用上,代码重用都是编程的一个重要议题.可以从两个角度来讨论代码重用. 一是逻辑上代码以怎样的方式被重用.既可以通过面向对象的思想普及以来耳熟能详的继承的方式.比如先建了一个车的基类, ...
- NSA Fuzzbunch分析与利用案例
Shadow Brokers泄露出一份震惊世界的机密文档,其中包含了多个 Windows 远程漏洞利用工具.本文主要介绍了其中一款工具Fuzzbunch的分析与利用案例 1 整体目录介绍 解压EQGR ...
随机推荐
- TYVJ1061 Mobile Service
P1061 Mobile Service 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 一个公司有三个移动服务员.如果某个地方有一个请求,某个员工必须赶到那 ...
- c++ 枚举简单举例
#include <iostream> enum Enumeration{ VAL1, VAL2, VAL3=100, VAL4 }; int main() { using namespa ...
- Linux date命令 crontab每个月最后一天
###使用date获取日期时间等 # 当前日期 openstack@ubuntu:~$ date 2019年 01月 15日 星期二 15:10:49 CST # 明天 openstack@ubunt ...
- c++-文件分离
实现文件分离 1.头文件中不要使用using namespace,由于c++编译的特性,由于初学还没深入了解,不做具体编译的解释 2.由于没有了命名空间,所以string定义要写成std::strin ...
- hive表操作(转)
转载于:http://blog.csdn.net/lovelovelovelovelo/article/details/52234971 数据类型 基本数据类型 集合类型,array.map.stru ...
- 【POJ】3278 Catch That Cow
题目链接:http://poj.org/problem?id=3278 题意:有一头奶牛跑到了K的位置,农夫在N的位置,求最短抓到奶牛的时间. 农夫有两种移动方式. 1.步行:一分钟内从x->x ...
- 【csp】2017-9
1.打酱油 题目: 题意:如上. 题解:经典问题.看代码吧.qwq 代码: #include<iostream> #include<cstdio> #include<al ...
- Xpath-Extraction 关联
//*[local-name()="qqCheckOnlineResult"] //开头 *代表的是任意的标签 local-name():寻找标签名
- 随笔-ansible-4
触发器: 一个任务同时调用多个触发器: 为远程主机上的用户设置环境变量: 保存前一步命令的输出结果,并保存到foo中: 添加环境变量的另一种方式: 注意:lineinfile模块只适用于修改少量环境变 ...
- iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destination
启动docker容器时报错: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT ...
