前言
在2017年纳什维尔的BSides会议上,Casey Smith(@SubTee)和我(Matt Nelson,@ enigma0x3)发表了题为《Windows Operating System Archaeology》的演讲。在本次演讲中,我们展示...
前言
在2017年纳什维尔的BSides会议上,Casey Smith(@SubTee)和我(Matt Nelson,@ enigma0x3)发表了题为《Windows Operating System Archaeology》的演讲。在本次演讲中,我们展示了一些在Windows中利用组件对象模型(COM)的攻击技术。接下来,我将讨论使用攻击者控制的输入调用GetObject()函数来攻击上述语音的方法。
某些系统环境使用白名单来防止未签名的
Windows Scripting Host(WSH)文件运行,尤其是恶意.js或.vbs脚本文件越来越多。但是,通过将我们的恶意代码注入Microsoft签名的WSH脚本,我们可以规避这一限制。
在深入研究可用于注入的脚本之前,了解工作机制非常重要。在注入攻击的情况下,我们将攻击者控制的输入作为参数传递给
GetObject()函数,然后将其与
script:或
scriptlet:COM标记组合。
GetObject()函数
此方法允许您访问已实例化的COM对象。如果没有对象的实例(如果以不包含COM标记的方式调用),则函数调用将无法执行。例如,通过
GetObject()函数访问Microsoft Excel中的COM对象的方法如下:
1
设置 obj = GetObject( 'Excel.Application')
为了使上述代码有效,必须有一个Excel实例运行。单击此处以了解有关
GetObject()功能的更多信息。
COM标记
虽然GetObject()函数本身很有趣,但它只允许我们访问已经实例化的COM对象。为了解决这个问题,我们可以实现一个COM标记来促进我们的有效负载执行。如果您不熟悉COM标记,可以在此处阅读更多相关信息。 Windows中有许多不同的COM标记,允许您以各种方式实例化对象。从攻击的角度来看,您可以使用这些标记来执行恶意代码。但这是另一篇博客文章:的主题 - )。
出于本文的目的,我们将关注两个标签
script:或
scriptlet:。这些特定标记与scrobj.dll一起使用,以帮助执行COM脚本,该脚本将作为我们的Payload。这是由Casey Smith(@SubTee)发现的,2016年在DerbyCon上进行了讨论,并发表了一篇文章。
如下所示是一个COM脚本:
1
2
3
4
<XML version='1.0'?>
Var r = new ActiveXObject('WScript.Shell')。运行('calc.exe');
]>
< /&的scriptlet GT;
您还可以使用James Forshaw(@tiraniddo)开发的DotNetToJScript工具在COM脚本中扩展JScript/VBScript,它允许您调用Win32 API甚至执行Shellcode。当您将这两个COM标记中的任何一个与对GetObject()函数的各种调用组合在一起时,情况就会变得很有趣。
非常简短的COM背景介绍已经结束,现在是时候看一个例子了。
PubPrn.vbs
在Windows 7及更高版本上,有一个名为
PubPrn.vbs的Microsoft签名WSH脚本,该脚本位于
C:\Windows\System32\Printing_Admin_Scripts\en-US目录中。查看此脚本的代码,很明显它将用户提供的输入作为参数(通过命令行参数)并将参数传递给
GetObject()函数。

这意味着我们可以运行此脚本并传递它期望的两个参数。第一个参数可以是任何东西,第二个参数是通过
script:令牌传递的Payload。
注意:如果您提供的第一个参数值不是有效的网络地址(因为它需要ServerName),则可以在调用时将
/b参数添加到cscript.exe以禁止显示其他错误消息。

由于VBScript依赖于COM组件来执行操作,因此它在许多Microsoft签名的脚本中被大量使用。本文仅提供一个示例来说明,必须有其他脚本可以以类似的方式使用。我鼓励你继续探索。
本文由乘客安全翻译,作者:h4d35
原文链接:https://enigma0x3.net/2017/08/03/wsh-injection-a-case-study/
黑客业务列表介绍和一般分类:
类别:攻击入侵破解开发
1:攻击业务订单:暂时取消所有此类业务订单[仅销售常规IDC流量]
2:入侵业务清单:包括网站源代码,办公系统,黑色系统,教育系统等。
3:破解业务类:软件,加密文件,二次打包,脱壳等。
4:二次开发业务清单:软件二次开发,源代码二次开发等
5:其他业务订单:特洛伊木马[通过所有防病毒],远程控制,特殊软件等
备注:未提及的业务订单可根据主要类别查询或直接联系客户服务。为避免浪费双方时间,请在咨询前阅读:业务交易流程及相关说明
注意:仅接受正式业务,个人无权接受。收集此内容。