detecting-ransomware-encryption-behavior について
セキュリティチーム向けのランサムウェア行動検知スキルです。ファイルのエントロピー、プロセス I/O、名前変更のパターンを組み合わせて大量暗号化を評価し、スコアリングと対応基準も扱います。
主な機能
- 01ファイル種別ごとのエントロピー基準作成
- 02ファイルエントロピー変化のリアルタイム監視
- 03プロセス単位のファイル I/O 追跡
- 04行動シグナルの組み合わせ評価
- 05リスク別の対応設定
活用シーン
- 01シグネチャを回避する暗号化の検出
- 02ファイルサーバーの一括変更監視
- 03EDR のランサムウェア検知ルール調整
- 04隔離サンドボックスでの検知検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill detecting-ransomware-encryption-behaviorインストール後、Claude Code で/detecting-ransomware-encryption-behaviorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
ランサムウェアの暗号化動作を検出する
使用する場面
- 未知の亜種やゼロデイ亜種を検出する、ランサムウェア向けの振る舞い検出レイヤーを構築または調整する場合
- シグネチャベースの検出を回避する大量暗号化の活動について、ファイルサーバーやエンドポイントを監視する場合
- ファイルが暗号化された(高エントロピーの)コンテンツで置き換えられていることを特定する、エントロピーベースの検出を実装する場合
- 急速に連続するファイルのオープン、書き込み、名前変更、削除といった、不審なプロセスの振る舞いパターンを分析する場合
- レッドチーム演習で、実際のランサムウェア暗号化パターンに対する EDR 検出ルールを検証する場合
エントロピー分析だけを唯一の検出シグナルとして使用しないでください。 圧縮ファイル(ZIP、JPEG、MP4)は元からエントロピーが高いため、誤検出が発生します。I/O 速度やファイル名の変更パターンなどの振る舞いシグナルと必ず組み合わせてください。
前提条件
watchdogおよびpsutilライブラリを備えた Python 3.8+- プロセス監視とファイルシステムイベントの取得に必要な管理者アクセス権
- シャノンエントロピーと、ファイルコンテンツ分析へのその適用についての理解
- Windows:詳細なプロセスイベントとファイルシステムイベントのログ記録用に Sysmon をインストールしていること
- Linux:ファイルアクセス監視用に auditd を設定していること、または inotify ベースの監視ツールを使用していること
- 監視対象環境で一般的なファイルタイプのエントロピーのベースライン値
ワークフロー
ステップ 1:エントロピーのベースラインを設定する
環境内のファイルについて、通常のエントロピー範囲を計算します。
Entropy Baselines by File Type:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
File Type Normal Entropy Encrypted Entropy
.docx 3.5 - 6.5 7.8 - 8.0
.xlsx 4.0 - 6.8 7.8 - 8.0
.pdf 5.0 - 7.2 7.8 - 8.0
.txt 2.0 - 5.0 7.8 - 8.0
.csv 2.0 - 5.5 7.8 - 8.0
.sql 2.5 - 5.0 7.8 - 8.0
.jpg/.png 7.0 - 7.9 7.9 - 8.0 (hard to distinguish)
.zip/.7z 7.5 - 8.0 7.9 - 8.0 (hard to distinguish)
Key insight: Text-based files show the largest entropy jump when encrypted,
making them the best candidates for entropy-based detection.
ステップ 2:リアルタイムのエントロピー監視を実装する
ファイルへの書き込みを監視し、新しいコンテンツのエントロピーを計算します。
import math
from collections import Counter
def shannon_entropy(data):
"""Calculate Shannon entropy of byte data (0.0 to 8.0 scale)."""
if not data:
return 0.0
freq = Counter(data)
length = len(data)
return -sum((c / length) * math.log2(c / length) for c in freq.values())
def is_encryption_entropy(data, threshold=7.5):
"""Check if data entropy indicates encryption."""
entropy = shannon_entropy(data)
return entropy >= threshold, entropy
ステップ 3:ファイルシステムの I/O パターンを監視する
ランサムウェアのパターンを検出するため、プロセス単位のファイル操作を追跡します。
Ransomware I/O Behavior Signatures:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Rapid sequential file modification:
- >20 files modified per minute by single process
- Read original → Write encrypted → Rename with new extension
- Pattern: CreateFile → ReadFile → WriteFile → CloseHandle → MoveFile
2. File extension changes:
- Original: report.docx → Encrypted: report.docx.locked
- Many extensions changed within short time window
3. Ransom note creation:
- Same text file (README.txt, DECRYPT.html) created in multiple directories
- Created immediately after file encryption in each directory
4. Shadow copy deletion:
- vssadmin.exe delete shadows /all /quiet
- wmic.exe shadowcopy delete
- PowerShell: Get-WmiObject Win32_Shadowcopy | Remove-WmiObject
5. Entropy spike pattern:
- File read: entropy 3.5 (normal document)
- File write: entropy 7.9 (encrypted content)
- Delta > 3.0 is strong ransomware indicator
ステップ 4:振る舞いのスコアリングを実装する
複数のシグナルを組み合わせて、ランサムウェアの複合スコアを算出します。
def calculate_ransomware_score(process_metrics):
"""Score process behavior for ransomware likelihood (0-100)."""
score = 0
# High file modification rate
files_per_min = process_metrics.get("files_modified_per_minute", 0)
if files_per_min > 50:
score += 30
elif files_per_min > 20:
score += 15
# Entropy increase in written files
avg_entropy_delta = process_metrics.get("avg_entropy_delta", 0)
if avg_entropy_delta > 3.0:
score += 30
elif avg_entropy_delta > 2.0:
score += 15
# File extension changes
extension_changes = process_metrics.get("extension_changes", 0)
if extension_changes > 10:
score += 20
elif extension_changes > 3:
score += 10
# Ransom note creation
if process_metrics.get("ransom_note_created", False):
score += 20
return min(score, 100)
ステップ 5:自動対応のしきい値を設定する
検出のしきい値と自動封じ込めアクションを設定します。
Detection Thresholds:
━━━━━━━━━━━━━━━━━━━━
Score 0-25: INFORMATIONAL - Log only, no action
Score 25-50: LOW - Alert SOC for investigation
Score 50-75: HIGH - Alert SOC, suspend process, snapshot VM
Score 75-100: CRITICAL - Kill process, isolate endpoint, alert IR team
Automated Response Actions:
- Suspend/kill the encrypting process
- Disable network adapter to prevent lateral movement
- Create volume shadow copy snapshot before further damage
- Capture process memory dump for forensic analysis
- Send SIEM alert with process details, affected files, and timeline
検証
- 隔離されたサンドボックス環境で、既知のランサムウェアのサンプルに対する検出をテストします
- エントロピー監視で暗号化ファイルと圧縮ファイルを正しく識別できることを確認します
- 通常のワークロードで振る舞いのスコアリングが低い誤検出率を実現することを確認します
- 自動対応アクションが許容時間内(5 秒未満)に実行されることを検証します
- 複数のランサムウェアファミリー(LockBit、BlackCat、Conti)でテストし、検出範囲を確認します
- 監視のオーバーヘッドをベンチマークし、エンドポイントのパフォーマンスを低下させないことを確認します
主要な概念
| 用語 | 定義 |
|---|---|
| シャノンエントロピー | データのランダム性を数学的に測定する指標(バイトでは 0~8)です。暗号化されたデータは 8.0 に近づき、テキストファイルは通常 2~5 です |
| 差分エントロピー | ファイルの元のコンテンツと変更後のコンテンツの間のエントロピーの変化です。急上昇は暗号化を示します |
| I/O 速度の異常 | 単一のプロセスによるファイルの読み取り/書き込み操作の異常に高い頻度で、大量暗号化の特徴です |
| 振る舞いのスコアリング | 複数の弱いシグナル(エントロピー、I/O 速度、ファイル名の変更)を組み合わせて、複合的な信頼度スコアを算出することです |
| エントロピー検出の回避 | Base64 エンコードされた出力や部分的な暗号化など、高度なランサムウェアがエントロピー検出を回避するために用いる手法です |
ツールとシステム
- Sysmon:振る舞い分析用に、詳細なファイルシステムイベントとプロセスイベントを提供する Windows システム監視ツール
- watchdog (Python):リアルタイムのファイル変更検出に対応する、クロスプラットフォームのファイルシステム監視ライブラリ
- psutil (Python):プロセスごとの I/O 統計を追跡する、プロセスおよびシステム監視ライブラリ
- Elastic Endpoint:カナリアファイルを使用したランサムウェアの振る舞い検出機能を内蔵する、商用エンドポイント保護製品
- Wazuh:ファイル整合性監視機能とアクティブレスポンス機能を備えた、オープンソースのセキュリティプラットフォーム
コメント
Markdown 対応