Kerberoastingとは

Kerberoastingとはサービスチケットからツール等を用いてサービス・アカウントのパスワードをクラックする攻撃のこと。

まずは用語の解説

Kerberos認証
ネットワーク認証方式の1つ。クライアントはネットワーク内のサーバにアクセスする際、以下の流れでKDC (Key Distribution Center)からサーバへアクセスするためのサービスチケットを発行してもらう。(Active Directoryにおいては、通常、Domain ControllerがKDCの役割を果たす。)

  1. クライアントはTGT (Ticket Granting Ticket、チケットを取得するためのチケット)をKDCに要求する。
  2.  KDCはクライアントを認証し、正しいユーザーであることを確認するとTGTをクライアントに発行する。
  3. クライアントは発行してもらったTGTを元に任意のサービスにアクセスするためのサービスチケットをKDCに要求する。
  4. KDCはサービスチケット要求が正しいユーザーから送られたものと判断すると、サービスチケットをクライアントに送る。
  5. クライアントは発行してもらったサービスチケットを用いてサーバへアクセス要求を行い、サーバ側でクライアントの検証が済めばアクセスを許可する。

    こちら もあわせて参照。

サービス・アカウント
システム上のサービスやアプリケーションを実行するためのアカウント。多くの場合、コンピュータやアプリケーションに対して高い権限を有しており、それ故に攻撃者にとっては恰好の標的。

サービスチケット
ネットワーク内の各種サーバへアクセスする際、認証に使用されるチケット

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

Detecting Kerberoasting

Leave a Reply

Your email address will not be published. Required fields are marked *