Post

HackTheBox Sherlock - Campfire-1 (DFIR)

HackTheBox Sherlock Campfire-1 解説。ドメインコントローラの Event ID 4769(RC4 の TGS 要求)と、エンドポイントの PowerShell ScriptBlock ログ(PowerView)・Prefetch(Rubeus)を突き合わせ、Active Directory への Kerberoasting 攻撃を検知・特定する。

HackTheBox Sherlock - Campfire-1 (DFIR)

シナリオ

Campfire-1 は HackTheBox の Sherlock(防御・DFIR 系)で難易度 Easy。Forela の SOC は Kerberoasting 攻撃を疑っている。ドメインコントローラのセキュリティログと、疑わしいワークステーションのトリアージが渡され、攻撃の確認と特定を行う。

「SOC マネージャの Alonzo は、攻撃者がネットワークに侵入し Kerberoasting を行ったと考えている。DC のセキュリティログとエンドポイントのトリアージ(PowerShell ログ + Prefetch)が提供される。活動を確認し、標的サービス・攻撃元ワークステーション・使用ツールを特定せよ。」

項目 内容
プラットフォーム HackTheBox — Sherlock
カテゴリ DFIR / Active Directory ログ解析
難易度 Easy
証跡 Security.evtx (DC) + エンドポイントトリアージ(PowerShell ログ・Prefetch)
必要スキル Event ID 4769 トリアージ、Kerberoasting 検知、PowerShell ScriptBlock ログ、Prefetch

提供される証跡

  • Security.evtxドメインコントローラのセキュリティイベントログ(Kerberos の 4769 TGS 要求を含む)。
  • 攻撃元ワークステーションのエンドポイントトリアージ:
    • PowerShell Operational ログ(Microsoft-Windows-PowerShell/Operational、ScriptBlock イベント 4104)。
    • Prefetch(C:\Windows\Prefetch\*.pf) — どの実行ファイルがいつ動いたかの証拠。

本ケースは突き合わせの演習: DC は 何が(roast されたSPN)とどこから(IP)を、エンドポイントは どうやって(PowerView + Rubeus)といつを教える。

使用ツール

  • EvtxECmd(Eric Zimmerman)→ CSV →Timeline ExplorerSecurity.evtx と PowerShell ログを閲覧
  • PECmd(Eric Zimmerman) — Prefetch 解析(最終実行時刻)
  • 代替に Windows イベントビューア(XPath フィルタ)
1
2
3
4
# Security ログ + PowerShell Operational ログ -> CSV (Timeline Explorer 用)
EvtxECmd.exe -f Security.evtx --csv . --csvf security.csv
# Prefetch -> 最終実行時刻
PECmd.exe -d C:\triage\Prefetch --csv . --csvf prefetch.csv

解説 — Kerberoasting は設計上ちょうど1か所で目立つ: DC は発行する TGS ごとに Event ID 4769(Kerberos サービスチケット要求)を記録する。まずこれをタイムライン化すれば、正常要求の中から異常な1件を見つけ、エンドポイントへ展開して説明できる。

前提: Kerberoasting 検知のシグナル

シグナル 何か ここでの重要性
Event ID 4769 Kerberos サービスチケット(TGS-REP)要求 roast 1回につき1件 = DC 側の中核シグナル
TicketEncryptionType 0x17 RC4-HMAC 攻撃者は AES より遥かに速く割れる RC4 を強制する
ServiceNamekrbtgt 以外かつ末尾 $ でない ユーザーSPN アカウント(コンピュータ/DC01$ でない) ユーザーSPN が roastable な標的
Status 0x0 要求成功 TGS が実際に発行された(割れるハッシュを取得)
PowerShell 4104 ScriptBlock ログ PowerView.ps1 の SPN 列挙を捕捉
Prefetch EXE の最終実行・実行回数 Rubeus.exe の実行を証明・時刻特定

調査

Q1. Analyzing the Domain Controller security logs, what is the UTC date & time the Kerberoasting activity occurred?

Security.evtxEvent ID 4769 で絞り込み、TicketEncryptionType = 0x17(RC4)、ServiceNamekrbtgt 以外かつ末尾 $ でない、Status = 0x0 の条件を満たすものだけ残す。一致するイベントは1件:

1
2
3
4
5
6
7
8
"EventData": {
  "TargetUserName": "alonzo.spire@FORELA.LOCAL",
  "ServiceName": "MSSQLService",
  "TicketOptions": "0x40800000",
  "TicketEncryptionType": "0x17",
  "IpAddress": "::ffff:172.17.79.129",
  "Status": "0x0"
}

答え

1
2024-05-21 03:18:09

解説 — 健全な DC ではほぼ全ての 4769 が AES(0x12)でコンピュータアカウント(…$)宛て。ユーザーSPN 宛ての RC4(0x17)・Status 0x0 要求が1件あれば、それが Kerberoasting の指紋 — 攻撃者がそのアカウントの割れる TGS ハッシュを取得した証拠。(MITRE ATT&CK T1558.003 — Kerberoasting)

Q2. What is the Service Name that was targeted?

一致した 4769 イベントの ServiceName を読む。

答え

1
MSSQLService

Event 4769 の ServiceName = MSSQLService

解説 — SPN はどのサービスアカウントのハッシュが盗まれたかを示す。ユーザーアカウントに紐づく SPN(ここでは MSSQLService)は roastable で、そのパスワードはオフライン解析に晒される。最優先でリセット・調査すべき対象だ。

Q3. What is the IP address of the workstation this activity came from?

同イベントの IpAddress フィールドを読む(IPv6 マップ接頭辞 ::ffff: を除く)。

答え

1
172.17.79.129

Event 4769 の IpAddress = 172.17.79.129

解説 — DC は全チケット要求の発信元 IP を記録する。「roast が起きた」から「172.17.79.129 から来た」へ展開できることで、正しいエンドポイントのトリアージに進み どうやって を再構築できる。

Q4. What is the name of the file used to enumerate Active Directory and find Kerberoastable accounts?

ワークステーションの PowerShell Operational ログに移り、ScriptBlock イベント(4104)を確認する。AD 列挙ツールが際立つ。

答え

1
powerview.ps1

PowerShell 4104 ScriptBlock に PowerView.ps1

解説PowerView.ps1 は事実上の AD 偵察ツールキット。Get-DomainUser -SPN で roastable アカウントを列挙する。ScriptBlock ログ(EID 4104)はスクリプト本体を記録するため、ファイルレス/インメモリ実行でもソースが残る。(MITRE ATT&CK T1087.002 — Account Discovery: Domain Account)

Q5. When was this script executed? (UTC)

PowerView の 4104 ScriptBlock イベントのタイムスタンプを読む。

答え

1
2024-05-21 03:16:32

PowerView.ps1 実行時刻 2024-05-21 03:16:32

解説 — 順序に注目: 列挙(03:16:32)は roast(03:18:09)のに起きている。この約2分の差が、攻撃者が roastable な SPN を見つけ、そのチケットを要求するまでの、特定しやすいミニタイムラインだ。

Q6. What is the full path of the tool used to perform the actual Kerberoasting attack?

Prefetch を PECmd で解析し roasting ツールを探す。prefetch エントリにソースパスが記録される。

答え

1
C:\Users\Alonzo.spire\Downloads\Rubeus.exe

Prefetch に Rubeus.exe のパス

解説Rubeus(Rubeus.exe kerberoast)が実際の TGS 要求とハッシュ抽出を行う。Prefetch はバイナリのパスと実行履歴を記録するため、ツール名の特定と本ホストでの実行証明の両方ができる。\Downloads\ からの実行自体も弱いシグナルの IOC。(MITRE ATT&CK T1558.003)

Q7. When was the tool executed to dump credentials? (UTC)

Prefetch から RUBEUS.EXE-*.pf の最終実行時刻を読む。

答え

1
2024-05-21 03:18:08

Rubeus.exe 最終実行時刻 2024-05-21 03:18:08

解説 — Prefetch の実行時刻(03:18:08)は DC の 4769(03:18:09)の1秒前にある — エンドポイントと DC が秒単位で相互に裏付け、Rubeus → TGS 要求という因果連鎖を確定させる。

攻撃タイムライン

時刻 (UTC) 段階 証跡
2024-05-21 03:16:32 探索(Discovery) PowerView.ps1 が AD / roastable SPN を列挙 — PowerShell EID 4104
2024-05-21 03:18:08 実行 C:\Users\Alonzo.spire\Downloads\Rubeus.exe を実行 — Prefetch 最終実行
2024-05-21 03:18:09 資格情報アクセス DC が MSSQLService の TGS を発行、RC4 0x17、発信元 172.17.79.129EID 4769
flowchart TB

    subgraph EVID["証跡"]
        direction LR
        V1["① Security EID 4769 — MSSQLService / RC4 0x17 / Status 0x0"]
        V2["② PowerShell EID 4104 — PowerView.ps1"]
        V3["③ Prefetch — Rubeus.exe"]
    end

    subgraph IOCS["IOC"]
        direction LR
        O1["roast対象SPN: MSSQLService (alonzo.spire)"]
        O2["攻撃元WS: 172.17.79.129"]
        O3["C:\\Users\\Alonzo.spire\\Downloads\\Rubeus.exe + PowerView.ps1"]
    end

    subgraph ATTACK["MITRE ATT&CK"]
        direction LR
        T1["T1087.002 Account Discovery"]
        T2["T1558.003 Kerberoasting"]
        T3["T1059.001 PowerShell"]
    end

    V1 ==> O1
    V1 ==> O2
    V2 ==> O3
    V3 ==> O3
    V2 -.-> T1
    V3 -.-> T2
    V1 -.-> T2
    V2 -.-> T3

検知と防御(ブルーチーム)

もっと早く捕捉するには:

  • Event ID 4769 で TicketEncryptionType 0x17(RC4) かつ非マシン SPN にアラート — 極めて高シグナルな Kerberoasting 検知。
  • Kerberos の RC4 を無効化し、サービスアカウントを AES 専用に。roast されても遥かに固いハッシュ(または失敗)になる。
  • サービスアカウントに gMSA / 長いランダムパスワードを使う。gMSA は実質的に解析不能。
  • PowerShell ScriptBlock ログ(EID 4104)とモジュールログを有効化し、PowerView/SPN 列挙を捕捉。
  • プロセス実行 / Prefetch を監視し、RubeusMimikatz\Downloads\ からの実行を検出。
  • ハニーポット SPN アカウントを配置 — それへの 4769 は確実なアラート。

まとめ

  • DC 上の Kerberoasting 指紋は EID 4769 + RC4(0x17) + ユーザーSPN(…$ でない) + Status 0x0
  • DC ログをエンドポイントの PowerShell(4104)Prefetch と突き合わせると、攻撃元ワークステーション・偵察ツール(PowerView)・roasting ツール(Rubeus)を秒単位で特定できる。
  • 防御側は RC4 廃止・gMSA 利用・PowerShell/プロセス実行のログ化で勝てる。

参考文献

This post is licensed under CC BY 4.0 by the author.