
アルゴリズムによるPE難読化解除ツール、シャノンエントロピーレーダー、インシデントトリアージエンジン
___________ __ _________ __ .__
\_ _____/ _____/ |________ ____ ______ ___.__./ _____// |________|__|_____
| __)_ / \ __\_ __ \/ _ \\____ < | |\_____ \\ __\_ __ \ \____ \
| \ | \ | | | \( <_> ) |_> >___ |/ \| | | | \/ | |_> >
/_______ /___| /__| |__| \____/| __// ____/_______ /|__| |__| |__| __/
\/ \/ |__| \/ \/ |__|
現代のマルウェアの多くは、パッカー、難読化されたローダー、または暗号化されたステージャーに隠れており、単純なファイル全体のエントロピースキャナーをすり抜けるように設計されています。entropystrip は静的なバイトシグネチャに依存するのではなく、以下を評価します:
UuidFromString、RtlIpv4StringToAddress)を検出し、フォーマットされたUUIDシェルコードクラスタを特定します。IMAGE_SCN_MEM_WRITE および IMAGE_SCN_MEM_EXECUTE)を識別します。WIN_CERTIFICATE Authenticodeテーブルを構造的に検証して、真の証明書とドロッパーを区別します。T1027、T1027.001、T1027.002、T1055、T1497、T1129)に自動的に関連付けます。0xdeadbeef)およびセットアップヘッダーを検証し、正規ソフトウェアに対する誤検知を排除します。--dump は疑わしいセクションとオーバーレイをディスクに直接抽出し、オフラインでの難読化解除を可能にします。要件:Windows、Linux、またはmacOS上のPython 3.8以上。
pip install entropystrip
またはソースから直接インストール:
git clone https://github.com/dwexi/entropystrip.git
cd entropystrip
pip install -e .
usage: entropystrip [-h] [-r] [--dump] [--deep] [--html HTML] [--json JSON] target
EntropyStrip: PE De-obfuscator & Triage Engine
positional arguments:
target Path to Windows executable (.exe / .dll) or directory to scan
options:
-h, --help show this help message and exit
-r, --recursive
recursively scan subdirectories if target is a folder
--dump carve and write high-entropy payloads to extracted_payloads/
--deep deep forensic triage: MITRE ATT&CK mapping, entry point disassembly, hashes
--html HTML write minimalist HTML report to specified path
--json JSON write machine-readable JSON telemetry to specified path
単一のバイナリを分析:
python main.py target.exe
MITRE ATT&CKマッピングと逆アセンブリを含む詳細なフォレンジックトリアージ:
python main.py suspicious.exe --deep
隠されたペイロードバッファを分析して抽出:
python main.py suspicious.exe --dump
抽出されたペイロードは extracted_payloads/<target>_<section>.bin に書き込まれます。
スタンドアロンHTMLレポートをエクスポート:
python main.py sample.exe --html report.html
未知のファイルが含まれるディレクトリ全体をトリアージ:
python main.py "C:\IncidentTriage" -r
シャノンエントロピーは、1バイトあたり0.00から8.00ビットの情報密度を測定します:
$$H(X) = -\sum_{i=0}^{255} P(x_i) \log_2 P(x_i)$$
| エントロピー範囲 | 予想される内容 | 備考 |
|---|---|---|
0.00 - 2.00 | ゼロパディング、疎なテーブル | 未初期化データやアライメントパディングに一般的 |
2.00 - 5.50 | 標準ASCII、設定 | 通常のアプリケーションメタデータ、文字列 |
5.50 - 6.60 | ネイティブコンパイル済みマシンコード | 標準的なx86/x64命令(.text) |
6.60 - 7.30 | 圧縮アセット | ビットマップ、アイコン、zlib/deflateストリーム |
7.40 - 8.00 | 暗号文 | AES/RC4暗号化ペイロードまたは密にパックされたシェルコード |
MITライセンス。詳細は LICENSE を参照してください。