Kerberoasting
サービスチケットをクラックします
「Kerberoasting」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
Kerberoastingとは
Kerberoastingは、Active Directoryのサービスアカウントを標的とする攻撃です。認証済みのドメインユーザーであれば、Service Principal Name(SPN)が設定されたアカウントのサービスチケットを要求できます。
そのチケットの一部はサービスアカウントのパスワードハッシュで暗号化されているため、攻撃者はアカウントに直接アクセスすることなく、オフラインでクラックできます。
なぜ機能するのか
ユーザーがサービスチケット(TGS)を要求すると、KDCはその一部をサービスアカウントのパスワードのNTLMハッシュで暗号化します。
どのドメインユーザーでもこのチケットを要求でき、特別な権限も必要ありません。そのため攻撃者はチケットを収集し、自分のマシンで時間をかけてクラックできます。
SPNアカウントの検索
まず、SPNが設定されたアカウントを列挙します。通常は、SQL、Webなどのサービスを実行するサービスアカウントです。
SPNを持つユーザーアカウント(マシンアカウントではないもの)は、パスワードが人手で設定され、変更頻度も低いことが多いため、理想的な標的です。
# PowerView
Get-DomainUser -SPN | select samaccountname,serviceprincipalnameRubeusによるチケット要求
Rubeusは、Kerberosの悪用に使われるC#製の代表的なツールです。kerberoastコマンドは、SPNアカウントのTGSチケットを要求し、クラック可能な形式で出力します。
この操作は目立ちません。正規ユーザーによる通常のKerberos通信に見えるためです。
Rubeus.exe kerberoast /outfile:hashes.txtImpacketによるチケット要求
Linuxでは、ImpacketのGetUserSPNs.pyを使い、有効なドメイン認証情報で同じ攻撃をリモートから実行できます。
すでに低権限の認証情報を1組入手している外部業務や侵害想定の業務で便利です。
GetUserSPNs.py corp.local/lowuser:Password1 -dc-ip 10.0.0.10 -requestハッシュ形式
取得したチケットは、Hashcatがモード13100(Kerberos 5 TGS-REP etype 23、RC4)として認識する形式で保存します。
各ハッシュは$krb5tgs$23$で始まり、その後にSPN、アカウント、暗号化されたブロブが続きます。これをクラックツールに入力します。
$krb5tgs$23$*svc_sql$CORP.LOCAL$MSSQL/...*$a1b2c3...Hashcatによるクラッキング
オフラインクラッキングでは、取得したハッシュに対してワードリスト(多くの場合はルール付き)を試します。RC4チケットは検証が高速なため、脆弱なサービスパスワードはすぐに破られてしまいます。
このため、サービスアカウントのパスワードは長く、ランダムなものにする必要があります。理想的には、Group Managed Service Accounts(gMSA)で管理します。
hashcat -m 13100 hashes.txt rockyou.txt -r best64.rule暗号化の種類が重要な理由
アカウントが<強調>RC4(etype 23)をサポートしている場合、クラッキングは高速です。AES(etype 17/18)しか許可していない場合は、クラッキングに時間がかかりますが、それでも実行可能です(Hashcat modes 19600/19700)。
攻撃者は、要求する暗号化タイプをダウングレードして、より弱いRC4チケットを強制的に取得することさえあります。
検知と防御
防御側は、TGSリクエストの異常な量を監視します。特にRC4チケットに関するもの(イベントID 4769)が対象です。緩和策には次のものがあります。
- 長くランダムなサービスアカウントパスワード(25文字以上)。
- 自動ローテーションを行うgMSAアカウントの使用。
- RC4を無効化し、AESを強制する。
なぜサービスアカウントなのか
サービスアカウントが狙われやすいのは、特権グループのメンバーであることが多く、パスワードが長期間変更されておらず、異常に気づく特定の人間にも紐付いていないためです。
サービスアカウントに不注意な過剰権限が付与されていた場合、それをクラッキングするだけでDomain Adminの権限を取得できる可能性があります。
攻撃における位置付け
Kerberoastingは通常、ドメインへの足掛かりを得た直後に実行されます。ノイズの少ない列挙とオフラインクラッキングで構成されるため、アラートが発生することはほとんどありません。
クラッキングされたサービスアカウントからは、ラテラルムーブメントや権限昇格につながることが多く、内部ペネトレーションテストやレッドチーム演習で定番の手法となっています。
確認問題
Kerberoastingに必要な基本条件を思い出してください。
まとめ
これでKerberoastingについて理解できました。
- ドメインユーザーであれば誰でも、SPNアカウントのTGSチケットを要求できます。
- チケットはサービスアカウントのハッシュで暗号化され、オフラインでクラッキングされます。
- ツールにはRubeus、Impacket GetUserSPNs.pyがあり、Hashcat mode 13100でクラッキングします。
- 長いパスワード、gMSA、AESのみの暗号化で防御します。
次は、Pass-the-Hashで認証情報を直接再利用します。
よくある質問
「Kerberoasting」レッスンは無料ですか?
はい。「Kerberoasting」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「Kerberoasting」で何を学びますか?
サービスチケットをクラックします ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「Kerberoasting」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ADの基礎
- Kerberoasting
- Pass-the-Hash
- BloodHound