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

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

2018-5-5 15:21
15746

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


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

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

简而言之,HTA文件是被MSHTA 调用的。这条Twitter (2bdK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6@1N6$3W2@1N6r3g2J5i4K6u0W2j5$3!0E0i4K6u0r3d9r3g2^5j5h3y4G2M7X3&6Q4x3V1k6K6N6r3q4@1N6i4y4Q4x3V1j5&6y4K6b7H3y4U0x3@1x3o6M7K6x3U0p5J5x3U0x3I4y4U0R3`.)描述得很清晰:

“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的博客(237K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6W2L8X3W2Y4L8h3p5H3P5o6y4Q4x3X3g2F1k6i4c8Q4x3V1j5J5x3o6p5%4i4K6u0r3x3o6q4Q4x3V1j5J5x3#2)9J5c8X3I4S2N6r3g2J5j5h3I4Q4x3X3c8E0L8%4k6W2L8h3g2F1N6q4)9J5k6s2k6A6j5g2)9J5k6r3c8U0L8$3#2Q4x3X3c8J5L8%4g2F1k6q4)9J5k6o6u0Q4x3V1j5`.)了解必要的背景知识,有关DCOM横向渗透技术、启动权限和防范措施等。

概述——在我的测试用例中,该应用无法实现横向渗透。然而,所使用的背景知识对于后续阅读是很有帮助的。在上述的这篇文章(8b8N6%4N6%4i4K6u0W2K9r3g2^5j5h3y4G2M7X3&6Q4x3X3g2U0L8$3#2Q4x3V1k6T1L8r3!0Y4i4K6u0r3x3U0l9I4z5q4)9J5c8U0l9K6i4K6u0r3x3e0g2Q4x3V1k6J5N6h3&6F1K9h3&6Y4i4K6u0V1M7s2u0G2k6%4u0S2L8i4y4Q4x3X3c8$3K9h3q4Q4x3X3c8H3M7X3!0^5P5g2)9J5k6r3A6#2L8i4m8A6L8X3N6Q4x3X3c8G2L8W2)9J5k6r3q4Q4x3X3c8W2k6s2u0Q4x3X3c8T1P5i4m8S2M7%4y4Q4x3X3c8@1M7X3q4E0M7r3!0D9K9h3&6W2i4K6u0V1M7r3q4J5N6q4)9J5k6o6g2Q4x3V1j5`.)中,@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指的是高技能、有组织的团队,使用任何可能的方法发动攻击)或攻击者使用。和往常一样,防守者们需要留意这些攻击方法。


这有一些小建议:

针对穿透指令执行:


针对横向渗透:

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



原文链接:

637K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8$3S2G2M7s2y4Q4x3X3g2U0L8$3#2Q4x3V1j5J5x3o6p5^5i4K6u0r3x3o6y4Q4x3V1j5I4y4#2)9J5c8X3q4T1N6i4y4A6L8X3N6Q4x3X3c8W2P5s2m8G2M7Y4c8W2k6q4)9J5k6r3k6#2L8X3y4@1K9h3!0F1M7#2)9J5k6r3q4F1k6q4)9J5k6r3g2^5M7r3!0K6k6h3c8Q4x3X3c8V1j5$3!0E0i4K6u0V1K9h3&6@1k6i4u0X3j5h3y4W2M7#2)9J5k6r3k6G2M7W2)9J5k6s2m8S2M7%4y4Q4x3X3c8@1K9s2u0#2i4K6u0V1j5$3!0E0L8h3q4F1k6q4)9J5k6r3g2^5k6h3y4#2N6r3W2G2L8W2)9J5k6r3q4F1k6q4)9J5k6r3I4S2N6r3g2J5j5h3I4Q4x3X3c8E0L8%4k6W2L8h3g2F1N6q4)9J5c8R3`.`.

编译:看雪翻译小组yezhang





[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 577
活跃值: (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
游客
登录 | 注册 方可回帖
返回