Kerberoastingとはサービスチケットからツール等を用いてサービス・アカウントのパスワードをクラックする攻撃のこと。
まずは用語の解説
Kerberos認証
ネットワーク認証方式の1つ。クライアントはネットワーク内のサーバにアクセスする際、以下の流れでKDC (Key Distribution Center)からサーバへアクセスするためのサービスチケットを発行してもらう。(Active Directoryにおいては、通常、Domain ControllerがKDCの役割を果たす。)
- クライアントはTGT (Ticket Granting Ticket、チケットを取得するためのチケット)をKDCに要求する。
- KDCはクライアントを認証し、正しいユーザーであることを確認するとTGTをクライアントに発行する。
- クライアントは発行してもらったTGTを元に任意のサービスにアクセスするためのサービスチケットをKDCに要求する。
- KDCはサービスチケット要求が正しいユーザーから送られたものと判断すると、サービスチケットをクライアントに送る。
- クライアントは発行してもらったサービスチケットを用いてサーバへアクセス要求を行い、サーバ側でクライアントの検証が済めばアクセスを許可する。
こちら もあわせて参照。
サービス・アカウント
システム上のサービスやアプリケーションを実行するためのアカウント。多くの場合、コンピュータやアプリケーションに対して高い権限を有しており、それ故に攻撃者にとっては恰好の標的。
サービスチケット
ネットワーク内の各種サーバへアクセスする際、認証に使用されるチケット
SPN (Service Principal Name)
ネットワーク内のサーバやサービスを識別する識別子。KDCへサービスチケットを要求する際にSPNをセットすることにより、どのサーバやサービスのチケットが欲しいのかを伝える。SPNの詳細はこちらを参照。
Kerberoastingの流れ
1. Active Directoryをスキャンしてサービス・アカウント(SPNがセットされているアカウント)を列挙する。
2. 1.で列挙したサービス・アカウントに関連するサービスチケットをKDCから発行してもらう。
3. 発行されたサービスチケットをメモリに展開してファイルに保存する。
4. ツール等を用いてオフラインでサービスチケットからサービス・アカウントのパスワードをクラックする。
参考
https://docs.microsoft.com/en-us/windows/win32/ad/service-principal-names
https://docs.microsoft.com/en-us/windows/win32/ad/name-formats-for-unique-spns
https://attack.mitre.org/techniques/T1208/
https://www.fireeye.com/blog/threat-research/2020/04/kerberos-tickets-on-linux-red-teams.html
https://stealthbits.com/blog/extracting-service-account-passwords-with-kerberoasting/
https://www.harmj0y.net/blog/powershell/kerberoasting-without-mimikatz/
https://www.scip.ch/en/?labs.20181011