Communitygithub.com

ブートキットおよびルートキットサンプルの分析

マスターブートレコードやUEFIファームウェアに感染するブートキットおよび高度なルートキットのマルウェアを分析します。

ブートキットおよびルートキットサンプルの分析 とは?

このスキルは、OSの再インストール後も持続する侵害、検知を回避する高度なマルウェア、UEFIセキュアブートの無効化や整合性違反、メモリフォレンジックで発見されたルートキットの動作など、特定の兆候があるシステムを分析するために設計されています。TDL4、BlackLotus、LoJax、CosmicStrand、MoonBounce、ESPecterなどの既知の脅威ファミリーを対象としています。 ワークフローは、MBR/VBRおよびUEFIファームウェアの取得、マルウェアコードの分析、カーネルレベルのルートキット動作の検出、ブートチェーン全体の整合性検証、分析結果の文書化という6つのステップで構成されています。dd、UEFITool、chipsec、Ghidra、Volatility 3などのツールを使用し、標準のユーザーモードマルウェアとは異なる専門的な分析技術を要求します。 このスキルの主な利点は、ブートキットやルートキットの分析に必要な具体的な手順、コマンド、検出ポイントを網羅していることです。特にUEFIブートキットの検出ポイント(例えばLoJaxはSPIフラッシュ改変、BlackLotusはCVE-2022-21894の悪用など)を明確に示しています。また、分析中によくある落とし穴(感染したOS上での分析、SPIフラッシュの確認漏れなど)にも言及し、実践的なガイダンスを提供します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/analyzing-bootkit-and-rootkit-samples

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

ブートキットおよびルートキットサンプルの分析 は何をしますか?

使用すべき状況

  • OSを再インストールしても持続する、システムの侵害を示す兆候がある
  • 明確な侵害の証拠があるにもかかわらず、ウイルス対策ソフトやEDRがマルウェアを検出できない
  • UEFIセキュアブートが無効になっている、または整合性違反が発生している
  • メモリフォレンジックによりルートキットの動作(隠しプロセス、システムコールのフック)が明らかになった
  • ブートキットを展開することが知られている国家レベルの脅威(APT28、APT41、Equation Group)を調査している

使用すべきでない状況: 標準的なユーザーモードのマルウェアには使用しないでください。ブートキットやルートキットは根本的に異なるレベルで動作するため、特殊な分析技術が必要です。

前提条件

  • ディスクイメージングツール(dd、FTK Imager) MBR/VBRセクターの取得用
  • UEFITool UEFIファームウェアボリュームの分析とモジュール抽出用
  • chipsec ハードウェアレベルのファームウェアセキュリティ評価用
  • Ghidra(x86リアルモードおよび16ビット対応) MBRコード分析用
  • Volatility 3 カーネルレベルでのルートキットアーティファクト検出用
  • オフライン分析用の起動可能なLinux Live USB

ワークフロー

ステップ 1: ブートセクターとファームウェアの取得

MBR、VBR、UEFIファームウェアを抽出し、オフラインで分析します:

# MBRの取得(ディスクの最初の512バイト)
dd if=/dev/sda of=mbr.bin bs=512 count=1

# 最初のトラックの取得(通常、MBRを超えるブートキットコードを含む)
dd if=/dev/sda of=first_track.bin bs=512 count=63

# VBR(ボリュームブートレコード - パーティションの最初のセクター)の取得
dd if=/dev/sda1 of=vbr.bin bs=512 count=1

# UEFIシステムパーティションの取得
mkdir /mnt/efi
mount /dev/sda1 /mnt/efi
cp -r /mnt/efi/EFI /analysis/efi_backup/

# UEFIファームウェアのダンプ(chipsecまたはflashromが必要)
# chipsecを使用:
python chipsec_util.py spi dump firmware.rom

# flashromを使用:
flashrom -p internal -r firmware.rom

# ファームウェアダンプの整合性を確認
sha256sum firmware.rom

ステップ 2: MBR/VBRのブートキットコード分析

悪意のある変更がないかブートセクターコードを調査します:

# MBRコードの逆アセンブル(16ビットリアルモード)
ndisasm -b16 mbr.bin > mbr_disasm.txt

# MBRを既知の正常なWindows MBRと比較
# 標準的なWindows MBRの先頭: EB 5A 90(JMP 0x5C, NOP)
# 標準的なWindows 10 MBR: 33 C0 8E D0 BC 00 7C(XOR AX,AX; MOV SS,AX; MOV SP,7C00h)

python3 << 'PYEOF'
with open("mbr.bin", "rb") as f:
    mbr = f.read()

# MBRシグネチャの確認(バイト510-511は0x55AAであるべき)
if mbr[510:512] == b'\x55\xAA':
    print("[*] 有効なMBRシグネチャ (0x55AA)")
else:
    print("[!] 無効なMBRシグネチャ")

# 既知のブートキットシグネチャの確認
bootkit_sigs = {
    b'\xE8\x00\x00\x5E\x81\xEE': "TDL4/Alureonブートキット",
    b'\xFA\x33\xC0\x8E\xD0\xBC\x00\x7C\x8B\xF4\x50\x07': "標準Windows MBR(正常)",
    b'\xEB\x5A\x90\x4E\x54\x46\x53': "標準NTFS VBR(正常)",
}

for sig, name in bootkit_sigs.items():
    if sig in mbr:
        print(f"[{'!' if '正常' not in name else '*'}] シグネチャ一致: {name}")

# パーティションテーブルエントリの確認
print("\nパーティションテーブル:")
for i in range(4):
    offset = 446 + (i * 16)
    entry = mbr[offset:offset+16]
    if entry != b'\x00' * 16:
        boot_flag = "アクティブ" if entry[0] == 0x80 else "非アクティブ"
        part_type = entry[4]
        start_lba = int.from_bytes(entry[8:12], 'little')
        size_lba = int.from_bytes(entry[12:16], 'little')
        print(f"  パーティション {i+1}: タイプ=0x{part_type:02X} {boot_flag} 開始=LBA {start_lba} サイズ={size_lba} セクター")
PYEOF

ステップ 3: UEFIファームウェアのインプラント分析

不正なモジュールがないかUEFIファームウェアボリュームを検査します:

# UEFIToolでUEFIファームウェアコンポーネントを抽出
# GUI: firmware.romを開く -> ファームウェアボリュームを検査
# CLI:
UEFIExtract firmware.rom all

# すべてのDXEドライバをリスト(UEFIインプラントの最も一般的なターゲット)
find firmware.rom.dump -name "*.efi" -exec file {} \;

# 既知の正常なファームウェアモジュールリストと比較
# 各UEFIモジュールにはGUIDがある - ベンダーのベースラインと比較

# セキュアブート設定の確認
python chipsec_main.py -m common.secureboot.variables

# SPIフラッシュ書き込み保護の確認
python chipsec_main.py -m common.bios_wp

# 既知のUEFIマルウェアパターンの確認
yara -r uefi_malware.yar firmware.rom
既知のUEFIブートキット検出ポイント:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LoJax (APT28):
  - 変更されたSPIフラッシュ
  - WindowsにエージェントをドロップするDXEドライバを追加
  - OS再インストールとディスク交換後も持続

BlackLotus:
  - CVE-2022-21894を悪用してセキュアブートを回避
  - EFIシステムパーティションのブートローダーを変更
  - 起動中にカーネルドライバをインストール

CosmicStrand:
  - CORE_DXEファームウェアモジュールを変更
  - 起動中にカーネル初期化をフック
  - シェルコードをWindowsカーネルメモリにドロップ

MoonBounce:
  - CORE_DXEモジュール内のSPIフラッシュインプラント
  - 変更されたGetVariable()関数
  - ブートチェーンを通じてユーザーモードインプラントを展開

ESPecter:
  - ESP上のWindowsブートマネージャーを変更
  - winload.efiにパッチを適用してDSEを無効化
  - 署名なしカーネルドライバをロード

ステップ 4: カーネルレベルでのルートキット動作の検出

実行中のシステムを分析してルートキットのアーティファクトを検出します:

# ルートキット検出のためのメモリフォレンジック
# SSDTフック検出
vol3 -f memory.dmp windows.ssdt | grep -v "ntoskrnl\|win32k"

# 隠しプロセス(DKOM)
vol3 -f memory.dmp windows.psscan > psscan.txt
vol3 -f memory.dmp windows.pslist > pslist.txt
# Diffで隠しプロセスを特定

# カーネルコールバック登録(ルートキットはフィルタリングのためにコールバックを登録する)
vol3 -f memory.dmp windows.callbacks

# ドライバ分析
vol3 -f memory.dmp windows.driverscan
vol3 -f memory.dmp windows.modules

# 署名なしドライバの確認
vol3 -f memory.dmp windows.driverscan | while read line; do
    driver_path=$(echo "$line" | awk '{print $NF}')
    if [ -f "$driver_path" ]; then
        sigcheck -nobanner "$driver_path" 2>/dev/null | grep "Unsigned"
    fi
done

# IDTフック検出
vol3 -f memory.dmp windows.idt

ステップ 5: ブートプロセスの整合性検証

ブートチェーン全体の整合性を検証します:

# Windowsブートマネージャーの署名を確認
sigcheck -a C:\Windows\Boot\EFI\bootmgfw.efi

# winload.efiを確認
sigcheck -a C:\Windows\System32\winload.efi

# ntoskrnl.exeを確認
sigcheck -a C:\Windows\System32\ntoskrnl.exe

# 測定ブートログの確認(TPMが利用可能な場合)
# Windows: BCDEdit /enum firmware
bcdedit /enum firmware

# セキュアブート状態の確認
Confirm-SecureBootUEFI  # PowerShellコマンドレット

# 改ざんのためのブート設定の確認
bcdedit /v

# ブート設定の変更を確認
# testsigning: Noであるべき
# nointegritychecks: Noであるべき
# debug: Noであるべき
bcdedit | findstr /i "testsigning nointegritychecks debug"

ステップ 6: ブートキット/ルートキット分析の文書化

包括的な分析結果をまとめます:

分析で文書化すべき内容:
- ブートセクター(MBR/VBR)の整合性ステータス(16進数比較を含む)
- UEFIファームウェアモジュールのインベントリと整合性検証
- セキュアブートのステータスと検出されたバイパスメカニズム
- 特定されたカーネルレベルのフック(SSDT、IDT、IRP、インライン)
- 発見された隠しプロセス、ドライバ、ファイル
- 持続性メカニズム(SPIフラッシュ、ESP、MBR、カーネルドライバ)
- ブートチェーン整合性検証の結果
- 可能であれば既知のブートキットファミリーへの帰属
- 是正手順(ファームウェアの再フラッシュ、MBRの再構築、ハードウェアの交換)

主要な概念

用語定義
ブートキットオペレーティングシステムがロードされる前に実行されるようブートプロセス(MBR、VBR、UEFI)に感染し、永続的な低レベルの制御を得るマルウェア
MBR(マスターブートレコード)ブートストラップコードとパーティションテーブルを含むディスクの最初の512バイト。MBRブートキットはこのコードを悪意のあるローダーに置き換える
UEFI(Unified Extensible Firmware Interface)BIOSに代わる最新のファームウェアインターフェース。UEFIブートキットはファームウェアボリュームに悪意のあるモジュールを埋め込むか、ESPを変更する
セキュアブートブートコンポーネントのデジタル署名を検証するUEFIセキュリティ機能。BlackLotusなどのブートキットは脆弱性を悪用してこれを回避する
SPIフラッシュUEFIファームウェアを保存するフラッシュメモリチップ。LoJaxやMoonBounceなどの高度なブートキットは、ファームウェアレベルの持続性のためにSPIフラッシュを変更する
DKOM(Direct Kernel Object Manipulation)関数をフックせずに、カーネル構造を変更してプロセス、ファイル、ネットワーク接続を隠すルートキット技術
ドライバ署名の強制(DSE)カーネルドライバにデジタル署名を要求するWindowsセキュリティ機能。ブートキットは起動中にDSEを無効にして、署名なしのルートキットドライバをロードする

ツールとシステム

  • UEFITool: ファームウェアボリューム、ドライバ、モジュールを検査するためのオープンソースのUEFIファームウェアイメージエディターおよびパーサー
  • chipsec: SPIフラッシュ保護、セキュアブート、UEFI設定を検証するためのIntelハードウェアセキュリティ評価フレームワーク
  • Volatility: カーネルルートキット検出のためのSSDT、IDT、コールバック、ドライバ分析プラグインを備えたメモリフォレンジックフレームワーク
  • GMER: SSDTフック、IDTフック、隠しプロセス、変更されたカーネルモジュールをスキャンするWindowsルートキット検出ツール
  • Bootkits Analyzer: MBR/VBRコードを分析するための特殊なツール。逆アセンブルと既知の正常なベースラインとの比較を含む

一般的なシナリオ

シナリオ: OS再インストール後も持続する侵害の調査

コンテキスト: ある組織が侵害されたワークステーションを再イメージングしたが、数時間以内に同じC2ビーコンが再開された。標準的なディスクフォレンジックではマルウェアは見つからず、UEFIブートキットが疑われる。

アプローチ:

  1. Linux Live USBから起動し、侵害されたOSコンポーネントを実行しないようにする
  2. chipsecまたはflashromを使用してSPIフラッシュファームウェアをダンプし、オフライン分析を行う
  3. ddでMBRおよびVBRセクターをダンプし、ブートセクター分析を行う
  4. EFIシステムパーティションをコピーしてブートローダーの整合性を検証する
  5. UEFIToolでSPIダンプを開き、モジュールGUIDをベンダー提供のファームウェアと比較する
  6. 存在すべきでない追加または変更されたDXEドライバを探す
  7. Ghidra(x86_64 UEFIモジュール形式)で疑わしいモジュールを分析する
  8. セキュアブート設定を確認し、エクスプロイトベースのバイパスがないかチェックする

落とし穴:

  • 侵害されたOSが実行されている状態でシステムを分析する(ルートキットがライブ分析から隠れる可能性がある)
  • SPIフラッシュを確認しない(ディスクベースのブートコンポーネントのみを分析すると、ファームウェアレベルのインプラントを見逃す)
  • セキュアブートがすべてのブートキットを防ぐと想定する(既知のバイパスが存在する、例: CVE-2022-21894)
  • 再フラッシュ前に元のファームウェアダンプを保存しない(帰属のための重要な証拠を失う)

出力形式

ブートキット / ルートキット分析レポート
========================================
システム:           Dell OptiPlex 7090 (UEFI, TPM 2.0)
ファームウェアバージョン: 1.15.0 (Dell)
セキュアブート:      有効(ただしバイパス済み)
取得方法:   Linux Live USB + chipsec SPIダンプ

MBR/VBR分析
MBRシグネチャ:    有効 (0x55AA)
MBRコード:         標準Windows 10 MBRと一致(正常)
VBRコード:         標準NTFS VBRと一致(正常)

UEFIファームウェア分析
モジュール総数:    287
ベンダー想定:      285
追加モジュール:    2 不正
  [!] DXEドライバGUID: {ABCD1234-...} "SmmAccessDxe_mod"(変更)
      元のサイズ: 12,288 バイト
      現在のサイズ:  45,056 バイト(32KB追加)
      エントロピー: 7.82(高 - 暗号化ペイロード)

  [!] DXEドライバGUID: {EFGH5678-...} "UefiPayloadDxe"(新規 - ベンダーファームウェアに存在しない)
      サイズ: 28,672 バイト
      機能: 起動時に持続性エージェントをドロップ

ブートチェーン整合性
bootmgfw.efi:     変更あり(ハッシュ不一致、CVE-2022-21894によるセキュアブートバイパス)
winload.efi:      変更あり(ロード時にDSEが無効化)
ntoskrnl.exe:     正常(ただし起動後に署名なしドライバがロードされた)

カーネルルートキットコンポーネント
ドライバ:           C:\Windows\System32\drivers\null_mod.sys(署名なし、隠し)
SSDTフック:        3(NtQuerySystemInformation, NtQueryDirectoryFile, NtDeviceIoControlFile)
隠しプロセス:       2(PID 6784: beacon.exe, PID 6812: keylog.exe)
隠しファイル:       C:\Windows\System32\drivers\null_mod.sys

帰属
ファミリー:         BlackLotus亜種
信頼度:            高(CVE-2022-21894エクスプロイト、ESP変更パターンが一致)

是正
1. ハードウェアプログラマーを使用してSPIファームウェアを正常なベンダーイメージで再フラッシュ
2. 正常なWindowsインストールメディアからEFIシステムパーティションを再構築
3. 検証済みメディアからOSを再インストール
4. すべてのファームウェア書き込み保護を有効化
5. ファームウェアを最新バージョンに更新(CVE-2022-21894を修正)

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

analyzing-docker-container-forensics

Investigate compromised Docker containers by analyzing images, layers,

関連スキル