malware-analysis について
malware-analysis はセキュリティアナリスト向けのマルウェア分析スキルです。サンプルのスクリプトによるトリアージや指標抽出に、根拠に基づく推論、確信度評価、構造化された脅威レポートを組み合わせます。
主な機能
- 01サンプルの静的解析
- 02脅威インテリジェンスのトリアージ
- 03IOC 抽出
- 04挙動と能力の評価
- 05確信度とリスクの評価
- 06構造化された脅威レポート
活用シーン
- 01不審なファイルのトリアージ
- 02静的指標からマルウェア能力を評価
- 03根拠を添えてリスクを説明
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tsale/ awesome-dfir-skills --skill malware-analysisインストール後、Claude Code で/malware-analysisを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
config/config.jsonreferences/mitre_techniques.mdreport_template.mdscripts/extract_iocs.pygenerate_report.pystatic_analysis.pytriage.py詳細
マルウェア分析スキル
このスキルは、アナリスト品質の脅威レポートを作成します。単なるデータの羅列ではありません。すべての結論は、証拠と推論に基づいている必要があります。
基本原則
- 証拠に基づく推論:理由を説明せずに結論を述べてはいけません
- 点と点を結び付ける:インジケーターを、挙動、機能、影響と関連付けます
- 確信度を評価する:確信の度合いとその理由を述べます
- 実行に移せる出力:レポートは情報を伝えるだけでなく、意思決定に役立つものである必要があります
分析ワークフロー
ステップ 1:データを収集する
すべてのスクリプトを実行して、生データを収集します。
# Static analysis - get hashes, PE info, strings, APIs, entropy
python3 scripts/static_analysis.py /path/to/sample -f json > static.json
# Threat intelligence - check reputation across sources
python3 scripts/triage.py -t file /path/to/sample -f json > triage.json
# IOC extraction - extract network/host indicators
python3 scripts/extract_iocs.py /path/to/sample -f json > iocs.json
ステップ 2:分析して推論する(ここが最重要のステップです)
収集したデータを使って、アナリスト品質の推論を行います。
2.1 脅威インテリジェンスの評価
次の点を確認します。
- このサンプルは既知のものですか?MalwareBazaar/ThreatFox で見つかった場合は、マルウェアであることが確認されています
- VT の検出率はどのくらいですか?
- 検出数 0 件:新しいサンプル、誤検知、またはクリーンなファイルの可能性があります。動的解析が必要です
- 検出数 1~5 件:新しい亜種または標的型の可能性があります。不審です
- 検出数 5~15 件:複数のベンダーにより悪意が確認されています
- 検出数 15 件以上:広く知られているマルウェアです
- どのファミリーに分類されていますか?そのファミリーの一般的な挙動を調査します
- 初めて確認されたのはいつですか?最近であれば、進行中のキャンペーンである可能性があります
推論は必ず説明してください。
「このサンプルは MalwareBazaar により RedLine Stealer と特定されており、VT の検出数は 70 件中 45 件です。検出率が高く、信頼できるマルウェアリポジトリにも登録されていることから、誤検知ではなく、既知の脅威であることが確認できます。」
2.2 静的インジケーターに基づく挙動分析
API 分析 — API を挙動に対応付けます。
| API パターン | 想定される挙動 | 推論 |
|---|---|---|
| VirtualAlloc + VirtualProtect + WriteProcessMemory + CreateRemoteThread | プロセスインジェクション | これは典型的なインジェクションパターンです。メモリを割り当て、実行可能にし、コードを書き込んで、対象プロセス内で実行します |
| CredEnumerate、CryptUnprotectData | 認証情報の窃取 | これらの API は、Windows の認証情報ストアや DPAPI で保護されたデータ(ブラウザーのパスワード)に直接アクセスします |
| InternetOpen + URLDownloadToFile | ダウンローダー | HTTP を初期化してファイルをダウンロードします。典型的なドロッパーの挙動です |
| RegSetValueEx + 文字列内の Run キーのパス | 永続化 | Run キーに書き込むことで、起動時に実行されるようにします |
| IsDebuggerPresent、GetTickCount、NtQuerySystemInformation | 分析対策 | 複数の回避チェックがあることから、分析中にマルウェアが挙動を隠している可能性が示唆されます |
| CryptEncrypt + ファイル列挙 API | ランサムウェアの可能性 | ファイルの検出機能と暗号化機能を併せ持ちます。ただし、安全な C2 通信にも使われる可能性があります |
推論は必ず説明してください。
「VirtualAlloc、VirtualProtect、CreateRemoteThread がそろっていることから、プロセスインジェクション機能が強く示唆されます。これらの API は個別には正当な用途もありますが、この特定の組み合わせは、他のプロセスにコードを注入する典型的なパターンです。」
パッキング分析:
| インジケーター | 意味 | 確信度 |
|---|---|---|
| エントロピー > 7.0 | 圧縮または暗号化されたコンテンツ | 高 |
| セクションのエントロピー > 7.0(特に .text) | パックされたコードセクション | 高 |
| UPX0、UPX1、.aspack、.packed セクション | 既知のパッカーを示すシグネチャ | 非常に高 |
| RWX セクション | 自己書き換えコード | 中 |
| GetProcAddress/LoadLibrary のみを含む小さなインポートテーブル | API の動的解決 | 高 |
パックされている場合は、その意味を述べてください。
「このサンプルには、エントロピー 7.4 や UPX セクションなど、複数のパッキングを示す特徴があります。静的解析の結果は、実際のペイロードではなく、アンパッカーのスタブを示しています。真の機能を明らかにするには、動的解析が必要です。」
2.3 機能の評価
証拠に基づき、マルウェアが実行できることを判断します。
| 機能 | 必要な証拠 | 信頼度 |
|---|---|---|
| プロセスインジェクション | インジェクション API が2つ以上 | 3つ以上なら高、2つなら中 |
| 認証情報の窃取 | 認証情報へのアクセス API が1つでもある | 高(これらは特異性が高い) |
| キーロギング | SetWindowsHookEx | 中(正当な用途もある) |
| ネットワーク C2 | ネットワーク API が2つ以上+抽出された URL/IP | 高 |
| ファイルのダウンロード | URLDownloadToFile など | 高 |
| 永続化 | レジストリ/サービス API+関連文字列 | 中 |
| 暗号化/ランサムウェア | 暗号 API+ファイル列挙 | 中(文脈の確認が必要) |
信頼度と根拠を示します:
"認証情報窃取機能:高い信頼度 — CryptUnprotectData が存在します。この API は、ブラウザーのパスワードなど、DPAPI で保護されたデータを特に復号します。ほとんどのソフトウェアにおいて、この API に正当な用途はありません。"
2.4 リスク評価
根拠を添えてリスクレベルを判断します。
| リスクレベル | 基準 |
|---|---|
| CRITICAL | 認証情報窃取 API、プロセスインジェクション、データ窃取/ランサムウェアで知られるマルウェアファミリーであることが確認されている |
| HIGH | 複数の悪意ある機能、ネットワーク C2、永続化の仕組み |
| MEDIUM | 不審な兆候はあるが、悪意ある機能は確認されていない。または、パッキングによって実際の動作が隠されている |
| LOW | 兆候が少なく、不審なパターンはあるものの、正当なソフトウェアである可能性がある |
| UNKNOWN | 証拠が不十分、強くパッキングされている、または TI の検出結果がない |
ステップ 3:レポートを作成する
レポートを次の構成で作成します。
# Threat Analysis Report: [MALWARE_NAME or "Unknown Sample"]
| | |
|---|---|
| **Risk Level** | [CRITICAL/HIGH/MEDIUM/LOW] |
| **Confidence** | [High/Medium/Low] |
| **Analysis Date** | [DATE] |
---
## Executive Summary
[2-3 sentences: What is this? Is it malicious? What can it do? How do we know?]
**Key Finding:** [One sentence bottom line]
---
## Threat Intelligence Assessment
[What do TI sources tell us? Explain what each finding means]
- **VirusTotal:** [X/Y detections] — [what this means]
- **MalwareBazaar:** [Found/Not found] — [what this means]
- **Family Attribution:** [Family name] — [what this family typically does]
**Assessment:** [Your reasoned conclusion based on TI]
---
## Behavioral Analysis
### Identified Capabilities
#### [Capability 1: e.g., "Process Injection"]
- **Confidence:** [High/Medium/Low]
- **Evidence:** [List the specific APIs/strings found]
- **Reasoning:** [Explain WHY this evidence indicates this capability]
#### [Capability 2: e.g., "Credential Theft"]
...
### Packing Assessment
[Is it packed? What does this mean for the analysis?]
### Anti-Analysis Techniques
[What evasion techniques were identified?]
---
## MITRE ATT&CK Mapping
| Tactic | Technique | ID | Evidence |
|--------|-----------|----|---------|
| [Only include techniques you can justify with evidence] |
---
## Indicators of Compromise
### File Indicators
[Hashes]
### Network Indicators
[Defanged IPs, domains, URLs - only if extracted]
### Host Indicators
[Registry keys, file paths, mutexes - only if found]
---
## Risk Assessment
**Overall Risk: [LEVEL]**
This assessment is based on:
1. [Reason 1]
2. [Reason 2]
3. [Reason 3]
**Confidence in Assessment: [High/Medium/Low]**
- [Why this confidence level]
---
## Recommendations
### Immediate Actions
[What should be done RIGHT NOW based on risk level]
### Detection Opportunities
[How to detect this threat]
### Further Analysis Needed
[What questions remain unanswered]
エントロピーの解釈
| エントロピー | 意味 |
|---|---|
| 0-1 | 構造が非常に単純(空、反復) |
| 4-5 | プレーンテキスト、読み取り可能な文字列 |
| 5-6 | コンパイル済みコード(通常の .text セクション) |
| 6-7 | 圧縮データ、一部難読化 |
| 7-8 | 暗号化/圧縮(パッキング済み) |
ファイルシグネチャ
| バイト列 | 種類 |
|---|---|
| 4D 5A (MZ) | PE 実行ファイル |
| 50 4B (PK) | ZIP/Office ドキュメント |
| 7F 45 4C 46 | ELF 実行ファイル |
| D0 CF 11 E0 | OLE/旧形式の Office |
| 25 50 44 46 |
分析推論の例
悪い例(データの羅列):
「API を検出:VirtualAlloc、CreateRemoteThread、RegSetValueEx。エントロピー:7.2。VT:34/70。」
良い例(アナリストの推論):
「このサンプルには、VirtualAlloc と CreateRemoteThread が存在することから、プロセスインジェクション機能があると判断できます(信頼度:高)。これらの API は、標的プロセス内にメモリを割り当て、インジェクションしたコードを実行するスレッドを作成するという、典型的なコードインジェクションのパターンを形成します。エントロピーが高い(7.2)ことから、ペイロードがパッキングされていると考えられます。つまり、観測された API は最終ペイロードではなく、アンパッカーのスタブに属している可能性があります。VirusTotal の検出率が 34/70 であることから、このサンプルは既知のマルウェアであり、複数のベンダーが認証情報の収集を行う情報窃取型マルウェア、Agent Tesla の亜種として特定しています。プロセスインジェクション機能があり、認証情報を窃取するマルウェアファミリーに関連していることから、このサンプルは実行されたシステムの認証情報セキュリティに対して CRITICAL なリスクをもたらします。」
スクリプトのリファレンス
static_analysis.py
python3 scripts/static_analysis.py <file> -f [text|json]
抽出項目:ハッシュ、ファイル形式、PE ヘッダー、セクション、エントロピー、インポート、文字列、不審な兆候
triage.py
python3 scripts/triage.py <ioc> -f [text|json]
python3 scripts/triage.py -t file <filepath> -f json
python3 scripts/triage.py --status # Check API config
照会先:MalwareBazaar、ThreatFox、URLhaus、VirusTotal、AbuseIPDB
extract_iocs.py
python3 scripts/extract_iocs.py <file> -f [text|json|csv]
抽出項目:IP、ドメイン、URL、メールアドレス、ハッシュ、レジストリキー、ファイルパス、暗号通貨ウォレット、ミューテックス