Cyber Security Academy · レッスン

KerberosとKerberoasting

サービスアカウントのチケットを解析します。

レッスン 2/413 ステップ

「KerberosとKerberoasting」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。

Kerberosを一枚で理解する

Kerberosはチケットベースの認証プロトコルです。クライアントはパスワードを送信する代わりに、各ドメインコントローラー上で稼働するKey Distribution Center(KDC)が発行した暗号化チケットを提示します。

  • Authentication Server(AS)は、Ticket Granting Ticket(TGT)を発行します。
  • Ticket Granting Server(TGS)は、サービスチケットを発行します。
  • サービスは、DCに接続せずにチケットを検証します。

3つの交換

Kerberosには3つのメッセージ交換があります。これらを理解すると、攻撃がどこに当てはまるのかがわかります。

  • AS-REQ / AS-REP: クライアントが本人確認(事前認証)を行い、krbtgtキーで暗号化されたTGTを取得します。
  • TGS-REQ / TGS-REP: クライアントがTGTを提示し、サービスチケット(TGS)を要求します。
  • AP-REQ / AP-REP: クライアントがTGSをサービスに提示します。

AS-REP Roastingは最初の交換を、Kerberoastingは2番目の交換を攻撃します。

サービスプリンシパル名

Service Principal Name(SPN)は、サービスのインスタンスと、それを実行するアカウントを対応付けます。SPNに対してTGSを要求すると、発行されたチケットの一部がサービスアカウントのパスワードハッシュで暗号化されます。

これがKerberoastingの核心です。認証済みのユーザーであれば誰でもサービスアカウントのチケットを要求でき、その後、オフラインでクラックして平文のパスワードを復元できます。

# Find accounts with SPNs set
Get-DomainUser -SPN | select samaccountname,serviceprincipalname

Kerberoastingの手順

サービスチケットであるTGSの要求は通常の動作であるため、Kerberoastingは検知されにくい攻撃です。手順は次のとおりです。

  • SPNを持つユーザーアカウントを列挙します。
  • それらのSPNに対してTGSチケットを要求します。
  • 暗号化されたチケットデータを抽出します。
  • ワードリストを使ってオフラインでクラックします。クラック中にDCとのやり取りは必要ありません。
# Rubeus: request and dump kerberoastable hashes
Rubeus.exe kerberoast /outfile:hashes.txt

# Impacket from Linux
GetUserSPNs.py domain/user:pass -dc-ip 10.0.0.10 -request

チケットのクラック

取得したチケットでは、サービスアカウントのパスワードが鍵として使われています。オフラインクラックでは、候補となるパスワードを試し、チケットを正しく復号できるものを探します。

サービスアカウントには、脆弱で長期間ローテーションされていないパスワードが使われていることが多く、短時間でクラックされる可能性があります。

# Hashcat mode 13100 = Kerberos 5 TGS-REP etype 23 (RC4)
hashcat -m 13100 hashes.txt rockyou.txt

# etype 18 (AES256) uses mode 19700
hashcat -m 19700 hashes_aes.txt rockyou.txt

暗号化方式が重要な理由

チケットに使われる暗号方式によって、クラックにかかる時間が変わります。

  • RC4(etype 23)はクラックが速く、現在も許可されている場合は危険信号です。
  • AES(etype 17/18)は、総当たり攻撃に対してはるかに時間がかかります。
  • 攻撃者は、/tgtdelegやmsDS-SupportedEncryptionTypesの悪用によって、要求をRC4にダウングレードする可能性があります。

防御側はドメイン全体でRC4を無効にし、AESを強制する必要があります。

AS-REP Roasting

関連する攻撃として、Kerberosの事前認証が無効になっているアカウント(DONT_REQ_PREAUTH)を標的にするものがあります。事前認証がなければ、ユーザーのパスワードハッシュで暗号化されたデータをAS-REPから取得できます。認証情報は一切必要ありません。

# Rubeus AS-REP roast
Rubeus.exe asreproast /format:hashcat /outfile:asrep.txt

# Hashcat mode 18200
hashcat -m 18200 asrep.txt rockyou.txt

なぜこれほど頻繁に成功するのか

Kerberoastingが成功するのは、プロトコルの欠陥ではなく、構造的な弱点があるためです。

  • 設計上、認証済みのプリンシパルであれば誰でも、任意のサービスチケットを要求できます。
  • サービスアカウントは、一度設定された後、脆弱なパスワードのままローテーションされないことがよくあります。
  • 高い権限で実行されているアカウントも多くあります(たとえば、Domain Adminsに所属するSQLサービスアカウントなど)。
  • クラックは完全にオフラインで行われるため、アカウントロックアウトは発生しません。

検知戦略

防御側は、TGS要求のテレメトリを監視することでRoastingを検知できます。

  • イベント4769でRC4(0x17)のチケット要求を監視します。特に、1つのアカウントから短時間に集中して発生している場合は注意が必要です。
  • 1つのプリンシパルが短時間に多数の異なるSPNを要求した場合にアラートを出します。
  • ハニーポットSPNアカウントを配置します。正規のサービスが使用しないため、要求があれば悪意のある操作と判断できます。

サービスアカウントの強化

長期的な対策は、チケットをクラック可能にする条件を取り除くことです。

  • グループ管理サービスアカウント(gMSA)を使用し、120文字以上のパスワードを自動的にローテーションします。
  • 残っている従来型のサービスアカウントには、長く複雑なパスワードを設定します。
  • RC4を無効にし、AES暗号化方式を必須にします。
  • 不要なSPNを削除し、アカウントに最小権限を適用します。

倫理的な運用

承認済みのテストでは、隔離された環境でチケットをクラックし、平文の認証情報をエンゲージメントの範囲外へ持ち出してはいけません。どのアカウントをどれだけの速さでクラックできたかを報告し、クライアントが gMSA への移行を優先できるようにします。

クラックされたパスワードは機密情報として扱い、暗号化して保存し、報告後に完全に削除してください。

理解度チェック

Kerberoastingの仕組みを理解できているか確認します。

復習

Kerberosがチケットを発行する仕組みと、その仕組みがどのように悪用されるかを学びました。

  • SPNチケットはサービスアカウントのハッシュで暗号化されるため、オフラインでクラックできます。
  • RC4チケットは高速にクラックできます。防御策はAESとgMSAです。
  • 事前認証が無効になっている場合、AS-REP roastingには認証情報が必要ありません。
  • ハニーポットSPNと4769のRC4監視によって攻撃を検知できます。

次は、窃取した認証情報をPass-the-HashとPass-the-Ticketで再利用する方法を扱います。

無料で開始

AI チューターと学ぶ Cyber Security Academy — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
76
レッスン
303

よくある質問

「KerberosとKerberoasting」レッスンは無料ですか?

はい。「KerberosとKerberoasting」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。

「KerberosとKerberoasting」で何を学びますか?

サービスアカウントのチケットを解析します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cyber Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「KerberosとKerberoasting」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCyber Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Active Directoryの攻撃対象領域
  2. KerberosとKerberoasting
  3. Pass-the-HashとPass-the-Ticket
  4. 権限昇格とドメイン支配
← Cyber Security Academyに戻る