前言

月更博主上线,秉持着偶尔摆烂会开心好久的精神,这一个月就没更新,下次亿定勤快更新。

关于钓鱼一些技巧其实在前面那篇XSS攻击思路以及钓鱼已经介绍了一些,但是对于一些文档钓鱼以及宏钓鱼并未进行设计,故有了这篇钓鱼中的一些文档妙用这篇文章。涉及Word、Execl、PDF、CHM、PPT等等文档的攻击手法,在Web领域到红队领域,使用各种文档来进行攻击的姿势层出不穷,往往起到了一个出其不意的攻击,那么这篇文章就来介绍一下一些宏钓鱼。

ps:我这里用的环境是office2019和office2016,

简单介绍一下宏以及宏病毒

宏(Macro)是一种批量处理的称谓,是指能组织到一起作为独立的命令使用的一系列Word命令,可以实现任务执行的自动化,简化日常的工作

宏病毒是一种寄存在文档或模板的宏中的计算机病毒,存在于数据文件或模板中(字处理文档、数据表格、数据库、演示文档等),使用宏语言编写,利用宏语言的功能将自己寄生到其他数据文档

一旦打开带有宏病毒的文档,宏就会被执行,宏病毒就会被激活,转移到计算机上,驻留在Normal模板上。在此之后所有自动保存的文档都会“感染”上这种宏病毒,如果其他用户打开了感染病毒的文档,宏病毒又会转移到他的计算机上

在Word和其他微软Office系列办公软件中,宏分为两种

内建宏:局部宏,位于文档中,对该文档有效,如文档打开(AutoOpen)、保存、打印、关闭等

全局宏:位于office模板中,为所有文档所共用,如打开Word程序(AutoExec)

宏病毒的传播路线如下:

单机:单个Office文档 => Office文档模板 => 多个Office文档(文档到模块感染)

网络:电子邮件居多

首先Office文档被感染病毒,当文档打开会执行自动宏,如果宏被执行,它会去检测当前模板是否被感染病毒,如果没有被感染,它会将释放自身的病毒代码。当模板被感染之后,系统中任何一个文档被打开,都会执行模板中的病毒,宏病毒进行传播

宏病毒的感染方案就是让宏在这两类文件之间互相感染,即数据文档、文档模板

宏病毒也可以通过网络进行传播,譬如电子邮件

Word宏上线的变种姿势(缺陷Word宏)

关于CS这个工具,在前面出过一篇文章介绍过https://plumstar.cn/2022/03/07/cs-an-zhuang/,关于他的一些功能大家可以去实际感受一下

生成宏:攻击-生成后门-MS Office Macro-添加监听

监听添加成功后就生成我们需要的宏了,点击copy即可

添加宏:新建word文档-视图-宏;宏的名字随意

这里的宏的位置除了word命令都可以选择,自由选择。将原有的删除并将CS生成的宏复制进去

ps:所有活动模板和文档以及公用模板会将所有文件都添加该宏,所以不建议。

保存为.docm或者.dotm文档,这两个文件格式都是启用宏的Word格式,这里我自动生成的是.docm文档

不过实际测试即使保存为.dotm或者.docm还是需要受害者去手动点击启用宏,大部分用户都会上钩。

ps:注意现在大多数杀毒软件都会查杀,实验时记得关闭杀毒软件,或者将后三行代码删除,恶意Word仍然能够上线,并且能在一定程度上规避查杀,这里我火绒就报毒了

受害者点击启用内容,我们CS就上线了,我这里是本地打本地,那么到这里我们的钓鱼就成功了。

看一下上线方式是调用了rundii32.exe这个dll

简单介绍一下这个dll

rundll32的正常位置:c:\windows\system32 在宏脚本中也可以找到生成rundll32.exe的痕迹

rundll32.exe是“执行32位或者64位的DLL文件”。它的作用是执行DLL文件中的内部函数,这样在进程当中,只会有 Rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。

Rundll32.exe使用的函数原型:

Void CALLBACK FunctionName (
HWND hwnd,
HINSTANCE hinst,
LPTSTR lpCmdLine,
Int nCmdShow
);

其命令行下的使用方法为:Rundll32.exe DLLname,Functionname [Arguments]

工作方式:

Rundll 执行以下步骤:

1. 分析命令行
2. 通过 LoadLibrary() 加载指定的 DLL
3. 通过 GetProcAddress() 获取 <entrypoint> 函数的地址
4. 调用 <entrypoint> 函数,并传递作为 <optional arguments> 的命令行尾。
5.  <entrypoint> 函数返回时,Rundll.exe 将卸载 DLL 并退出

利用DOCX文档远程模板注入执行宏

在word里面找一个模板新建word文档,并保存为.docx文档,就是说你需要在新建中找一个模板word,例如下面的这些日历,简历等等,才会去远程加载模板,保存为.docx后缀

将.docx改为.zip并且解压出来,找到word下的_rels里面的setting.xml.rels,这是一个远程加载模板的文件

这里用github实现远程加载的作用,将之前生成好的.dotm或.docm文件上传到github

http://schemas.openxmlformats.org/package/2006/relationships改为GitHub的远程模板链接并在后面加上?raw=true 如下图

或者:修改后面的file:///C:\Users\plum_star\AppData\Local\Microsoft\Office\16.0\DTS\zh-CN%7b0577DB4F-07BE-4E4D-8A57-0D36FA4DB8DB%7d\%7bD6FB61CA-D84D-4489-94BD-7430028732A7%7dtf00546271_win32.dotx,将其改成你的GitHub远程模板链接也是可以达到一样的效果

修改完成后保存后压缩为.zip然后修改后缀为.docx 一个远程宏钓鱼文档就做好了,用户直接点击该文档

正常情况下用户都会点击是,那么CS就成功上线

Word DDE

版本问题:office2019复现未成功,office2016成功,应该是版本问题

Microsoft Office Word提供了的一个执行任意代码的方法,可以在不启用宏的情况下执行任意程序。为了更方便地在 word 里同步更新其它应用的内容,比如说在一个 word 文档里引用了另一个 excel 表格里的某项内容,通过连接域 (Field) 的方式可以实现在 excel 里更新内容后 word 中同步更新的效果。

但是问题出在这个域的内容可以是一个公式 (或者说表达式),这个公式并不限制内容,可以添加我们的恶意命令来达到攻击的效果。

新建Word文档,CTRL+F9,在文档中出现”{}”之后将代码复制大括号之间,保存文件即可,这里火绒也报毒了,记得把杀软关了。

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

不过需要用户两个选项都点击是,攻击即可成功。当然在实战中写的语句就是远程下载我们的木马或者写CS无落地文件payload即可。

Office OLE+LNK

从标题就不难看出这是一个组合的钓鱼知识,用到了LNK恶意文件的知识点,也用到了office OLE的知识点,下面就演示一下这种钓鱼方法。

ps:环境是office2016,office2019会默认会禁止加载对象

新建一个快捷方式,这里实验依旧是弹计算器,实战就直接换上线语句即可。

目标位置填:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -command calc

起始位置填:
%windir%\system32\WindowsPowerShell\v1.0

新建一个word文档或excel文档,选择插入-对象-Package,同时可以将图标改为一些吸引人的诱导被害者去点击。

将我们刚开始生成的快捷方式添加进去即可,点击下一步,再点击完成,一个钓鱼word文档就做好了

当受害人接收到这个文档,点击这个Package时,就会加载我们的快捷方式,当时实战就是执行我们的上线语句,那么我们的目的就达到了。

使用word文档进行XXE攻击

docx文档其实就是把一堆xml文件按照一定的格式压缩在一起的一种文件格式,在上方远程加载时也是进行了xml文件的编辑,只要将.docx改为.zip后解压就可以看到docx文档的真实面貌了。

那么当我们将恶意语句嵌入到docx文档中的一些xml文件里,设法让目标网站触发,那么攻击就有机会成功。

ps:这个姿势的关键点在于,既然DOCX文档是由XML压缩而成的,那么网站的一些功能,比方说在线阅读DOCX文档,在线解析DOCX文档等等功能,一定绕不开解析DOCX文档里的XML文件。所以那种网盘在线阅读DOCX文档、网站在线解析DOCX文档、邮件系统传输DOCX文档等等功能都有可能存在这类漏洞,平时漏洞挖掘的时候记得多留个心眼。

这种利用姿势有两种。

第一个回显位置在word/document.xml文件。在xml声明的下方添加我们的恶意语句即可,然后保存文件并压缩,将.zip改为.docx即可。

第二个回显位置是在线浏览或者转换docx文档的功能处的回显点,即文章的页码。所在位置为docProps/app.xml

可以看到有Pages标签,在该标签中插入XXE攻击语句即可,跟上方一样的操作。

利用word OLE功能进行XXE攻击

这部分转载于阿里先知社区“你回来吗”师傅,因为可能是我本地环境问题,用了2016和2019版本都复现失败,原因未知;链接:https://xz.aliyun.com/t/11203#toc-5

然后就是出自前几天比赛学习的一种新手法 这种手法只适用于Libreoffice 并且在实战场景是有利用空间的 很多在线网站word转pdf用的都是libreoffice

这道题的设计背景就是 试了xxe发现不行 然后就各种搜索资料 发现word文档是可以以文件的方式嵌入和链接OLE对象 OLE就是一种面向对象技术 利用这种方式就可以把文件 声音 图像表格 应用程序组合在一起

选择插入 OLE Object

然后在这里选择Link to file

可以看到这里面可以成功读取

然后我们保存 这里面要注意一个坑 不能直接保存为docx格式 要先保存为odt格式 我们再手动修改扩展名

这时候以zip格式打开就可以看到

格式大概是这样 我们打开content.xml

可以看到 在xlink: href 这里面连接到/etc/passwd 那你也能想到我们可以把他修改/flag上传

这时候我们发现是可行的 但是这种方法读取的行数是有限的 读不到完整flag

解决方法也很简单 我们自己写个文本框来解析 代码如下

<text:section text:name="string"><text:section-source xlink:href="../../../../../../flag" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></text:section>

可以看到能过成功解析 读取flag

Office Word 本身的一些漏洞

当前不管是实际钓鱼还是红蓝对抗这种情况,使用word钓鱼的情况很少,其一是免杀不好做,其二是不稳定非常容易掉线。如果真的要用Word进行钓鱼,最好是利用Word本身的一些漏洞。比如去年爆出的CVE-2021-40444 Office Word远程代码执行漏洞等

当然这些漏洞其实可遇不可求,加之攻击者也无法确定目标机器上到底有没有打相关的补丁,所以风险还是大,实战也绝对不推荐大家使用这种方法去钓(如果说是那种刚出没几天还热乎的Office Word漏洞,倒是可以试着用一下)。

其他一些可能能利用的点

在其他大佬文章那里看见了一个利用点,既然.docx其实就是一个.zip文件,那么php又有很丰富的伪协议,那么如果一个php网站存在上传.docx的功能,可以考虑把php一句话木马压缩改为.docx然后上传,之后用zip://解压出来,有可能会有奇效。

http:127.0.0.1/index.php?payload=zip://uploads/1.docx#exploit&a=phpinfo();

关于免杀

关于免杀我就步做过多演示,本人也不是很了解,就需要各位师傅去研究了,这里我推荐一些好的文章和项目

可以看这位师傅的文章:https://blog.51cto.com/u_15274949/2930858

GitHub链接如下:https://github.com/outflanknl/EvilClippy/releases/tag/v1.3

未完待续