HackTheBox: Administrator
偵察 — ポートスキャン・LDAP 列挙・AD ACL グラフ発見
ポートスキャン
FTP (21) + Kerberos (88) + LDAP (389) + SMB (445) + WinRM (5985) が揃う典型的な Windows ドメインコントローラー構成。FTP は通常の DC には存在しないため要注意。
LDAP 匿名バインド確認・ユーザー列挙
LDAP 匿名バインド成功。ドメインユーザーが列挙可能。初期認証情報 olivia:ichliebedich で BloodHound による ACL 調査を実施。
BloodHound で AD ACL グラフを収集
ACL チェーンを発見:
olivia → GenericAll → michael → ForceChangePassword → benjamin → FTP
emily → GenericWrite → ethan → DCSync → Administrator
AD ACL 連鎖 — GenericAll → ForceChangePassword → FTP Backup.psafe3
olivia GenericAll → michael パスワードリセット
GenericAll はオブジェクトへの完全制御権限。パスワードリセット・属性変更・SPN 付与など全ての操作が可能。
💎 取得認証情報
michael : Nirza123!
michael ForceChangePassword → benjamin パスワードリセット
ForceChangePassword は現在のパスワードを知らなくても対象ユーザーのパスワードを変更できる権限。DS-Replication-Get-Changes などの特権的操作と組み合わせると危険。
💎 取得認証情報
benjamin : Passw0rd123!
benjamin FTP ログイン → Backup.psafe3 取得
FTP サーバーに benjamin でログインできる。Password Safe v3 形式のバックアップファイルが置かれており、複数ユーザーの認証情報が暗号化されて保存されている。
Backup.psafe3 は Password Safe v3 形式の暗号化ファイル。マスターパスワードさえ解読できれば内部の全認証情報を取り出せる。
Password Safe 解読 — hashcat → pypwsafe → emily WinRM → user.txt
hashcat -m 5200 でマスターパスワードをクラック
Password Safe v3 は SHA-256 キーストレッチング (iterations 回) でマスターパスワードを強化し、Twofish CBC で認証情報を暗号化する。hashcat mode 5200 が対応。
🔑 マスターパスワード
tekieromucho
pypwsafe で Password Safe を解読して認証情報を抽出
pypwsafe は PyPI 未公開のため、twofish C 拡張 + hashlib で独自シムを実装。また twofish 0.3.0 の imp モジュール依存 (Python 3.13 で削除) を importlib.util.find_spec でパッチ済み。
3 件の認証情報が存在。BloodHound の ACL グラフから WinRM アクセス可能なのは emily と判断。
emily で WinRM 接続 → user.txt 取得
🚩 user.txt
6e89b771d33a8f0b39c5aa9ae2a23d6a
Targeted Kerberoasting — emily GenericWrite → ethan SPN 付与 → TGS クラック
emily GenericWrite で ethan に SPN を付与
GenericWrite を持つと servicePrincipalName 属性を書き込める。SPN を持つアカウントは Kerberos TGS チケットの対象になり、ドメインユーザーならハッシュを要求可能 (Targeted Kerberoasting)。
impacket-GetUserSPNs で TGS ハッシュを要求
TGS チケットは RC4 (type 23) で暗号化されている。サービスアカウントのパスワードハッシュが鍵なので、辞書攻撃でオフラインクラック可能。
hashcat -m 13100 で TGS ハッシュをクラック
💎 取得認証情報
ethan : limpbizkit
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 ハッシュを取り出せる。
💎 Administrator NT ハッシュ
3dc553ce4b9fd20bd016e098d2d2fd2e
Pass-the-Hash で Administrator として WinRM 接続 → root.txt 取得
NT ハッシュがあれば平文パスワードなしで NTLM 認証が可能 (Pass-the-Hash)。WinRM は NTLM をサポートするので -H フラグでハッシュを直接渡せる。
🚩 root.txt
2c6da579fb09d9b00efbdd25ba798b1f
全体まとめと防御側の学び
攻撃チェーンの全体像
| 段階 | 使った権限 / 手法 | 取得したもの |
|---|---|---|
| 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 の有効化でハッシュの使い回しを防ぐ。
