首页
社区
课程
招聘
[翻译] 利用“导出函数和DCOM接口”执行穿透指令、实现横向渗透
发表于: 2018-5-5 15:21 15339

[翻译] 利用“导出函数和DCOM接口”执行穿透指令、实现横向渗透

2018-5-5 15:21
15339

上周三,我利用休息时间翻了翻\System32 目录,看能否找点儿什么。结果发现,有几个dll 文件导出了相同的函数OpenURL:


想着旗开得胜,能否简单调用一下呢?果然,url.dll 可以允许使用下面的命令执行HTML 应用(.hta):

在几个功能测试之后,我(贸然地)把这个发现发到Twitter 上。很快便收到回复,这些回复很有指导性,也让我无地自容。一方面,我本应该执行更多的测试进而深入理解发生了什么,而不是想着发到Twitter 上。另一方面,一些来自该领域的最优秀的人似乎几分钟就把这个问题给分好类了。非常感谢@subTee, @r0wdy_和@Hexacorn的快速分析。

简而言之,HTA文件是被MSHTA 调用的。这条Twitter (https://twitter.com/Hexacorn/status/974063407321223168)描述得很清晰:

“OpenURL/OpenURLA/FileProtocolHandler 调用了ShellExecute 函数,并传入了一个参数NULL(译者注:指的是lpOperation参数)。该函数会到注册表中查找默认的处理方式,由于参数为NULL,它会依次尝试使用“默认值、open、第一个可用的行为”。

” - @Hexacorn

如上所述,\SYSTEM32 目录下有三个dll 都导出了OpenURL 函数:

@Hexacorn写了一篇文章描述如何调用ieframe.dll, shdocvw.dll和url.dll。

通过.url 文件,可以在调用对应dll 时执行穿透命令:


URL样例文件(calc.url)内容:

调用样例

执行结果:



Shdocvw.dll 和ieframe.dll 具有一些同名函数,其中包括IWebBrowser2 接口,如下图所示:(译者注:使用DLL Export Viewer 打开对应dll 时,开启“Scan COM type libraries、Show methods、Show properties”即可查看到。)



这就很有意思了,因为我还在其他地方看到了IWebBrowser2 接口和其他接口的类似实现——主要是DCOM 应用(译者注:DCOM是指Distributed COM,DCOM无法通过防火墙)。

下面这些DCOM 应用(也许还有更多)似乎都提供了IWebBrowser2 接口(或类似接口):

让我们深入分析一下……

注意:在深入之前,我强烈建议大家阅读@enigma0x3的博客(https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/)了解必要的背景知识,有关DCOM横向渗透技术、启动权限和防范措施等。

概述——在我的测试用例中,该应用无法实现横向渗透。然而,所使用的背景知识对于后续阅读是很有帮助的。在上述的这篇文章(www.hexacorn.com/blog/2018/03/15/running-programs-via-proxy-jumping-on-a-edr-bypass-trampoline-part-5/)中,@Hexacorn描述了ieframe.dll 中的一个先前的漏洞(CVE-2016-3353)。通过一个特殊标记,.url 文件可以在不弹出安全警告的情况下,直接由ShellExecuteEx执行。(注:分析该漏洞的链接也在那篇文章中)。幸运的是,该漏洞已被修复。正如IE的常规应用一样,我们当然预期在下载或打开一些文件(例如,.url、.hta、.exe 等文件)时产生安全警告(常说的,“安全性检查”)。

当使用 iexplore.exe 实例执行测试用例时,IE safeguards 会阻止“通过DCOM 接口”执行远程命令。

@enigma0x3 的文章介绍了 ShellBrowserWindow 对外提供的 ShellExecute 方法,使用该方法执行远程命令,实现横向渗透。而我们则可以在绕过IE 浏览器安全限制的情况下,通过 IWebBrowser2 接口中的 Navigate 和 Navigate2 方法执行远程命令。

在后续样例中,我们将使用下面的这些 PowerShell 脚本的变体:

在继续分析之前,请注意以下内容:

接下来看看这种横向渗透的能力:

URL 文件:

在网域成员机器上执行:



在网域控制器上:


在Procmon 程序中,打开stack 面板,可以看到一些熟悉的模块和函数。(译者注:通过Procmon 查看calc.exe 进程创建的事件,选择与文件c:\windows\system32\calc.exe 有关的事件,可以查看到类似的窗口)



与ShellBrowserWindow相似,ShellWindows也对外提供了ShellExecute方法。下面快速展示一下如何使用Navigate/2方法执行远程命令。

本例中,使用如下PowerShell 脚本:


执行完这些命令后,得到如下输出:

哇!太有意思了!目前,该方法还需要更多测试,不推荐直接使用。尽管如此,这个方法还是十分优雅的。

本文简要说明了使用“IWebBrowser2” 的  Navigate/2 DCOM 接口进行横向渗透的方法。这些方法也许不像其他横向渗透方法那么灵活,但是仍然可以被RedTeam (译者注:在军事术语中,Red Team指的是高技能、有组织的团队,使用任何可能的方法发动攻击)或攻击者使用。和往常一样,防守者们需要留意这些攻击方法。


这有一些小建议:

针对穿透指令执行:


针对横向渗透:

感谢大家花时间阅读本文。欢迎留言。



原文链接:

https://bohops.com/2018/03/17/abusing-exported-functions-and-exposed-dcom-interfaces-for-pass-thru-command-execution-and-lateral-movement/

编译:看雪翻译小组yezhang





[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
mark
2018-5-5 23:41
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mark
2018-5-6 16:31
0
雪    币: 23
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
mark
2021-2-17 22:48
0
游客
登录 | 注册 方可回帖
返回
//