Kerberoastingを使用したサービスアカウントのパスワード抽出
Oct 22, 2026
Kerberoastingは、認証されたドメインユーザーがサービスアカウントの解析可能なパスワード情報を収集できるようにします。ドメインコントローラーはサービスプリンシパル名を持つすべてのアカウントにサービスチケットを返すためです。チケットはアカウントのパスワードから派生したキーで暗号化されているため、弱いパスワードはロックアウトなしでオフライン推測にかかります。長くランダムなパスワード、管理されたサービスアカウント、より強力なチケット暗号化がこの経路を制限します。
私たちの 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 を使って作成されたチケットよりも解読(クラック)が容易になります。
Kerberoastingは、標準のドメインアカウントを持つ攻撃者がサービスアカウント用の暗号化チケットを要求し、その後、ロックアウトポリシーが適用されずドメインコントローラーが関与しないオフライン環境でパスワードを解読できるようにします。
Kerberoastingとは何ですか?
保護が弱いアカウントに対して成功し、76%の組織がサービスアカウントを含む非人間のアイデンティティを完全に管理または監視していないと、Netwrix 2026 Data and Identity Security Reportによると報告されています。
攻撃は、攻撃者が LDAP reconnaissance を通じて作成できるこれらのアカウントのリストから始まります。
Kerberoastingは、通常のKerberos機能をパスワードクラッキングの機会に変えるActive Directory(AD)攻撃です。Kerberosは認証されたユーザーがドメインコントローラーからサービスチケットを要求でき、そのチケットはサービスアカウントのパスワードから派生したキーで暗号化されます。
攻撃者がKerberoastingでサービスアカウントのパスワードを抽出する方法
抽出は4段階で行われ、RubeusとImpacketのGetUserSPNs.pyが最初の3つを1つのコマンドにまとめ、Hashcatが4番目を処理します。
1. SPNを持つアカウントを見つける
2. SPNのサービスチケットをリクエストします
これらのチケットを収集した攻撃者は、1つが復号されるまでオフラインでパスワードを推測できます。対象は service principal names (SPNs) を持つユーザーアカウントで、ほとんどの service accounts が含まれます。この攻撃は権限昇格なしで開始できます。
任意のドメインアカウントを持つ攻撃者は、LDAPクエリ、PowerShellクエリ、またはActive Directoryモジュールを介してSPN付きアカウントを一覧表示できます。RubeusとGetUserSPNs.pyは独自にkerberoastableアカウントを列挙し、Rubeusはチケット要求を送信せずにそれらの統計を報告できます。
SPNは、次のように3つの部分でサービスインスタンスの名前を指定します MSSQLSvc/jefflab-sql02.jefflab.local:1433。これはサービスクラス、ホスト、およびポートを示します。サービスクラスは、MSSQLSvcのデータベースアクセスなど、侵害されたアカウントが到達できる範囲を示唆します。
PowerShellの2行で名前付きSPNのチケットを要求し、Windowsがメモリに保存します。
Rubeus は、すべてのkerberoastableアカウントのリクエストを自動化し、結果をファイルに書き込むことができます。
KerberosはIDを証明し、認可はサービスに任せます(RFC 4120)、そのためドメインコントローラーはチケットを発行する前にリクエスターがサービスを利用できるかどうかを確認しません。認証されたユーザーは、サービスアカウントのパスワードから派生したキーで暗号化されたチケットを受け取ります。
3. サービスチケットを抽出する
Impacket's GetUserSPNs.pyは-requestオプションで同様のことを行い、John the RipperとHashcatが受け入れる形式でチケットを出力します。
Kerberosの事前認証が無効になっているアカウントが存在する場合、Rubeusの/nopreauthオプションはAS-REQ(認証サービス要求)メッセージを送信してサービスチケットを要求します。
4. チケットを解析する
上記のPowerShellコマンドで要求されたチケットは、攻撃者がエクスポートするまでメモリに保持されます。 Mimikatz は現在のセッションのチケットを一覧表示し、単一コマンドでオフライン解析用にファイルに書き出します。
RubeusとGetUserSPNs.pyは-requestを付けるとこのステップをスキップします。なぜなら、直接クラッキング可能なハッシュを出力するからです。
チケットの暗号化タイプが重要な理由
クラッキングは攻撃者自身のハードウェア上で実行されるため、ロックアウトポリシーは適用されず、ドメインコントローラーはチケット要求後に何も検知しません。Hashcatは各チケットに対してパスワード推測を試行し、推測が復号に成功すると平文パスワードを回復します。GetUserSPNs.pyが出力する形式を受け入れ、暗号化タイプごとに別々のモードがあります。
Netwrix Threat Preventionは、Active Directory上のDCSync、Kerberoasting、およびPass-the-Hash攻撃をリアルタイムでブロックします。デモをリクエストしてください。
RC4チケットが最も速く解読されます
チケットの暗号化タイプであるRC4(Rivest Cipher 4)またはAES(Advanced Encryption Standard)は、攻撃者がどれだけ速く推測できるかを決定し、Microsoftは2026年にデフォルト設定を変更しました。
攻撃者はAESをサポートするアカウントに対してRC4を要求できます
AESチケットは推測を遅らせますが、弱いパスワードには依然として脆弱です
RC4チケットのキーはアカウントのNT LAN Manager (NTLM)ハッシュであり、パスワードのソルトなしハッシュです(RFC 4757)。ソルトがないため、同じパスワードはすべてのアカウントで同じキーを生成し、各推測は1回のハッシュ計算のコストがかかります。
Rubeusはデフォルトで各アカウントの最高サポート暗号化タイプを要求しますが、/usetgtdelegオプションはAESをサポートするアカウントにRC4チケットを要求し、/rc4opsecオプションはAES対応アカウントをスキップします。
ImpacketのGetUserSPNs.pyは、-no-rc4が設定されていない限りデフォルトでRC4を要求します。サービスアカウントのサポートされている暗号化タイプからRC4を削除することで、そのダウングレード経路を閉じます。
3つのタイプはすべて解読可能であるため、パスワードの長さとランダム性が結果を左右します。
2026年4月のアップデートでドメインコントローラーのデフォルトが変更されました
Kerberoastingからサービスアカウントを保護する
AESキーはデフォルトで4,096回の反復を行うソルト付きキー導出から生成されます(RFC 3962)、各推測のコストが高くなります。Rubeusの/aesオプションはAES対応アカウントをターゲットにし、そのAESチケットを要求し、Hashcatには各チケット暗号化タイプ用の別モードがあります。
この変更は、その属性を通じてRC4を明示的に許可しているアカウントには影響せず、明示的に設定されたドメインのデフォルトは記述どおりに尊重されます。これらのアカウントは引き続きRC4チケットを受け取ることができるため、最初に見つけるべき対象です。
Microsoftの更新プログラムKB5073381は2026年1月に監査イベントから始まりました。2026年4月14日にドメインコントローラーのデフォルトが変更され、明示的なmsDS-SupportedEncryptionTypes値がないアカウントはAES-SHA1のみをサポートすると見なされ、2026年7月以降にリリースされた更新プログラムは管理者が変更を元に戻せたレジストリ値をサポートしなくなりました。
各コントロールは攻撃の異なる部分を制限し、すべてネイティブのActive DirectoryとWindowsの機能を使用します。
サービスアカウントを管理アカウントに移動する
残りに長いランダムなパスワードを設定する
パスワードをリセットし、AESを適用する
NetwrixのBadSuccessor攻撃はdMSAを悪用した権限昇格攻撃であり、展開前に組織単位でCreateChild、WriteProperty、WriteDACL、GenericAll、WriteOwner権限を持つユーザーを監査することを推奨しています。
グループ管理サービスアカウント(gMSAs)は、Active Directoryがローテーションする120文字のランダムパスワードを使用しているため、攻撃者が推測できる弱点がありません。委任された管理サービスアカウント(dMSAs)もActive Directoryが資格情報を管理します。
移動できないアカウントの場合、MITRE ATT&CKは理想的に25文字以上のパスワードを推奨します。ランダム生成は長さと同じくらい重要であり、クラッキング用のワードリストは人々が選ぶパスワードから作られています。
AESキーはパスワードが設定または変更されたときに生成されるため、AESサポート以前のパスワードを持つアカウントはリセットされるまでキーがなく、AES専用アカウントはキーなしではチケットを受け取れません。
アカウントに不要なSPNを削除する
制限する前に各サービスをテストしてください。AESをサポートしないサービスは、一部の非Windowsデバイスを含め、RC4が削除されると認証が停止します。
まずパスワードをリセットし、次にアカウントのmsDS-SupportedEncryptionTypes属性で明示的なRC4設定を確認し、AES128およびAES256(値24)に制限してください。
ユーザーアカウントのすべてのSPNはそのアカウントを要求可能にするため、すべてリストアップし、実行中のサービスとそれぞれ比較してください。
SPNを追加できるユーザーを制御する
サービスアカウントの権限を制限する
サービスチケットのリクエストを記録する
krbtgt アカウントは設計上結果に表示され、変更すべきものではありません。廃止されたホストや引退したアプリケーションを指す他の SPN については、次のコマンドで確認してください setspn -L <account> そして次のコマンドで削除してください setspn -D <SPN> <account>。
ターゲット型Kerberoastingでは、targeted Kerberoasting の権限(GenericAll、GenericWrite、WriteProperty、またはService Principal NameへのValidated Write)を持つ攻撃者がアカウントにSPNを追加し、そのアカウントを攻撃可能にします。サービスアカウントのアクセス制御リストを確認し、アカウントを管理しないユーザーからこれらの権限を削除してください。通常、組み込みのAccount Operatorsグループのメンバーがこれらの権限を持っています。
ドメインコントローラーでAudit Kerberos Service Ticket Operationsのサブカテゴリを有効にすると、各リクエストがイベントID 4769として記録されます。MITREは、Ticket Encryption Type 0x17として表示されるRC4を使用する異常なリクエストを監視することを推奨しており、AESチケットは0x11または0x12を示します。
事前認証なしでアカウントをロースティングすると、代わりにAS-REQメッセージが送信されるため、それらのリクエストはイベントID 4768として記録され、同じRC4チェックが適用されます。
パスワードが破られると、攻撃者はそのアカウントでできることをすべて実行できます。Domain Adminsなどの特権グループからサービスアカウントを削除し、サービスが使用する権限のみを付与してください。これは最小権限の原則に基づくものです。この作業は、より広範なActive Directoryのセキュリティ強化に含まれます。
MicrosoftのKerberos-Cryptoリポジトリには、両方のイベントタイプを読み取るGet-KerbEncryptionUsage.ps1スクリプトが含まれており、-Encryption RC4および-SearchScope AllKdcsで実行すると、すべてのドメインコントローラーでRC4リクエストが一覧表示されます。
NetwrixがKerberoastingから守る方法
リアルタイムでKerberoastingの試みをブロックする
チケット暗号化タイプ | Hashcatモード |
|---|---|
|
RC4 (etype 23) |
13100 |
|
AES128 (etype 17) |
19600 |
|
AES256 (etype 18) |
19700 |
Netwrix製品は、Windowsのネイティブ設定を超えて3つの制御を追加します:攻撃のブロック、続く動作の検出、およびActive Directoryの悪用される弱点の評価。
IDベースの攻撃を検出する
Netwrix Threat Preventionは、Active Directory に対する Kerberoasting、DCSync、および Pass-the-Hash の試みを成功する前に阻止します。これにより、ログレビューでは提供できない攻撃時の強制ポイントをチームに提供します。
Active Directoryのセキュリティ状況を評価する
まだRC4を許可しているアカウントから始めましょう
Netwrix Threat Managerは、資格情報の盗難、横移動、および権限昇格を検出します。これらは、サービスアカウントのパスワードが破られた後に発生する可能性のあるアイデンティティベースの攻撃です。また、特権アカウントにSPNが追加された場合(ターゲットKerberoastingの設定ステップ)も検出します。
Kerberoastingは弱いサービスアカウントのパスワードが1つあれば十分なので、防御はアカウントごとに順番に適用する方法が最も効果的です。
Netwrix PingCastleはActive Directoryのセキュリティを評価し、誤設定、攻撃経路、権限の露出を特定します。
管理対象アカウントに移行できないアカウントは、オフライン推測を凌ぐために長くランダムなパスワードが必要です。チケット要求は防御者がまだ監視できる唯一のステップであり、これをログに記録することでパスワードの衛生管理ではカバーできない部分を補います。
2026年4月のMicrosoftのデフォルト変更後、アカウントまたは明示的に設定されたドメインのデフォルトでRC4を明示的に許可しているアカウントは、引き続きRC4チケットを受け取るため、優先されます。移行可能なものは管理されたアカウントに移し、残りはリセットしてAESに制限してください。
デモをリクエストして、Netwrix Threat PreventionがActive Directoryサービスアカウントに対するKerberoastingの試みを成功前に阻止する方法をご覧ください。
Kerberoastingを使用したサービスアカウントパスワード抽出に関するよくある質問
共有する
もっと詳しく
著者について