
iocx v0.7.6.1
拡張可能で決定論的な静的解析エンジン。PEバイナリとテキストから高シグナルのIOCを抽出し、SOCの自動化と最新の脅威分析パイプライン向けに構築されています。
IOCX
現代のセキュリティパイプラインのための決定的・ゼロリスクIOC抽出
IOCX CLIを使用したPEファイルからの静的IOC抽出
公式IOCXプロジェクト
これは、決定的な静的IOC抽出とPE解析のためのオリジナルのIOCXエンジンです。 「iocx」という名前を使用する他のリポジトリは、このプロジェクトとは一切関係ありません。
公式リンク:
- PyPI: https://pypi.org/project/iocx/
- Github: https://github.com/iocx-dev/iocx
- ウェブサイト: https://iocx.dev/
IOCXが重要な理由
現代のマルウェアはデフォルトで敵対的です — 不正な形式、回避的、そして単純な抽出器を破壊するように設計されています。
- バイナリを認識しないツールは、不正な形式のPEで崩壊します
- サンドボックスは安全ではなく、CI/CDでは使用できません
- 再現性は自動化パイプラインに不可欠です
IOCXは、正確性と決定性が実際に重要となる環境向けに構築されています。
IOCXエンジン
IOCXは公式の静的IOC抽出エンジンです — DFIR、SOC自動化、CI/CDセキュリティ、大規模な脅威インテリジェンスパイプライン向けに構築された、決定的でバイナリを認識するシステムです。
正規表現のみの抽出器やサンドボックス依存のツールとは異なり、IOCXは以下を実行します:
- 純粋な静的解析
- ゼロ実行リスク
- 安定した決定的出力
- 敵対的テスト済みヒューリスティック
これは、スケーラブルで現代的な脅威解析のためのMalX Labsエコシステムの中核コンポーネントです。
10秒でIOCXを試す
echo "http://malicious.example" | iocx -
または、PEファイルを安全にスキャン:
iocx suspicious.exe -a deep
IOCXが存在する理由
セキュリティチームは3つの永続的な問題に直面しています:
- 正規表現抽出器は敵対的な入力で破綻します
- サンドボックス化は安全ではなく、遅く、自動化には不適切です
- ほとんどのIOCツールは一貫性がなく、遅く、実行ごとに微妙に異なる出力を生成します
IOCXは、自動化、安全性、スケール向けに設計された決定的で静的のみのエンジンでこれを解決します。
IOCXがではないもの
IOCXは意図的に以下ではありません:
- サンドボックス
- 動的解析ツール
- エミュレータ
- エンリッチメントエンジン
信頼できないコードを実行することは決してありません。 動的解析を実行することは決してありません。 設計上、静的のみです — 安全性、決定性、CI/CD互換性のためです。
設計哲学
IOCXは、レガシーツールの前提ではなく、現代のマルウェアの現実に対応するように設計されています。
1. 曖昧さよりも決定性
安定した再現可能な出力 — ランダム性なし、変動なし。
2. 動的よりも静的
実行は安全ではありません。静的解析は予測可能で、スケーラブルで、CIに適しています。
3. 敵対的ファーストの設計
不正な形式のPE、破損したRVA、敵対的な文字列 — IOCXはこれらを通常の入力として扱います。
4. 契約としてのスキーマ安定性
ダウンストリームシステムはアップグレードで壊れるべきではありません。
5. 妥協のないパフォーマンス
生テキストで150〜300 MB/秒。 一般的なPEで6〜15 MB/秒。 最悪の敵対的負荷でも予測可能。
これらのコミットメントは、PE構造解析の公開された研究方法論 — 決定的フィクスチャ構築、単一異常規律、Windowsローダー動作を正しさのオラクルとして使用 — に由来しています。完全な方法論についてはdocs/methodology.mdを、より広範な敵対的PE分類法と商用フィクスチャスイートについてはpaax.devを参照してください。
IOCXが他と違う点
| 機能 | IOCX | 一般的なIOC抽出器 | サンドボックス/動的ツール |
|---|---|---|---|
| 安全性 | ゼロ実行、静的のみ | 正規表現のみ、バイナリ安全性なし | 信頼できないコードを実行(高リスク) |
| 決定性 | 完全に決定的な出力 | ノイズ下で非決定的 | 設計上非決定的 |
| バイナリ認識 | 完全なPE解析、ヒューリスティック | バイナリサポートなし | あり、ただし安全でなく遅い |
| 敵対的耐性 | 不正な形式のPE、敵対的な文字列に対してテスト済み | 簡単にバイパスされる | しばしばクラッシュまたは誤分類 |
| パフォーマンス | 150〜300 MB/秒(テキスト)、6〜15 MB/秒(PE) | 非常に変動的 | 極端に遅い |
| CI/CD対応 | はい — 安全、決定的、高速 | 部分的 | いいえ — パイプラインに安全でない |
| スキーマ安定性 | 保証 | 稀 | なし |
要するに: IOCXは理想化された入力ではなく、実際の敵対的現実のために構築されています。
ユースケース
CI/CD & DevSecOps
- リリース前にバイナリをスキャン
- ビルド内の偶発的なURL、IP、シークレットを検出
- ゼロ実行リスクでセキュリティゲートを強制
SOC & インシデントレスポンス
- アラートやアナリストのクリップボードテキストからインジケータを抽出
- 実行せずにマルウェアサンプルを安全に検査
- IOCを構造化JSONに正規化
脅威インテリジェンス
- フィードを大規模に処理
- 非構造化レポートを解析
- 決定的出力に基づくエンリッチメントパイプラインを構築
自動化 & スクリプティング
- ログやアーティファクトをIOCXにパイプ
- ETLやバッチワークフローにPython APIを使用
- カスタム検出器で拡張
パフォーマンスプロファイル
1. 生のIOC抽出(テキスト、ログ、バッファ)
150〜300 MB/秒の持続スループット 高速パス — PE解析なし。
| 検出器 | 1 MB時間 | スループット |
|---|---|---|
| Crypto | 0.0037 s | ~270 MB/秒 |
| Filepaths | 0.0041 s | ~250 MB/秒 |
| IP | 0.0065 s | ~156 MB/秒 |
| Domains | 0.0035 s | ~300 MB/秒 |
2. 一般的なPEファイル(約39 KB)
- 0.0122 s(一般的)
- 0.0145 s(ヒューリスティックあり)
- 6〜15 MB/秒のスループット
3. 敵対的高密度PE(1.5 MB)
- 0.192 s
- 約7.6 MB/秒のスループット
- TLS異常、構造異常、アンチデバッグパターンをトリガー
4. フルエンジン(非PE)
- 1 MB: 0.038 s
バージョンハイライト
バージョン履歴を表示
v0.7.6.1 — 例外ディレクトリバリデータ
- PE例外(
.pdata)ディレクトリの深い意味論的検証を追加; 14の新しい理由コード; 合計15のバリデータ。 - エンジン全体で構造的発見を抑制していた欠陥を修正。
- 本番環境でデッドであることが判明したさらに4つのチェック: 2つのディレクトリ配置、1つのセクションマッピング、1つのリソースディレクトリ境界チェック。
- 出力に表示: 以前は抑制または誤表示されていた発見が今後表示されます。
- テスト: 1620 → 2136。カバレッジ: 100%。
v0.7.6 — 構造バリデータ拡張: デバッグおよびリロケーションディレクトリ
- 2つの新しいPE構造バリデータ — リロケーションとデバッグ
- WIN_CERTIFICATEおよびtlsバリデータは、pefileから独立した専用の構造パーサーから構造的真実を取得するようになりました
- 優先度解決済みサブ理由分類法を持つ12の新しい理由コード
- 決定的なバイトレベル解析 — pefileの遅延解釈に依存しない
- 100%カバレッジで1620テスト
v0.7.5 — 構造バリデータ拡張
- 4つの新しいPE構造バリデータ — エクスポート、遅延ロードインポート、VS_VERSIONINFO、リソース階層
- 優先度解決済みサブ理由分類法を持つ24の新しい理由コード
- 決定的なバイトレベル解析 — pefileの遅延解釈に依存しない
- セキュリティ関連メタデータ — DLL特性、サブシステム/マシン名のデコード、リソースごとのエントロピー
- 100%カバレッジで1370テスト — 実際のバイナリで
dumpbinに対してエンドツーエンドで検証済み
v0.7.4.1 — Windows互換性ホットフィックス
- Windowsシステムでインポートエラーを引き起こしていた
python-magic依存関係を削除 - 完全なクロスプラットフォーム移植性のための純Pythonファイルタイプ検出器を追加
- 厳格なWindows互換PE検証を強制してPE検出ロジックを改善
- IOC抽出の動作変更なし
--min-length一貫性修正はv0.7.5で計画
v0.7.4 — 高度なディレクトリ解析
- 完全なロード設定ディレクトリの解析と検証
- ダウンストリームヒューリスティック用の拡張オプショナルヘッダーメタデータ
- 新しいGuardCF、cookie、異常ヒューリスティック
- より高速なPE解析
- テストスイートに99のPEフィクスチャ; 45が完全に仕様検証済み
v0.7.3 — 構造的正しさと決定的ヒューリスティック
- すべてのPE構造バリデータの大幅な強化
- 決定的でスナップショット安定な動作
- 明確で一貫したReasonCode
- 構造的真実に基づくより強力なヒューリスティック
v0.7.2 — 依存関係修正
- 欠落していた
idna依存関係を追加 - 動作またはスキーマの変更なし
v0.7.1 — 敵対的ヒューリスティック拡張とパーサー強化
- 6つの新しいPEヒューリスティック
- 拡張された敵対的PEコーパス
- 強化されたドメイン/URL/暗号/ハッシュ抽出器
- 決定的スナップショット検証済み出力
v0.7.0 — 決定的ヒューリスティックと敵対的テスト基盤
- 決定的ヒューリスティック
- レイヤー3敵対的サンプル
- スナップショット契約テスト
- Rich Headerクラッシュ修正
v0.6.0 — 安定出力スキーマと決定的メタデータ
- 完全に安定したJSONスキーマ
- 正規化されたPEメタデータ
- 形式化された解析レベル
v0.5.0 — 解析レベル、PEセクション解析、難読化ヒント
- 新しい解析レベルシステム
- PE構造解析
- 難読化ヒューリスティック
v0.4.0 — プラグインアーキテクチャ
- プラグイン対応ルールエンジン
- 統合検出フロー
v0.3.0 — 暗号IOC検出
- EthereumおよびBitcoinウォレット検出
v0.2.0 — 高信頼性IP検出
- 主要なIPv4/IPv6改善
クイックスタート
インストール
pip install iocx
ファイルからIOCを抽出
iocx suspicious.exe
テキストから抽出
echo "Visit http://bad.example.com" | iocx -
PE解析を有効化
iocx suspicious.exe -a
Python API
from iocx.engine import Engine
engine = Engine()
results = engine.extract("suspicious.exe")
print(results)
出力例
IOCXは、IOC、PEメタデータ、セクション解析、ヒューリスティック、難読化インジケータを含む構造化された決定的JSONを生成します。
以下の例は、実際の敵対的PEサンプルからの省略された出力です。ドキュメント目的でサイズを管理可能に保ちながら、スキーマの形状と深さを示しています。
JSON出力例を表示
{
"file": "heuristic_rich.full.exe",
"type": "PE",
"iocs": {
"urls": ["http://not-a-real-domain.test/payload"],
"domains": ["example-malware.com"],
"ips": ["192.0.2.123"],
"hashes": [
"abcd1234ef567890abcd1234ef567890",
"1234567890",
"3333333333333333"
],
"filepaths": [
"/usr/src/mingw-w64-11.0.1-3build1/mingw-w64-crt/crt/crtexe.c",
"/usr/x86_64-w64-mingw32/include",
"/usr/src/mingw-w64-11.0.1-3build1/mingw-w64-crt/crt/pseudo-reloc.c"
]
},
"metadata": {
"file_type": "PE",
"imports": ["KERNEL32.dll", "msvcrt.dll", "USER32.dll"],
"sections": [
".text", ".data", ".rwx", ".rdata",
"UPX0", ".pdata", ".xdata", ".tls"
],
"resources": [],
"resource_strings": [],
"delayed_imports": [],
"bound_imports": [],
"exports": [],
"signatures": [],
"has_signature": false,
"tls": {
"start_address": 5368758272,
"end_address": 5368758280,
"callbacks": 5368754232
},
"header": {
"entry_point": 5088,
"image_base": 5368709120,
"machine": "AMD64",
"subsystem": "Windows GUI"
},
"optional_header": {
"section_alignment": 4096,
"file_alignment": 512,
"size_of_image": 155648
}
},
"analysis": {
"sections": [
{ "name": ".text", "entropy": 5.92 },
{ "name": ".rwx", "entropy": 0 },
{ "name": "UPX0", "entropy": 0.34 },
{ "name": ".rdata", "entropy": 4.03 }
],
"obfuscation": [
{
"value": "abnormal_section_layout_virtual_only",
"category": "obfuscation_hint",
"metadata": {
"section": ".bss",
"raw_size": 0,
"virtual_size": 384
}
}
],
"extended": [
{
"value": "summary",
"category": "pe_metadata",
"metadata": {
"dll_count": 3,
"import_count": 45,
"resource_count": 0,
"has_tls": true,
"has_signature": false
}
}
],
"heuristics": [
{
"value": "packer_suspected",
"metadata": {
"reason": "packer_section_name",
"section": "UPX0"
}
},
{
"value": "anti_debug_heuristic",
"metadata": {
"reason": "anti_debug_api_import",
"dll": "kernel32.dll",
"function": "CheckRemoteDebuggerPresent"
}
},
{
"value": "anti_debug_heuristic",
"metadata": {
"reason": "timing_api_import",
"dll": "kernel32.dll",
"function": "GetTickCount"
}
},
{
"value": "pe_structure_anomaly",
"metadata": {
"reason": "section_overlaps_headers",
"section": ".bss",
"raw_address": 0,
"size_of_headers": 1536
}
},
{
"value": "pe_structure_anomaly",
"metadata": {
"reason": "data_directory_overlap",
"directory_a": "IMAGE_DIRECTORY_ENTRY_IMPORT",
"directory_b": "IMAGE_DIRECTORY_ENTRY_IAT"
}
}
]
}
}
アーキテクチャ
iocx/
├── examples/
├── docs/
├── tests/
└── iocx
├── detectors/
├── parsers/
├── plugins/
├── cli/
└── analysis/
プラグインエコシステムと拡張性
IOCXは安全かつ予測可能に拡張できるように設計されています。 プラグインは第一級市民であり、コアエンジンと同じ決定的スナップショットテストで検証されます。
以下を構築できます:
- カスタムIOC検出器
- カスタム正規表現ルール
- バイナリ認識プラグイン
- 内部ヒューリスティック
- パイプライン固有の抽出器
参照:
docs/specs/overlap-suppression.mddocs/specs/plugin-authoring-guidelines.md
エコシステム概要
IOCXは単一のバイナリ以上のものです — モジュラーエコシステムです:
- コアエンジン — 決定的IOC抽出 + PE解析
- プラグインシステム — カスタム検出器と解析モジュール
- 敵対的コーパス — 不正な形式のPE、敵対的な文字列、ファズサンプル
- スナップショットテストフレームワーク — 決定的出力を保証
- パフォーマンスベンチマーク — CIで強制
- ドキュメントスイート — 仕様、契約、プラグインガイド
IOCXを使用するのは誰か?
IOCXは以下で使用されています:
- DFIRチーム
- SOC自動化パイプライン
- CI/CDセキュリティゲート
- 脅威インテリジェンスプラットフォーム
- マルウェア研究ラボ
- セキュリティエンジニアリングチーム
インジケータを安全に、決定的に、大規模に抽出する必要があるあらゆる場所で、IOCXが適合します。
安全なテスト(マルウェア不要)
すべてのテストサンプルは:
- 合成
- 良性
- 公開安全(EICAR、GTUBE)
- 偶発的なマルウェア取り扱いを避けるように設計
パフォーマンス保証
IOCXはCIで厳格なパフォーマンスしきい値を強制して以下を保証します:
- 正規表現バックトラッキングの停止なし
- 病的な速度低下なし
- リリース間の安定したパフォーマンス
参照:
docs/performance.md
プロジェクトのアイデンティティと命名
IOCXという名前は、以下で公開されている公式エンジンのみを指します:
許可されないもの
iocxという名前のリポジトリ- このプロジェクトの一部ではない「iocx」という名前のツール
- 許可なく提携関係を示唆すること
許可されるもの
iocx-<plugin>iocx-extension-<name>iocx-detector-<feature>
公式IOCXリポジトリ
- コアエンジン: https://github.com/iocx-dev/iocx
- プラグインメタリポジトリ: https://github.com/iocx-dev/iocx-plugins
- ドキュメント: https://github.com/iocx-dev/iocx/tree/main/docs/specs
- PyPIパッケージ: https://pypi.org/project/iocx/
ロードマップ
IOCXの開発は、安定性、拡張性、より深い静的解析カバレッジに焦点を当てています。 以下の項目は、進行中の作業と探索の領域を表しています。
- 拡張PEヒューリスティック(遅延ロード動作、構造異常、リロケーションパターン)
- OSINT、DFIR、脅威インテリジェンスワークフロー向けの選択的抑制ルール
- ELFおよびMach-Oメタデータ抽出
- マルチアーティファクトワークフロー向けのバッチ解析モード
- YARAスタイル出力モードとエンリッチメントフック
- バイナリ非依存の静的解析
- クロスプラットフォームプラグインエコシステム
- Rust、Go、Node.js向けの言語バインディング
貢献
以下を歓迎します:
- 新しい検出器
- パーサーの改善
- ドキュメントの更新
- 合成敵対的サンプル
ガイドラインについてはCONTRIBUTING.mdを参照してください。
セキュリティ
セキュリティ問題を発見した場合は、GitHub issueを開かないでください。
SECURITY.mdの指示に従ってください。
ライセンス
MPL‑2.0ライセンス — LICENSEを参照。