【ITニュース解説】Kerberoasting
2025年09月10日に「Hacker News」が公開したITニュース「Kerberoasting」について初心者にもわかりやすく解説しています。
ITニュース概要
Kerberoastingとは、企業などで広く使われる認証システム「Active Directory」に対するサイバー攻撃手法の一つ。システムが利用する特別なアカウントのパスワード情報を盗み出し、オフラインで解読して不正アクセスを試みる。この手法への対策が重要となる。
ITニュース解説
Kerberoastingとは、企業ネットワークなどで広く利用されている認証プロトコルであるKerberos認証の仕組みを悪用した攻撃手法の一つだ。システムエンジニアを目指す上で、このような認証システムへの攻撃手法とその対策を理解することは非常に重要である。
まず、Kerberos認証の基本的な仕組みから説明する。Kerberosは、ユーザーがパスワードなどの機密情報をネットワーク上に直接流すことなく、安全にサービスへのアクセスを認証するためのシステムだ。このシステムには主に三つの登場人物がいる。一つはサービスを利用したい「ユーザー」または「クライアント」。二つ目は認証を司る「KDC(Key Distribution Center)」と呼ばれるサーバーだ。KDCは、ユーザーを認証しチケットを発行する「認証サーバー(AS)」と、サービスにアクセスするためのチケットを発行する「チケット許可サーバー(TGS)」という二つの役割を果たす。そして三つ目が、ユーザーが利用したい「サービス」を提供するサーバー、例えばWebサーバーやデータベースサーバーなどだ。
Kerberos認証では、ユーザーが最初にKDCにアクセスし、自身のパスワードを使って認証を受ける。認証が成功すると、KDCは「チケット許可チケット(TGT)」という一時的な認証情報(チケット)をユーザーに発行する。このTGTはKDCによって暗号化されており、ユーザーがKDCに再認証なしでサービスチケットを要求するために使用される。次に、ユーザーが特定のサービスを利用したい場合、先ほど取得したTGTを使ってKDCに「サービスチケット」を要求する。KDCは、ユーザーのTGTが有効であることを確認すると、ユーザーが利用したいサービスに対応する「サービスチケット」を発行する。このサービスチケットは、サービスを提供するサーバーが理解できるように、そのサービスの「サービスアカウント」のパスワードハッシュを使って暗号化されている。ユーザーはこのサービスチケットをサービスサーバーに提示することで、認証が完了し、サービスを利用できるようになる。
ここでKerberoasting攻撃において非常に重要な概念となるのが「SPN(Service Principal Name)」である。SPNは、Kerberos認証において特定のネットワークサービスを一意に識別するための名前だ。ちょうど人間がユーザーIDによって識別されるのと同じように、SPNはネットワーク上のサービス、例えば「WebサーバーのHTTPサービス」や「SQLデータベースのサービス」などを識別する。これらのSPNは、Active Directoryなどのディレクトリサービスに、サービスを提供するサーバーや、そのサービスを実行する「サービスアカウント」と紐付けて登録される。KDCは、ユーザーがアクセスしたいサービスのSPNに基づいてサービスチケットを発行する。
Kerberoasting攻撃は、このSPNとサービスチケットの発行プロセスを悪用する。攻撃者はまず、Active Directoryから利用可能なSPNのリストを収集する。これには特別な権限は必要なく、ドメイン内の一般的なユーザーアカウントでも実行できる場合が多い。次に、攻撃者は収集したSPNの中から、特に狙いを定めたサービスアカウントに関連付けられたSPNに対して、KDCに「サービスチケット」を要求する。この要求自体は、Kerberosプロトコルにおける正当なチケット要求の手順の一つだ。
KDCは、攻撃者からのサービスチケット要求を受け取ると、要求されたSPNに対応するサービスアカウントのパスワードハッシュを使って、そのサービスチケットを暗号化し、攻撃者に発行する。この時、攻撃者はサービスアカウントのパスワードそのものを知っているわけではなく、パスワードハッシュによって暗号化されたサービスチケットを受け取る。
ここからがKerberoasting攻撃の本質だ。攻撃者は取得した暗号化されたサービスチケットを、ネットワークから切り離されたオフライン環境に持ち出す。そして、この暗号化されたサービスチケットに対して、総当たり攻撃や辞書攻撃といった「パスワードクラック」の手法を試みる。サービスチケットが暗号化される際に使用されたのはサービスアカウントのパスワードハッシュであり、攻撃の目標はこのハッシュを解読して、元のサービスアカウントのパスワードを特定することだ。
オフライン環境での攻撃であるため、パスワードの試行回数に制限がなく、KDC側に不審なアクセスとして検知されにくいという特徴がある。もしサービスアカウントのパスワードが短すぎたり、単純すぎたり、一般的な単語の組み合わせだったりすると、攻撃者は比較的容易にパスワードを解析できてしまう。
この攻撃が成功すると、攻撃者はサービスアカウントのパスワードを特定し、そのアカウントとしてネットワーク上の様々なサービスにアクセスできるようになる。サービスアカウントは、特定のサービスを実行するために必要な最小限、あるいはそれ以上の権限を持っていることが多く、攻撃者はその権限を悪用してシステムを操作したり、機密情報を盗み出したり、さらには他のシステムへの横展開(ラテラルムーブメント)の足がかりにしたりする可能性がある。最終的には、ドメイン全体の支配につながる特権昇格の危険性もはらんでいる。一般ユーザーの権限で実行できるにもかかわらず、システムの根幹を揺るがす可能性のある、非常に危険な攻撃手法と言える。
Kerberoasting攻撃に対する対策はいくつかある。最も基本的な対策は、サービスアカウントに「強力なパスワード」を設定することだ。十分な長さ(例えば15文字以上)と複雑性(大文字、小文字、数字、記号の組み合わせ)を持つパスワードを使用し、定期的に変更することが不可欠である。これにより、オフラインでのパスワードクラックを極めて困難にできる。
次に、「最小特権の原則」を厳守することだ。サービスアカウントに与える権限は、そのサービスを実行するために必要最小限にとどめるべきである。不必要に高い権限を付与することは、攻撃が成功した際の被害を拡大させることにつながる。また、サービスアカウントが対話型ログオンできないように設定することも、セキュリティ強化の一環となる。
さらに、「SPNの適切な管理」も重要だ。必要のないSPNは登録せず、不要になったSPNは速やかに削除する。これにより、攻撃者が利用できるSPNの数を減らし、攻撃対象を絞られるリスクを軽減する。
そして、「監視とログ分析」も欠かせない。Kerberos認証のログを定期的に監視し、異常なサービスチケット要求がないかをチェックする。例えば、特定のアカウントから短時間に大量のSPNに対するチケット要求があった場合や、通常とは異なる時間帯に要求があった場合などは、Kerberoasting攻撃の兆候である可能性がある。SIEM(Security Information and Event Management)ツールなどを活用して、これらのログをリアルタイムで分析し、不審な挙動を検知できるよう環境を整えることが重要だ。
最後に、Kerberos認証自体に直接多要素認証を適用することは難しいが、ネットワーク全体のセキュリティを向上させるために、ユーザー認証や特権アクセス管理に多要素認証を導入することも、サービスアカウントが乗っ取られた際の影響を軽減する上で有効な間接的な対策となる。システムエンジニアは、これらの攻撃手法と対策を理解し、セキュアなシステム構築と運用に努める必要がある。