私たちの LDAP 認識(レコネサンス)の投稿では、攻撃者が Windows Active Directory(AD)ドメイン内で標的にできるサービス アカウントを見つけるために、偵察を行う方法を解説しました。ここでは、そうしたアカウントを侵害して権限を悪用するために攻撃者が使える 1 つの手口を見ていきます。それが Kerberoasting です。この技術が特に恐ろしいのは、ドメイン内で管理者権限を必要とせず、実行も非常に簡単で、事実上検知されないためです。
厳選した関連コンテンツ:
Kerberoasting:概要
Kerberoastingは、Kerberos プロトコルの機能を悪用して、Active Directory ユーザー アカウントのパスワード ハッシュを収集する攻撃です。認証済みのドメイン ユーザーなら、アカウントの Service Principal Name(SPN)を指定することで、そのアカウントのサービス チケットを要求できます。そして、ドメイン コントローラー上のチケット付与サービス(TGS)が、アカウントのパスワードの NTLM ハッシュを使用して暗号化されたチケットを返します。
そのため、攻撃者が LDAP reconnaissance のような手口でサービス アカウントの SPN を見つけたら、これらのアカウントすべてのチケットを収集できます。さらに、そのデータをオフラインに持ち出すことで、各サービス アカウントの平文パスワードを解読するためのブルート フォース攻撃を実行でき、検知やアカウント ロックアウトのリスクはゼロです。
攻撃者がドメインにアクセスし、チケットを収集して、解読(クラック)プロセスを開始するまでには、ほんの数分で十分です。そこから先は、1つ以上のサービス アカウントを侵害するまで待つだけです。侵害したサービス アカウントを使って、機密データを盗む/暗号化する、またはその他の被害を与えることができます。
攻撃者は、いくつかの理由からサービスアカウントに注目します。まず、これらのアカウントは他の AD ユーザーアカウントよりもはるかに広範な権限を持っていることが多いため、侵害すると攻撃者により多くのアクセスが可能になります。さらに、サービスアカウントのパスワードはめったに変更されないため、攻撃者は長期間アクセスを維持できる可能性があります。Kerberoasting を使って取得できるアクセスの種類を理解するには、Sean Metcalf によって管理されている Active Directory SPNs のリストを確認してください。
Kerberoasting:仕組み
ステップ 1:サービスアカウントの SPN を取得する。
。これらの SPN を取得する方法はいくつもあり、たとえば:
- PowerShell のクエリと LDAP 偵察
- PowerShell 用 Active Directory モジュール
- 「 Kerberoast ツールキット
- Get-NetUser コマンド(PowerSploit
ステップ 2。サービス アカウントの SPN に対してサービス チケットを要求します。
PowerShell を数行実行するだけで、サービス チケットが返され、システムのメモリに保存されます。
Add-Type –AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken –ArgumentList ‘MSSQLSvc/jefflab-sql02.jefflab.local:1433’
ステップ 3。Mimikatz を使用してサービスチケットを抽出します。
Mimikatz はローカルのチケットを抽出し、オフラインでのクラック(offline cracking)のためにディスクに保存します。Mimikatz をインストールして、次の 1 つのコマンドを発行してください:
ステップ 4。チケットをクラックします。
Kerberos のチケットは、チケット要求で指定された SPN に関連付けられているサービスアカウントのパスワードで暗号化されます。Kerberoasting のツールでは、チケットをクラックしてパスワードハッシュの辞書(dictionary)を照合することで、そのチケットの平文パスワードを取得する Python スクリプトが提供されています。スクリプトを実行するために必要な環境が整っていることを確認するには、ある程度の設定が必要になる場合がありますが、このブログ でその詳細が説明されています。
別の方法として、GetUserSPNs スクリプトを使って Kerberos チケットを収集し、Hashcat のパスワード回復ツールでクラックすることもできます。
Kerberoasting 攻撃から保護する
Kerberoasting 攻撃に対する最も重要な緩和策は、すべてのサービス アカウントが、解読が難しい長く複雑なパスワードを使用していることを確認し、攻撃者がパスワードを解読できた場合にそのアカウントが悪用される可能性のある時間を最小化するために、定期的にローテーション(変更)することです。group managed service accounts は、ランダムで複雑なパスワードを自動的にローテーションできるように割り当てるためのベストプラクティスです。
攻撃者がチケットをオフラインで解読するため、このプロセスではネットワーク トラフィックが発生せず、その部分の攻撃は検知できません。ですが、 solid security solution で Active Directory を監視すれば、攻撃のより早い段階を見つけることができます。特に、サービス アカウントは通常、同じシステムから同じ方法で使用されるため、不審な認証要求がないか監視してください。さらに、サービス チケット要求が急増していないかも監視してください。
最後に、セキュリティの専門家は RC4 ベースの暗号化を無効にすることも推奨しています。そうしないと、ユーザー アカウントが AES 暗号化をサポートしていても、攻撃者が RC4 で暗号化されたチケットを要求できてしまい、AES を使って作成されたチケットよりも解読(クラック)が容易になります。
共有する
もっと詳しく
著者について
Jeff Warren
チーフ・プロダクト・オフィサー
Jeff Warren は Netwrix のプロダクトポートフォリオを統括しており、安全に重点を置いたプロダクトマネジメントおよび開発の分野で10年以上の経験を持ちます。Netwrix に入社する前、Jeff は Stealthbits Technologies にてプロダクト組織を率いていました。そこで彼はソフトウェアエンジニアとしての経験を活かし、革新的でエンタープライズ規模のセキュリティソリューションの開発に取り組みました。手を動かす実践的なアプローチと、難しいセキュリティ課題を解決するのが得意な点を強みに、Jeff は「実際に機能する」実用的なソリューションの構築に注力しています。彼はデラウェア大学(University of Delaware)で情報システム(Information Systems)の学士号を取得しています。