开发者社区> 玄学酱> 正文

64位系统下的Office后门利用

简介: 本文讲的是64位系统下的Office后门利用,在之前的文章《Office后门的实现思路》介绍了在Office软件中植入后门的常用方法,但并不全面,缺少64位系统的测试。而对于64位操作系统,支持32位和64位两个版本的office软件,不同office版本的利用方法是否不同呢?本文将要给出答案。
+关注继续查看
本文讲的是64位系统下的Office后门利用

0x00 前言

在之前的文章《Office后门的实现思路》介绍了在Office软件中植入后门的常用方法,但并不全面,缺少64位系统的测试。而对于64位操作系统,支持32位和64位两个版本的office软件,不同office版本的利用方法是否不同呢?本文将要给出答案。

0x01 简介

本文将要介绍如下内容:

· 64位系统安装64位Office软件的利用方法

· 64位系统安装32位Office软件的利用方法

· 根据测试结果优化POC

0x02 64位系统安装64位Office软件的利用方法

测试系统: Win8 x64

开发工具:vs2012

注:

32位系统下安装vs2012支持生成64位的dll

默认主要文件安装目录:C:Program FilesMicrosoft Office

1、Word WLL

32位dll,无法加载

64位dll,成功加载

2、Excel XLL

32位dll,无法加载

64位dll,成功加载

注:

添加导出函数xlAutoOpen的方法:

1、使用传统的模块定义文件 (.def)

新建dll工程,不选择导出符号

如下图

64位系统下的Office后门利用

添加同名文件.def,内容如下:

EXPORTSxlAutoOpen

如下图

64位系统下的Office后门利用

编译成dll,使用IDA查看导出函数

显示正常

如下图

64位系统下的Office后门利用

2、使用vs2012提供的便捷方法

新建dll工程,选择导出符号

如下图

64位系统下的Office后门利用

设置导出函数为xlAutoOpen

如下图

64位系统下的Office后门利用

编译成dll,使用IDA查看导出函数

如下图

64位系统下的Office后门利用

导出函数名发生变化,改变为?xlAutoOpen@@YAXXZ

Excel无法加载该dll,原因是无法识别该导出函数(函数名发生变化)

解决方法:

使用预处理指示符#pragma指定链接选项,修正导出函数名称

添加一行代码:

#pragma comment(linker, "/EXPORT:xlAutoOpen=?xlAutoOpen@@YAXXZ")

如下图

64位系统下的Office后门利用

再次使用IDA查看导出函数,显示正常

如下图

64位系统下的Office后门利用

Excel成功加载该dll,修改成功

注:

已将两种方法的vs工程上传至github,地址如下:

https://github.com/3gstudent/Add-Dll-Exports

方法1对应DllExport(Def)

方法2对应DllExport(declspec)

3、Excel VBA add-ins

使用32位的模板即可

4、PowerPoint VBA add-ins

使用32位的模板即可

结论:

如果在64位系统安装了64位的Office软件,那么Word WLL需要使用64位的calc.wll,Excel XLL需要使用64位的calc.xll

0x03 64位系统安装32位Office软件的利用方法

默认主要文件安装目录:C:Program Files (x86)Microsoft Office,存在重定向

注:

在目录C:Program Files也会创建Office目录,包含软件版本

也就是说,原POC中判断Microsoft Office版本的代码不需要更改

注册表位置HKEY_CURRENT_USERSoftwareMicrosoftOffice

并未被重定向至HKEY_CURRENT_USERSoftwareWow6432NodeMicrosoftOffice

更多关于32位程序在64位系统下的重定向细节可参考之前的文章《关于32位程序在64位系统下运行中需要注意的重定向问题》

1、Word WLL

32位dll,成功加载

64位dll,无法加载

同64位office的结果相反

2、Excel XLL

32位dll,成功加载

64位dll,无法加载

同64位office的结果相反

3、Excel VBA add-ins

使用32位的模板即可

4、PowerPoint VBA add-ins

使用32位的模板即可

结论:

在64位系统安装32位Office软件,同32位系统测试结果相同,POC无需修改

0x04 优化POC

综合以上测试结论,为了使得POC支持64位系统,需要作如下修改:

判断操作系统位数,如果是64位,并且安装64位office软件,方法Word WLL和Excel XLL需要使用64位的dll

代码开发注意的细节(powershell代码):

1、判断操作系统位数

if ([Environment]::Is64BitOperatingSystem){    '64-bit'}else{    '32-bit'}

2、判断安装office软件版本

通过查看默认主要安装路径:

32位office: C:Program Files (x86)Microsoft Office

64位office: C:Program FilesMicrosoft Office

判断路径C:Program FilesMicrosoft Office是否包含文件夹MEDIA

如果包含,那么为64位office

powershell代码如下:

Try  {      dir C:Program FilesMicrosoft OfficeMEDIA    Write-Host "Microsoft Office: 64-bit"}Catch  {     Write-Host "Microsoft Office: 32-bit"}

结合POC脚本,变量$OfficePath表示设置的office安装路径,默认路径为"C:Program FilesMicrosoft Office"+"Office*"

为获取路径C:Program FilesMicrosoft OfficeMEDIA,需要对变量$OfficePath进行字符串截取和拼接,具体代码为:

$OfficeMainPath=$OfficePath.Substring(0,$OfficePath.LastIndexOf("")+1)+"MEDIA"

此时,变量$OfficeMainPath代表路径C:Program FilesMicrosoft OfficeMEDIA

3、判断64位系统+64位office,释放对应的64位dll(wll和xll)

依旧是通过变量保存作base64编码后的64位wll和xll

将dll文件作base64编码:

$fileContent = [System.IO.File]::ReadAllBytes('calcx64.wll')$fileContentEncoded = [System.Convert]::ToBase64String($fileContent)| set-content ("calc_x64wllbase64.txt") $fileContent = [System.IO.File]::ReadAllBytes('calcx64.xll')$fileContentEncoded = [System.Convert]::ToBase64String($fileContent)| set-content ("calc_x64xllbase64.txt")

释放时先做base64解密

$fileContentBytes = [System.Convert]::FromBase64String($fileContent)

最终POC已在github更新,该POC能够区分操作系统和office版本,当遇到64位系统安装64位office的情况时,自动释放64位的dll

POC地址如下:

https://github.com/3gstudent/Office-Persistence

0x05 小结

本文介绍了64位系统安装不同版本office所对应的不同利用方法,分享了在优化POC时注意的细节,至此完成对该POC的开发,便于测试。




原文发布时间为:2017年8月6日
本文作者:3gstudent
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19358 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
24386 0
决策支持系统是什么?
决策支持系统简称DSS,是一种以计算机为工具,应用决策科学及有关学科的理论与方法,以人机交互方式辅助决策者解决半结构化和非结构化决策问题的信息系统。
550 0
iphone的系统信息使用[UIDevice currentDevice]
<p style="line-height:28px; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; color:rgb(51,51,51); font-family:宋体; font-size:16px; border-width:0px; list-style:none"> 获取ipho
1196 0
与众不同 windows phone (23) - Device(设备)之硬件状态, 系统状态, 网络状态
原文:与众不同 windows phone (23) - Device(设备)之硬件状态, 系统状态, 网络状态 [索引页][源码下载] 与众不同 windows phone (23) - Device(设备)之硬件状态, 系统状态, 网络状态 作者:webabcd介绍与众不同 windows phone 7.
734 0
Linux系统常用维护命令
# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机...
909 0
64位系统下的Office后门利用
本文讲的是64位系统下的Office后门利用,在之前的文章《Office后门的实现思路》介绍了在Office软件中植入后门的常用方法,但并不全面,缺少64位系统的测试。而对于64位操作系统,支持32位和64位两个版本的office软件,不同office版本的利用方法是否不同呢?本文将要给出答案。
1875 0
Web系统下Office文档的处理 之OpenXml应用分类资料
本文对常见的处理参考和工具提供一个简要的参考。 对于实际的解决方案参考如下地址(有很多的分类知识) http://blogs.msdn.com/b/ericwhite/archive/2008/10/20/eric-white-s-blog-s-table-of-contents.
1063 0
使用BOOTICE 恢复系统启动项
使用BOOTICE 恢复系统启动项 我在安装deepin 系统的时候,经常遇到重启进不去系统,每次重启都会进入windows 系统,这让我感到特别头疼,试了好多次都不成功,有些情况是,成功后再次重启又回到了windows系统。
1130 0
+关注
玄学酱
这个时候,玄酱是不是应该说点什么...
20709
文章
438
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载