Communitygithub.com

マルウェア解析

静的・動的・行動解析によるマルウェアの分析に使用します。IOC抽出、YARA/Sigmaルール、サンドボックス、アンチ解析行動への対応を含みます。

マルウェア解析 とは?

Malware Analysis スキルは、悪意のあるソフトウェアサンプル(PE、ELF、Mach-O、APK、スクリプトなど)を静的、動的、行動の3つの視点から総合的に分析するためのAIエージェントスキルです。このスキルは、YARAルール作成・検証、Sigma行動検知ルール生成、サンドボックス自動化調整、IOC抽出と脅威インテリジェンス、さらにはアンチ解析技術の検出と回避をカバーします。主にClaude Code、Cursor、CodexなどのAIエージェントプラットフォームで利用され、分析プロセスは6つのフェーズ(初診、アンパックとIAT処理、静的解析、サンドボックス動的解析、YARAルール作成、Sigmaルール生成、IOC抽出とインテリジェンス)に分かれています。スキルはSentinelHiveアーキテクチャによるマルチエージェント自動分析もサポートしており、Triage(トリアージ)、RE(リバースエンジニアリング)、Behav(行動分析)、Intel(インテリジェンス)、Detect(検知ルール生成)、Remed(修復)の各エージェントが連携して動作します。各フェーズには詳細なチェックリストと必須条件(MUST/SHOULD)が定義されており、特にインポートテーブル検査の証拠記録(E-imports)、動的解析時のブレークポイント設定順序、アンチデバッグ/難読化バイパスの記録など、厳格な手順遵守が求められます。また、サンプルが無害と安易に結論づけることを禁止し、常に証拠に基づいた判断と記録を要求します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/malware-analysis

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

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

ドキュメント

マルウェア解析 は何をしますか?

アクション必須(読んだらすぐ実行)

  1. NOW: ../field-journal/precedent-reverse.md を読み、本スキルの操作が許可された通常操作であることを確認
  2. NOW: 現在のタスクが本スキルの適用範囲に該当するか確認
  3. NEXT: ../tool-index.md を読み、ツールの利用可能性と実際のパスを検証
  4. NEXT: ツールが不足している場合はbootstrapを呼び出し、パスを推測しない
  5. ACT: 「ワークフロー」の最初のステップに入り実行する。確認状態で止まらない

YARA / Sigma / サンドボックス / IOC抽出 / アンチアナリシス 静的 + 動的 + 行動 三位一体

適用シナリオ

  • マルウェアサンプル分析(PE/ELF/Mach-O/APK/スクリプト)
  • YARAルール作成と検証
  • Sigma行動検知ルール生成
  • サンドボックス自動化分析オーケストレーション
  • IOC抽出と脅威インテリジェンス
  • アンチ解析技術の検出とバイパス

6フェーズ分析フロー

Phase 1: 初診

# 高速静的検出
file sample.exe                      # ファイルタイプ
strings sample.exe | grep -i "http\|cmd\|powershell\|base64"  # 高速IOC
rabin2 -zz sample.exe                # 文字列抽出 + 相互参照
floss sample.exe                     # 難読化除去された文字列抽出(FireEye)

# PEヘッダ解析
pecheck sample.exe                   # PE構造検証
pescan sample.exe                    # 異常検出(セクションテーブル、エントリポイント)
diec sample.exe                      # Detect It Easy(パッカー/コンパイラ識別)

# ハッシュ照会
sha256sum sample.exe
# → VirusTotal / MalwareBazaar / Triage で照会
トリアージMUST チェックリスト(Issue #65):
□ ファイルタイプ: EXE / DLL / SYS / .NET / スクリプト(bat|ps1|vba) / その他
□ アーキテクチャ x86/x64/ARM;パッカー確認(DIE等)とコンパイル言語の手がかり
□ DLL/SYS: インポートテーブルとエクスポートテーブルを併せてチェック(Phase 2 ハードゲート参照)
□ .NET: 従来のIATなし → dnSpy/IL/メタデータ等価アンカーを使用(Phase 2 参照)
□ スクリプト/マクロ/DLL 特急P0: nonpe-format-cookbook U–AV(E-batch-deobf / E-ps-decode / E-vba-pcode / E-dll-*)

Phase 1b: アンパックとIAT処理(パッカー有りの場合 · Issue #65)

□ パッカー無し / .NET → Phase 2 へスキップ
□ パッカー有り: アンパック試行(許可された隔離環境)→ IAT修復を試みる
  - x86:ImportREC(または同等);x64:Scylla(または同等)。64ビットでImportRECを使用してはならない
□ 【IAT修復の鉄則】自動/半自動修復を優先;ツールがエラーを出す、または修復後に実行できない場合:
  - 直ちに静的IAT修復を中止
  - MUST E-iat-repair-fail(コマンド、ツール、現象)を記録
  - Phase 3 動的へ移行: APIブレークポイント(例: bp CreateFile)/ ハードウェアブレークポイント / メモリ検索でインポートを取得
  - これはインポートテーブルのスキップではない: パスは試行され、Evidenceに記録済み
□ 【パッチ6】アンパック+IAT修復後にクラッシュ/ブルースクリーン(CRC/サイズ自己検証の疑い):
  - ファイルの静的修復を断念;E-self-check-crash または E-iat-repair-fail に統合して記録
  - Phase 3 へ: CreateFile / GetFileSize / ハッシュ関連APIにブレークポイント設定
□ ユーザー指示の実現可能性(§0.5): パッカー有りの状態でユーザーが「アンパックより先にインポートテーブルを見たい」と主張 → ブロックを説明 + 確認を依頼;強制された場合は quality=unreadable/packed と記録し、意味のあるIATを完了したと偽装してはならない
□ ユーザーが「IAT修復/インポートテーブル検査」のやり直しを要求 → MUST 指名されたステップをやり直す(または確認済みの前提条件を経て合意された結果に基づく)。無関係なステップに差し替えて完了したと偽装してはならない

Phase 2: 静的解析

逆アセンブル/逆コンパイル:
□ IDA Pro / Ghidra: 詳細逆コンパイル
□ radare2: CLI高速解析
□ x64dbg: Windows GUIデバッガ

重点分析領域:
□ エントリポイント(Entry Point)→ 初期化ロジック
□ インポートテーブル → API用途推測(CreateRemoteThread=インジェクション, CryptEncrypt=ランサムウェア)
   **MUST(ハードゲート)**: rabin2 -i / IDA imports / pecheck 相当のコマンドを実行し、インポートテーブルを分類してEvidence(E-imports)に要約した後にのみPhase 3に進める(E-iat-repair-failを記録済みで動的パスを通る場合を除く)
   分類は最低限: ネットワーク / ファイル / 暗号化 / プロセスインジェクション / レジストリ / その他疑わしいAPIをカバー
   解析失敗またはテーブルが空: それでもMUST 失敗出力を記録し、黙ってスキップしてはならない
   **DLL/SYS**: MUST エクスポートテーブルのEvidence(E-exports、`rabin2 -E` または同等)を併せて記録
   **.NET**: 従来のIATがない場合、MUST dnSpy/IL/メタデータ/アセンブリ参照と機密APIの要約を等価アンカーとして使用し、E-imports / E-triage-imports セマンティックスロットに書き込む
   **クリーンなインポートテーブル**: 基本DLLのみ、ビジネスAPIがほとんどない → MUST 動的ロードの疑い(LoadLibrary/GetProcAddress)を指摘し、SHOULD Phase 3 でメモリAPIを取得;ハッシュ解決特徴が見られる場合は → E-api-hash(パッチN)
   **ワイド文字列(T)**: ASCII stringsでIOCが見つからない場合、MUST UTF-16も試す(strings -el / IDA unicode)
   **署名(F)**: 署名があってもMUST SigCheck;偽造/失効は脅威レベルを下げない
   ユーザーが「インポートテーブル検査のやり直し」を要求 → MUST 本項目をやり直す(ブロック時は実現可能性ゲートを経て合意);他のステップに差し替えて完了したと偽装してはならない
   **危険なAPIの組み合わせ(パッチ8)**: テーブルが長すぎる場合、悪意のある組み合わせクラスタ(例: FindWindow+WriteProcessMemory+CreateRemoteThread)を優先的に出力し、純粋なシステム基本呼び出しノイズをフィルタリング
□ リソースセクション → 組み込みペイロード(.rsrc セクション)
□ 文字列テーブル → URL/C2/ファイルパス/Base64 blob
□ TLSコールバック → デバッガ起動前に実行

Phase 3: サンドボックス動的解析

自動サンドボックス:
□ Joe Sandbox / ANY.RUN / Triage: 商用サンドボックス
□ CAPE Sandbox: オープンソース + YARA統合(推奨)
□ ASD Azul: オープンソースマルウェア分析プラットフォーム(2026年新リリース)
□ Cuckoo Sandbox: 古典的オープンソース(徐々にCAPEに置き換えられつつある)

デバッグ初期手順(パッチ7+10 · MUST 順序、ユーザーモードデバッガ):
□ ① TLSコールバックブレークポイント → ② エントリポイントEPブレークポイント → ③ 機密APIブレークポイント → ④ ExitProcess/終了パス安全ブレークポイント
□ ExitProcessがトリガーされた場合: 急いで再起動しない;直ちにメモリダンプし、パスをEvidenceに書き込む(パッチ10)

監視重点:
□ プロセス作成: CreateProcess / ShellExecute
□ ファイル操作: WriteFile → ランサムウェア? DeleteFile → Wiper?
□ レジストリ: Run/RunOnce 永続化
□ ネットワーク: HTTP/DNS → C2通信
□ メモリ: VirtualAllocEx → プロセスインジェクション
□ サービス: CreateService → 永続化
□ IAT修復失敗 / 自己検証クラッシュサンプル: 機密API + CreateFile/GetFileSize ブレークポイント / ハードウェア実行ブレークポイント / メモリ検索

無行動緊急分岐(MUST):
□ サンドボックスで行動なし、即終了、または無限スリープ → アンチデバッグ/アンチ仮想マシンをチェック(CPUID、タイマー、環境特徴)
□ ハードウェアブレークポイントによるバイパス、チェックポイントへのパッチ適用、または物理マシン/高忠実環境への変更を試みる
□ 「行動なし + 条件」をEvidenceに書き込む;無条件で「サンプル無害」と書いてはならない

タイムボックス(パッチ9 · SHOULD デフォルト、上書き可能):
□ 静的詳細分析約15分で重要なパスが見つからない → 強制的に本Phase動的に移行
□ 動的シングルステップ約200命令で悪意の手がかりなし → 強制的に静的/相互参照に戻り、再度アンカー設定

アンチデバッグ/難読化バイパス(Issue #65 A–T · 詳細は reverse-engineering/anti-analysis.md のレシピを参照):
□ P0: CPUID / RDTSC / PEB / NtQueryInformationProcess → 検出ポイントを記録後、ラボでバイパスするか環境を変更(E-anti-debug-*)
□ P0: クリーンなIAT → APIハッシュ動的解決(bp GetProcAddress、E-api-hash)
□ P0: strings 空 → 文字列復号ルーチン + ワイド文字列UTF-16(E-string-decrypt / E-wide-strings)
□ P0: 疑わしい署名 → SigCheck;無効/失効は脅威レベルを下げない(E-sig-forge)
□ P1: プロセス名スキャン / VEH / int3·DR / オーバーラップセクション / Overlay / .rsrc / Delay-Load
□ H/S フラット化と不透明述語 → ollvm-deobfuscation.md(ここでは長文をコピーしない)
□ バイパスに失敗してもEvidenceを書き込む;アンチデバッグで終了したからといってサンプル無害として扱ってはならない

非PE / スクリプト / DLL 補完(Issue #65 U–AV · 詳細は reverse-engineering/references/nonpe-format-cookbook.md):
□ bat/cmd: SET 結合復元(U)→ E-batch-deobf;UTF-16 BOM(V);REM/GOTO 埋め込み(W)
□ PowerShell: 多段Base64/Gzip(X)各段階Evidenceを記録;IEX 結合/反転(Z)
□ VBA: Stomping/P-Code(AA);Chr/Base64(AB);自己書き換えマクロ(AC)
□ DLL: TLS+DllMain(AJ);エクスポート異常/エクスポートなし(AK/AL);Delay-Load は A–T R を参照(AM);サイドローディング/リフレクション(AO/AP)
□ JS/APK/ドライバ: ルーティングは js-reverse / apk-reverse / kernel-driver-reverse + cookbook を使用し、ここでは長文をコピーしない

Phase 4: YARAルール作成

// ルール構造
rule MalwareFamily_Example {
    meta:
        description = "Exampleマルウェアファミリーの検出"
        author = "分析者"
        date = "2026-05"
        severity = "high"
        hash = "d41d8cd98f00b204e9800998ecf8427e"
        mitre_id = "T1055"  // プロセスインジェクション

    strings:
        // 文字列マッチ
        $str1 = "C2_SERVER_URL" ascii wide
        $str2 = "payload.dat" ascii

        // 16進マッチ
        $hex1 = { 8B 45 ?? 50 FF 15 [4] 85 C0 }
        // オペコードシーケンス: mov eax, [ebp-?]; push eax; call [import]; test eax, eax

        // 正規表現マッチ
        $re1 = /https?:\/\/[a-z0-9.-]+\/[a-z]{3,8}\.php/ ascii

    condition:
        // 組み合わせ条件
        uint16(0) == 0x5A4D and     // MZヘッダ
        filesize < 500KB and
        (2 of ($str*) or $hex1)
}

Phase 5: Sigmaルール生成

# 行動検知ルール
title: Suspicious Process Injection via CreateRemoteThread
id: 5a3d2c1b-1234-5678-9abc-def012345678
status: experimental
description: CreateRemoteThreadを使用したプロセスインジェクション行動の検出
author: 分析者
date: 2026/05/25
tags:
    - attack.t1055          # プロセスインジェクション
    - attack.t1055.001      # DLLインジェクション
logsource:
    category: process_creation
    product: windows
detection:
    selection:
        Image|endswith: '\powershell.exe'
        CommandLine|contains:
            - 'CreateRemoteThread'
            - 'VirtualAllocEx'
            - 'WriteProcessMemory'
    condition: selection
falsepositives:
    - 正当なデバッグツール
level: high

Phase 6: IOC抽出とインテリジェンス

IOCタイプ分類:
□ ネットワークIOC:
  - IP: C2アドレス(有効期限に注意)
  - Domain: DGAアルゴリズムで生成されたドメイン(rsnkfda.com, xpqmje.net)
  - URL: ペイロードホスティングアドレス
  - User-Agent: カスタムUA文字列

□ ホストIOC:
  - ファイルパス: %APPDATA%\Microsoft\Crypto\RSA\*.dat
  - レジストリ: HKCU\Software\Microsoft\Windows\CurrentVersion\Run\
  - Mutex: Global\{GUID} ミューテックス名
  - サービス名: システムサービスに偽装した名前

□ 行動IOC:
  - MITRE ATT&CK テクニックID(T1055, T1003, T1571...)
  - Sigmaルール → SIEM統合
  - YARAルール → エンドポイント検知

□ 静的IOC:
  - コンパイルタイムスタンプ(偽装可能)
  - PDBパス(開発者情報を含む)
  - セクション名異常(非標準の .text/.data)
  - インポートテーブル異常な組み合わせ(例: ランサムウェア CryptEncrypt + DeleteShadowCopies)

アンチ解析技術クイックリファレンス

技術検出方法YARA特徴
仮想マシン検出WMI Win32_BIOS/VideoController/ProcessorWin32_ 文字列 + 特定ベンダー名
サンドボックス検出ディスク < 60GB, RAM < 2GB, シングルコアCPUGlobalMemoryStatusEx 呼び出しパターン
デバッガ検出IsDebuggerPresent, CheckRemoteDebuggerPresentPEB.BeingDebugged オフセットアクセス
タイミングエスケープSleep(300000) 後に悪意行動実行NtDelayExecution 長パラメータ
地理位置検出キーボードレイアウト/タイムゾーンチェック → CIS諸国を除外GetKeyboardLayoutList 呼び出し
親プロセス検出explorer.exe vs cmd.exeプロセス名文字列比較
API直接syscallEDRフック回避syscall命令 + SSN解析

マルチエージェント自動分析(SentinelHiveアーキテクチャ)

┌─────────────────────────────────────────────────┐
│                  Hive Director                    │
│          (Claude Opus オーケストレーション + アービトレーション)    │
└──────┬──────┬──────┬──────┬──────┬───────┘
       │      │      │      │      │
   ┌───┘  ┌───┘  ┌───┘  ┌───┘  ┌───┘
   ▼      ▼      ▼      ▼      ▼      ▼
Triage  RE    Behav  Intel  Detect Remed
 迅速   逆コンパイル 行動   脅威   ルール   修復
 診断   静的   動的   インテリジェンス YARA   ソリューション
                          Sigma

ツールチェーン

ツール用途入手先
Ghidra / IDA Pro詳細逆コンパイルghidra-sre.org
CAPE SandboxオープンソースマルウェアサンドボックスGitHub: kevoreilly/CAPEv2
ASD Azul大規模自動分析GitHub: ASD
YARAパターンマッチングルールエンジンpip install yara-python
SigmaSIEM行動検知ルールGitHub: SigmaHQ/sigma
FLOSS難読化除去された文字列抽出pip install flare-floss
Detect It Easyパッカー/コンパイラ検出GitHub: horsicq/Detect-It-Easy
pe-sieveプロセスメモリスキャンGitHub: hasherezade/pe-sieve
VirusTotal APIマルチエンジンスキャンvirustotal.com
MalwareBazaarマルウェアサンプルデータベースbazaar.abuse.ch

参考

  • references/yara-sigma-rules.md — YARA + Sigma 作成方法論
  • references/sandbox-orchestration.md — サンドボックスオーケストレーションと自動化
  • references/anti-analysis-techniques.md — 94種類のアンチ解析技術検出
  • ../reverse-engineering/references/re-agent-workflow.md — IAT鉄則と6フェーズゲート(Issue #65)
  • ../reverse-engineering/anti-analysis.md — エージェント応答レシピ A–T(アンチデバッグ/難読化バイパス)
  • ../reverse-engineering/references/nonpe-format-cookbook.md — 非PE/マルチフォーマットレシピ U–AV(スクリプト/マクロ/JS/ドライバ/DLL/Android)
  • ../reverse-engineering/references/ollvm-deobfuscation.md — フラット化/不透明述語(H/S)

タスク完了セルフチェック(完了を主張する前にMUSTパス)

  • ワークフローの各ステップを実行しましたか(単に読んだだけではありませんか)?
  • インポートテーブルMUSTチェックは実行され、Evidenceに書き込まれましたか(E-imports または .NET 等価アンカー)?DLL/SYS は E-exports を含みますか?
  • IAT修復失敗または自己検証クラッシュの場合: E-iat-repair-fail / E-self-check-crash を記録し、動的に移行しましたか?
  • やり直し要求は、指名されたステップに戻るか、確認済みの前提条件を経た合意に基づいていますか?ブロック時には説明+確認を求め、ステップをすり替えていませんか?
  • 動的解析は TLS→EP→機密API→ExitProcess の安全順序でブレークポイントを事前設定しましたか?タイムボックス/危険なAPI組み合わせはバイパスに従って処理されましたか?
  • アンチデバッグ/難読化(A–T)は anti-analysis レシピに従ってEvidenceを記録しましたか?無効な署名で誤って脅威レベルを下げていませんか?
  • スクリプト/マクロ/DLLなどの非PEタイプは U–AV cookbook に従って対応するEvidence(例: E-batch-deobf / E-ps-decode / E-vba-pcode / E-dll-*)を記録しましたか?
  • tool-index に基づいて実際のツールパスを使用しましたか?
  • 再現可能な証拠(コマンド/スクリプト/スクリーンショット/レポート)を出力しましたか?
  • RULESで要求されるチェックリスト項目を完了し、書き戻しましたか?

Individual skills in this repo

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

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

diagram-generator

generate, refine, validate, and render diagrams from natural language, notes, code snippets, schemas, tables, or existing diagram source. use for flowcharts, swimlanes, sequence diagrams, state diagrams, er diagrams, class diagrams, architecture/c4-style diagrams, dependency graphs, gantt charts, mind maps, user journeys, sankey-style flows, org charts, network graphs, and other visual models. supports mermaid by default, graphviz dot for complex graph layout, plantuml for uml-heavy engineering diagrams, and svg output when direct markup is more reliable.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

関連スキル