コンテンツにスキップ

computer account と gMSA

Active Directory の computer account は、単なる端末名ではなく security principal(セキュリティ主体)です。WEB01$ のように末尾 $ を持つ sAMAccountName で表され、パスワード、Kerberos key、NTLM 認証、group membership、ACL 上の権限を持ちます。

そのため、computer account の資格情報を得ると、LDAP/SMB/WinRM などに machine account として認証でき、付与されている AD 権限や group membership を利用できます。

pre-created computer account は、実際に端末を domain join する前に AD 上へ作成された computer object です。レガシー互換や運用ミスにより、初期 password が予測しやすい値になることがあります。

代表的な危険パターン:

  • computer account が作成されたまま、実際の domain join が行われていない。
  • pre-Windows 2000 compatibility などにより、初期 password が小文字ホスト名に近い。
  • stale computer object が無効化・削除されず、group membership や ACL を保持している。

例として APP01$ の初期 password が app01 のような形式になると、攻撃者は APP01$ として LDAP に認証できます。実際に domain join されて password がランダム化された後は、この前提は成立しません。

gMSA(Group Managed Service Account)は、DC が managed password を管理する service account です。どの host や group が gMSA password を取得できるかは、主に msDS-GroupMSAMembership(PowerShell では PrincipalsAllowedToRetrieveManagedPassword)で制御されます。

実体は security descriptor ですが、概念的には次のように読めます。

gMSA object:
msDS-GroupMSAMembership = WebServers
WebServers group:
member = WEB01$
意味:
WEB01$ は gMSA managed password を DC から取得できる。

ここで重要なのは、許可リストに user だけでなく computer account や group が入る点です。侵害された computer account が許可 group の member なら、その account 経由で gMSA password blob を読み、NTLM hash や Kerberos key を得られる可能性があります。

computer account と gMSA がつながる典型的な pivot は次の形です。

1. 弱い/未使用の computer account 資格情報を得る
2. machine account として LDAP に認証する
3. group membership を確認する
4. gMSA password read が許可されていることを見つける
5. gMSA の managed password を取得する
6. gMSA の権限で WinRM/SMB/LDAP/Kerberos へ展開する

gMSA 自体は安全な password rotation を提供しますが、「誰が password を取得できるか」が広すぎると強い pivot point になります。特に gMSA が Remote Management Users、管理用 group、委任設定、SPN を持つ場合は影響が大きくなります。

  • 未使用・stale な computer object が残っていないか。
  • ms-DS-MachineAccountQuota が不要に高くないか。
  • computer account が高権限 group や gMSA password read group に入っていないか。
  • msDS-GroupMSAMembership の trustee が最小限か。
  • gMSA が持つ group membership、SPN、delegation、local admin 権限が用途に合っているか。
  • computer account 作成/変更イベント(例: 4741/4742)と group membership 変更イベント(例: 4728/4732/4756)を追跡しているか。
  • pre-created computer account は domain join 完了まで期限管理し、不要になったら削除または無効化する。
  • 初期 password を予測可能な値にしない。レガシー互換設定を不用意に使わない。
  • gMSA password read は host 専用 group へ限定し、業務上必要な computer account だけを入れる。
  • gMSA を remote management や高権限 group に入れる場合は、利用 host と監査ログを明確にする。
  • stale computer object と stale group membership の棚卸しを定期化する。