~この記事はかろ噴水・ゆるゆる Advent Calendar 2023 に参加しています~
https://adventar.org/calendars/9062
はじめに
この記事は「ケルベロス認証の名前は知っているけれど、仕組みはよくわからない」という人向けの記事です。
身近な例を使って仕組みを解説をします。具体的には、スーパー銭湯の例を使います。
厳密な解説は既に多数あるので、後述の参照も見てみてください。
Kerberos認証とは
オンプレミスのActive Directroyで用いられる認証です。(Azure ADとは別物です)
一度ログインすれば、次回以降はIDとパスワードの入力なしでログインし、サービスを利用できるようになります。
Kerberos認証のイメージ
認証フローを図解すると以下のようになります。
複雑で読み込むのには時間がかかるので、Kerberos認証っぽい別のイメージを流用して理解した方が早いです。
https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/windows-security/kerberos-authentication-troubleshooting-guidance
Kerberos認証っぽいもの
突然ですが、スーパー銭湯の認証はKerberos認証によく似ています。
Kerberos認証
一度ログインすれば、次回以降はIDとパスワードの入力なしでログインし、サービスを利用できるようになります。
スーパー銭湯の認証
一度入館時に身分証や会員証を提示すれば、以降は提示無しで岩盤浴やマッサージなどのサービスを利用できます。
スーパー銭湯の認証のイメージ
スーパー銭湯で岩盤浴などを利用する時の認証フローを書きました。
Kerberos認証との対比
Kerberos認証では、一度PCログイン時にパスワードを入力すると、端末内にTGTチケットが保存されログイン済みであることが記録されます。
その後、IIS/メールサーバ/ファイルサーバ などのサービスを使う際には端末内のTGTをADに見せると、ADはサービスを利用するためのそれぞれのTGSチケットを引き渡します。
ただし、ユーザがサービス利用権限を持っていない場合は無効なTGSチケットを引き渡します。
スーパー銭湯の認証では、一度入館すると腕輪や入館券が渡されて、入館手続き済であることが記録されます。
その後、岩盤浴などを利用する際は別途チケットをもらいます。
まとめ
Kerberos認証ではユーザにTGTチケットとTGSチケットを渡します。
TGTチケットはパスワード入力が必要です。
TGSチケットはTGTチケットをADに見せる(自動)だけでよいのでパスワード入力不要です。
IIS/メールサーバ/ファイルサーバ などの各サービス毎にTGSが引き渡されます。
おまけ
AS-REP Roasting攻撃
一般ユーザとは異なる、サービス管理アカウントなどに対しては、パスワードなし(つまりユーザ名のみ)でTGTチケットを引き渡す運用にしているケースがあります。
それを利用し、TGTを入手する攻撃をAS-REP Roasting攻撃と呼びます。
これはスーパー銭湯で例えると、「清掃員は顔パスで入館チケットを与える」ようなイメージです。
「清掃員です」と名乗ったらスーパー銭湯に入館できるようなものです。
Kerberoasting攻撃
ポイントは2つあります。
ポイント1
ユーザがADにTGSチケットを要求した際に、ユーザがサービス利用権限を持っていない場合は無効なTGSチケットを引き渡します。
無効ですが、TGSチケットはもらえるというのがポイントです。
ポイント2
TGSチケットには無効/有効のステータスやタイムスタンプなどの情報が含まれており、当然暗号化されています。
更に、暗号化の仕様上、サービス管理アカウントのパスワードハッシュがTGSには含まれます。
攻撃フロー
ポイント1・2を組み合わせると以下の攻撃フローが考えられらます。
- TGTを入手する
- TGSを入手する(無効でもよい)
- TGSの中のサービス管理アカウントのパスワードハッシュを解析しパスワードを入手する
- サービス管理アカウントのユーザ名・パスワードを利用してログインする
参照
https://learn.microsoft.com/ja-jp/windows-server/security/kerberos/kerberos-authentication-overview
https://qiita.com/sathis/items/42ba8157537becdb9788
https://wa3.i-3-i.info/word15908.html