KerberoastingとGolden Ticket攻撃
Kerberoastingによって解読可能なサービスチケットのハッシュをオフラインで抽出する方法と、侵害したKRBTGTハッシュを使って無制限のKerberosアクセスを得るGolden Ticket攻撃を学びます。
「KerberoastingとGolden Ticket攻撃」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
Kerberos サービスチケットのアーキテクチャ
Kerberoasting と Golden Ticket 攻撃を理解するには、Kerberos におけるサービスチケットの発行について明確に把握する必要があります。クライアントがサービス(SQL サーバーなど)へのアクセスを要求すると、Domain Controller のTicket Granting Service (TGS) にTicket Granting Ticket (TGT)を提示します。TGS は、サービスアカウントのパスワードハッシュで暗号化したService Ticketを発行します。クライアントはこのチケットをサービスに提示し、サービスは自身のハッシュで復号して正当性を検証します。この設計では、サービスチケットが対象サービスの認証情報で暗号化されます。これは Kerberoasting が悪用する重要な点です。
Kerberoasting: オフラインパスワードクラッキング
Kerberoastingは、認証済みのドメインユーザーであれば、SPN (Service Principal Name)が登録された任意のサービスの Kerberos サービスチケットを要求できるという仕組みを悪用する攻撃です。攻撃者は SPN が登録されたアカウントのサービスチケットを要求し、暗号化されたチケットデータを取得した後、Active Directory との追加のやり取りやアカウントロックアウトのリスクなしに、サービスアカウントのパスワードをオフラインでクラックします。サービスアカウントには、脆弱なパスワード、最新の複雑性要件が導入される前から使われている古いパスワード、または有効期限のないパスワードが設定されていることが多く、オフラインクラッキングに対して非常に脆弱です。
# Step 1: Find accounts with SPNs (attack setup)
Get-ADUser -Filter {ServicePrincipalName -ne '$null'} -Properties ServicePrincipalName
# Step 2: Request service tickets (using Impacket GetUserSPNs.py)
# GetUserSPNs.py domain/user:password -dc-ip 192.168.1.1 -request
# Outputs $krb5tgs$ hashes ready for cracking with HashcatKerberos チケットのオフラインクラッキング
Kerberoasting で取得したサービスチケットのハッシュは、デフォルトでは(互換性のため)RC4-HMAC (NTLM hash)で暗号化されており、AES-256 の Kerberos チケットよりも高速にクラックできます。攻撃者は取得した $krb5tgs$23$ ハッシュをHashcatやJohn the Ripperに入力し、オフラインで辞書攻撃や総当たり攻撃を実行します。RockYou のような一般的なワードリストとルールセットを使用すると、コンシューマー向け GPU のハードウェアでも、脆弱なサービスアカウントのパスワードの大半を数分から数時間でクラックできます。クラックに成功すると、攻撃者はサービスアカウントの平文パスワードを取得し、それを使って直接認証できるようになります。
# Crack Kerberoasted hashes with Hashcat
hashcat -m 13100 kerberoast_hashes.txt rockyou.txt \
-r best64.rule \
--force
# Mode 13100 = Kerberos 5, etype 23 (RC4-HMAC service ticket)
# Mode 19600 = Kerberos 5, etype 17 (AES-128) - slower
# Mode 19700 = Kerberos 5, etype 18 (AES-256) - slowestKerberoasting への対策
Kerberoasting への対策は、主に次の領域を対象とします。パスワードの強度 — サービスアカウントには、GPU クラスターを使ったオフラインクラッキングにも耐えられる、25 文字以上の長くランダムなパスワードを設定します。Group Managed Service Accounts (gMSA) — Windows が gMSA のパスワード(30 日ごとにローテーションされる 240 文字のランダムな値)を自動的に管理するため、Kerberoasting を計算量的に実行不可能にできます。AES のみの暗号化 — サービスアカウントに AES-256 チケットを要求するよう msDS-SupportedEncryptionTypes を構成します。AES-256 は RC4 よりもクラックにかかる時間が指数関数的に長くなります。検知 — 標準とは異なるワークステーションからサービスアカウントに対して、通常とは異なる大量の TGS 要求(イベント ID 4769)が行われた場合にアラートを発するようにします。
# Create a Group Managed Service Account (gMSA) - Kerberoasting immune
New-ADServiceAccount -Name 'svc-sql' \
-DNSHostName 'sqlserver.domain.com' \
-PrincipalsAllowedToRetrieveManagedPassword 'SQLServers'
# Install on the SQL server
Install-ADServiceAccount -Identity 'svc-sql'KRBTGT アカウント: Kerberos の守護者
KRBTGT アカウントは、ドメイン内のすべての Kerberos TGT に署名および暗号化するためにパスワードハッシュが使用される、Active Directory 組み込みの特殊なアカウントです。ドメインコントローラーは KRBTGT ハッシュを使用して TGT を作成し、受信した TGT を検証します。そのため、KRBTGT ハッシュは Active Directory 環境で最も価値の高い単一の認証情報となります。これを持つ攻撃者は、存在しないユーザーを含む任意のユーザーについて、任意のグループメンバーシップと有効期間を設定した、完全に有効な Kerberos チケットを作成できます。多くの組織では、変更作業に慎重な調整が必要なため、KRBTGT のパスワードが一度も変更されていないことが一般的です。
# Check when KRBTGT password was last changed
Get-ADUser -Identity KRBTGT -Properties PasswordLastSet |
Select-Object Name, PasswordLastSet
# If PasswordLastSet is years ago, the domain is vulnerable to persistent Golden TicketsGolden Ticket 攻撃: TGT の偽造
Golden Ticket攻撃では、侵害された KRBTGT アカウントのパスワードハッシュを使用して、偽造された完全に有効な Kerberos TGTを作成します。攻撃者は Mimikatz の kerberos::golden コマンドを使用し、任意のユーザー(多くの場合、偽の Administrator に似たアカウント)について、任意のグループメンバーシップ(通常は Domain Admins を含む)と任意の有効期間(一般的には 10 年)を設定した TGT を生成します。この偽造チケットは暗号学的に有効です。実際の KRBTGT ハッシュで署名されているため、ドメインコントローラーからは正規のチケットと区別できません。Golden Ticket により、ドメインに対する完全かつ永続的で無制限の制御が可能になります。
# Mimikatz Golden Ticket creation (attacker perspective - for defender awareness)
# Requires: domain name, domain SID, KRBTGT hash, target username
# mimikatz# kerberos::golden \
# /domain:corp.example.com \
# /sid:S-1-5-21-1234567890-1234567890-1234567890 \
# /krbtgt:aabbccddeeff00112233445566778899 \
# /user:GoldenTicketUser \
# /groups:512,519 \
# /ticket:golden.kirbiGolden Ticket が長期間存続する理由
Golden Ticket は、元の攻撃が発見されて対処された後も存続するため、特に危険です。標的となったユーザーのパスワードを変更しても効果はありません。このチケットはユーザーの実際の認証情報に基づくものではなく、偽造されたものだからです。唯一の対処方法は、KRBTGT のパスワードを 2 回変更することです。1 回目で既存のチケットを無効にし、2 回目はローリング運用のために常に 2 つ存在する KRBTGT キーに対応するために行います。ただし、KRBTGT のパスワード変更には慎重な調整が必要です。手順を誤ると、ドメイン全体で Kerberos 認証が機能しなくなります。多くの組織はこの対処を実施することに消極的であり、その結果、Golden Ticket が無期限に有効なままになることがあります。
# KRBTGT password reset procedure (Microsoft New-KrbtgtKeys.ps1)
# Step 1: Reset KRBTGT password on primary DC
# Step 2: Wait for AD replication (typically 24-48 hours)
# Step 3: Reset KRBTGT password again to invalidate all old tickets
# Step 4: Verify Kerberos authentication working across all sites
# This invalidates ALL existing Kerberos tickets domain-wideSilver Ticket 攻撃: サービス固有の偽造
Silver Ticketは Golden Ticket に似ていますが、対象範囲がより限定されています。KRBTGT ではなく対象サービスアカウントのハッシュを使用して、その特定のサービスだけに有効なサービスチケットを偽造します。たとえば、SQL サーバーのサービスアカウントハッシュがあれば、攻撃者はその SQL サーバーへの任意のアクセス権を付与するサービスチケットを偽造できます。Silver Ticket は、ドメインコントローラーを完全に経由せず、偽造チケットが攻撃者からサービスへ直接送られ、KDC との通信が発生しないため、Golden Ticket よりも検知が困難です。対策には、サービスアカウントのハッシュを保護し、重要なサービスに対する異常なアクセスパターンを監視することが必要です。
KRBTGT ハッシュの取得: DCSync 攻撃
攻撃者は、Active Directory の正規のドメインレプリケーションプロトコルを悪用するDCSync 攻撃によって KRBTGT ハッシュを取得します。Directory Replication Service (DRS)により、ドメインコントローラーはパスワードハッシュを含む AD データを相互に同期できます。DCSync 権限(通常は Domain Admin、Enterprise Admin、または Replicating Directory Changes All 権限を持つアカウント)を持つ攻撃者は、ドメインコントローラーになりすまして、任意のアカウントのハッシュをレプリケーションするよう要求できます。Mimikatz の lsadump::dcsync コマンドはこの攻撃をネットワーク経由だけで実行するため、DC 自体でコードを実行する必要はありません。
# DCSync to extract KRBTGT hash (attacker perspective)
# mimikatz# lsadump::dcsync /domain:corp.example.com /user:KRBTGT
# Output includes:
# Hash NTLM: <krbtgt NT hash>
# Hash SHA1: <krbtgt SHA1 hash>
# Key: <AES-256 key>
# Detection: Event ID 4662 from a non-DC source (replication event from workstation = suspicious)Golden Ticket と Silver Ticket の活動の検知
Golden Ticket の使用を検知するのは困難ですが、Kerberos チケットのメタデータに見られる異常を調べることで可能になります。有効期間が異常に長いチケット(正規の TGT の有効期間は 10 時間ですが、Golden Ticket では 10 年に設定されることがよくあります)、ドメインのデフォルトが AES-256 (0x12) であるにもかかわらず、チケットの暗号化方式が RC4 (0x17) になっているイベント ID 4769、AD に存在しないアカウント名を含むチケット、そしてイベント ID 4769(サービスチケット要求)の前にイベント ID 4768(TGT 要求)が存在しないことなどです。Golden Ticket では TGT 自体が偽造されているため、TGT 要求の段階が省略されます。Microsoft SentinelまたはDefender for Identityのルールを使用すると、これらのパターンに自動的にフラグを付けられます。
# Detection: Golden Ticket indicator - no corresponding TGT request
# Normal flow: Event 4768 (TGT requested) -> Event 4769 (service ticket)
# Golden Ticket: Event 4769 WITHOUT preceding 4768 from same host
# Also alert on: TGT encryption type = RC4 in AES-only environments
# Splunk: index=windows EventCode=4769 TicketEncryptionType=0x17
# NOT [expected legacy systems]Kerberos ベースの攻撃の防止
Kerberos 攻撃には、複数の防御層を組み合わせて対処します。すべてのサービスアカウントにgMSA を使用して Kerberoasting を実行不可能にします。すべてのアカウント、特に価値の高いサービスアカウントでAES のみの暗号化を有効にすることで、クラックの難易度を最大限に高めます。DCSync 権限を制限し、レプリケーション権限を持つアカウントを監査して、不要な権限を削除します。Microsoft Defender for Identity(旧称 ATA)を有効にすると、Golden Ticket、Kerberoasting、DCSync などを含む Kerberos 対応の脅威検知とリアルタイムのアラートが利用できます。さらに、階層型管理モデルを導入することで、Tier 2 アカウントが侵害されても、DC レベルの認証情報に到達するために利用されることを防ぎます。
# Audit DCSync-capable accounts (these should be very few)
Get-ADUser -Filter * -Properties 'msDS-AllowedToDelegateTo' |
Where {$_.DistinguishedName -notlike '*Domain Controllers*'}
# Check replication permission holders using PowerView:
# Get-ObjectAcl -DistinguishedName 'DC=domain,DC=com' \
# -ResolveGUIDs | \
# Where {$_.ActiveDirectoryRights -like '*ExtendedRight*'}理解度チェック
このレッスンで学んだ CompTIA Security+ (SY0-701) の概念について、理解度を確認します。
レッスンのまとめ
このレッスンでは、次のことを学びました。Kerberoasting は、SPN が登録されたアカウントのサービスチケットを要求し、それをオフラインでクラックします。gMSA、強力なパスワード、AES のみの暗号化によって対策できます。Golden Ticket 攻撃は KRBTGT ハッシュを使用して無制限の TGT を偽造します。これにより永続的なドメイン制御が可能になり、KRBTGT のパスワードを 2 回リセットするまで存続します。また、DCSync 攻撃は DC 上でコードを実行せずに、ネットワーク経由で KRBTGT ハッシュをレプリケーションします。そのため、DCSync 権限を厳格に監査する必要があります。次は、攻撃者の手法を防御策に対応付けるための MITRE ATT&CK フレームワークについて学びます。
よくある質問
「KerberoastingとGolden Ticket攻撃」レッスンは無料ですか?
はい。「KerberoastingとGolden Ticket攻撃」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「KerberoastingとGolden Ticket攻撃」で何を学びますか?
Kerberoastingによって解読可能なサービスチケットのハッシュをオフラインで抽出する方法と、侵害したKRBTGTハッシュを使って無制限のKerberosアクセスを得るGolden Ticket攻撃を学びます。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「KerberoastingとGolden Ticket攻撃」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- APTのライフサイクル:初期アクセスから永続化まで
- ラテラルムーブメント:Pass-the-HashとPass-the-Ticket
- KerberoastingとGolden Ticket攻撃
- 検知と対応のためのMITRE ATT&CKフレームワーク