Keberoastingがうまくいく理由を理解するには、まずKerberosの基本を理解する必要があります。
Kerberosは、ユーザーやサービス(アプリ、データベース、サーバーなど)をActive Directoryやその他のドメイン内で安全に認証し、通信できるようにする認証プロトコルです。
Kerberos認証プロセスでは、チケット発行システムが使用されます。このシステムの中心にあるのが、ネットワークのドメイン・コントローラー上で動作する鍵配布センター(KDC)です。
KDCは、基本的にドメインの門番です。ネットワーク上のユーザーとサービスを認証し、チケットを発行します。チケットとは、ユーザーの身元を証明し、ネットワーク上の他のリソースへのアクセスを許可する認証情報のことです。ユーザーとサービスは、これらのチケットを交換して相互に認証します。
ユーザーがドメインにログインすると、まずKDCで認証され、Ticket Granting Ticket(TGT)を受け取ります。このTGTにより、ユーザーはドメイン・サービスへのアクセスを要求することができます。
ユーザーがサービスにアクセスしたい場合、KDCのTicket Granting Ticket(TGS)にリクエストを送信します。ユーザーの身元を保証するために、このリクエストにはTGTが添付されます。
これに応えて、KDCは「TGSチケット」とも呼ばれるサービス・チケットを発行します。このチケットは、サービス・アカウントのパスワードを使用して暗号化されています。これは、ターゲット・サービスのみがユーザーのアクセス・リクエストを検証できるようにするために行われます。ユーザーはこのサービス・チケットをターゲット・サービスに提示し、ターゲット・サービスはユーザーを認証して、安全なセッションを開始します。
Kerberosの設計には、Kerberoastingの影響を受ける危険性がいくつか残されています。
まず、KDCはユーザーがサービスへのアクセスを許可されているかどうかをチェックしません。どのユーザーも任意のサービスのチケットをリクエストできます。権限を強制し、許可されていないユーザーをブロックするのは、個々のサービスに任されています。したがって、ハッカーはドメイン管理者や他の特権ユーザーのアカウントを手に入れる必要がありません。侵害されたアカウントはどれも機能します。
第2に、Kerberosドメイン内の各サービスは、ドメイン上でサービスの実行を担当するサービス・アカウントと関連付けられる必要があります。サービス・アカウントにより、Kerberosはサービスを認証し、サービス・チケットを発行し、セキュリティー制御を実施することができます。また、これらのアカウントは高い権限を持っている傾向があるため、ハッカーのターゲットになります。
第3に、Kerberosチケットは、関連付けられたアカウントのパスワード・ハッシュをキーとして使用して暗号化されます。Kerberoastingにとって重要なのは、サービス・チケットが関連するサービス・アカウントのパスワード・ハッシュを使用するということです。
アカウント・パスワードは、KDCと関連サービスのみがそのパスワードを知っていればよいため、便利な対称暗号鍵です。ただし、チケットはパスワード・ハッシュを使用して暗号化されているため、ハッカーはチケットの暗号化を解読することで、サービス・アカウントのパスワードをリバースエンジニアリングすることができます。
さらに、手動で設定されたサービス・アカウントは、「Password never expires」フラグが有効になっていることがよくあります。そのため、長年使用されているネットワークでは、サービス・アカウントに、時代遅れのセキュリティー・ガイドラインに従った非常に古いパスワードが使われていることになり、簡単に解読されてしまう可能性があります。