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 ...
随机推荐
- NX二次开发-NXOPEN将工程图转成PDF文件
NX9+VS2012 #include <uf.h> #include <uf_draw.h> #include <NXOpen/PrintPDFBuilder.hxx& ...
- JDK简介和mac下安装和查看版本命令
1.什么是JDK? JDK:Java Development Kit,是 Java 语言的软件开发工具包(SDK).没有JDK的话,无法编译Java程序(指java源码.java文件). SE(Jav ...
- C#中如何实现将字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格
思路:用空来替换首尾的空格,用一个空格替换中间的连续空格. 例如:string inputStr=” xx xx “; inputStr=inputStr.Trim(); inputStr=Regex ...
- TortoiseGit配置私钥关联github
1.使用Git 命令行生成公钥和私钥 找到Git安装目录(我的安装目录是 D:\DevelopSoft\Git),打开git-bash.exe. 输入命令 回车 ssh-keygen -t rsa ...
- DRF的JWT用户认证
目录 DRF的JWT用户认证 JWT的认证规则 JWT的格式 JWT认证的流程 JWT模块的导入为 JWT的使用 DRF的JWT用户认证 从根本上来说,JWT是一种开放的标准(RFC 7519), 全 ...
- Jupyter的使用复习
Jupyter的使用 esc+m 切换到markdown模式 shift+enter 运行 a 向上新增代码块 b 向下新增代码块 y python代码模式 file-->download as ...
- HTTP请求默认值
填写后,后面的请求如果对应的未填写,默认使用该参数
- iOS进阶一OC对象的本质
OC对象的本质 平时编写的Object-C代码,底层实现其实都是C/C++代码. 所以Objective-C的面向对象都是基于C/C++的数据结构实现的,OC对象内部可以容纳不同数据类型的数据,因此可 ...
- 【学术篇】一些水的不行的dp
最近做了几道非常水非常水的dp...... 之后刷的一些水dp也会写在这里...... 此篇题目难度不递增!!! Emmmm....... 1.luogu1043数字游戏 以前看过这个题几遍,没做这个 ...
- Leetcode973. K Closest Points to Origin最接近原点的K个点
我们有一个由平面上的点组成的列表 points.需要从中找出 K 个距离原点 (0, 0) 最近的点. (这里,平面上两点之间的距离是欧几里德距离.) 你可以按任何顺序返回答案.除了点坐标的顺序之外, ...