
Расширяемый детерминированный движок статического анализа, извлекающий высокосигнальные IOC из PE-файлов и текста, созданный для автоматизации SOC и современных конвейеров анализа угроз.
Статическое извлечение IOC из PE-файла с помощью IOCX CLI
Это оригинальный движок IOCX для детерминированного статического извлечения IOC и анализа PE. Любые другие репозитории, использующие имя "iocx", не имеют отношения к этому проекту.
Официальные ссылки:
Современное вредоносное ПО враждебно по своей сути — некорректно сформировано, уклоняется от анализа и специально создаётся, чтобы ломать наивные экстракторы.
IOCX создан для сред, где корректность и детерминизм действительно имеют значение.
IOCX — это официальный движок статического извлечения IOC — детерминированная система, понимающая бинарные форматы, созданная для DFIR, автоматизации SOC, безопасности CI/CD и крупномасштабных конвейеров threat intelligence.
В отличие от экстракторов на основе регулярных выражений или инструментов, зависящих от песочниц, IOCX выполняет:
Это ключевой компонент экосистемы MalX Labs для масштабируемого современного анализа угроз.
echo "http://malicious.example" | iocx -
Или безопасно просканируйте PE-файл:
iocx suspicious.exe -a deep
Перед командами безопасности стоят три постоянные проблемы:
IOCX решает эту проблему с помощью детерминированного движка, использующего только статический анализ, спроектированного для автоматизации, безопасности и масштабирования.
IOCX намеренно не является:
Он никогда не выполняет недоверенный код. Он никогда не проводит динамический анализ. Он по своей конструкции является только статическим — ради безопасности, детерминизма и совместимости с CI/CD.
IOCX спроектирован с учётом реалий современного вредоносного ПО, а не предположений устаревших инструментов.
Стабильный, воспроизводимый вывод — никакой случайности, никакой нестабильности.
Выполнение кода небезопасно. Статический анализ предсказуем, масштабируем и удобен для CI.
Некорректные PE-файлы, повреждённые RVA, враждебные строки — IOCX воспринимает их как обычные входные данные.
Нижестоящие системы не должны ломаться при обновлении.
150–300 МБ/с на сыром тексте. 6–15 МБ/с на типичных PE-файлах. Предсказуемая даже при наихудшей враждебной нагрузке.
Эти обязательства основаны на опубликованной методологии исследования структурного анализа PE — детерминированная конструкция фикстур, принцип единичной аномалии и поведение загрузчика Windows как эталон корректности. Полную методологию см. в docs/methodology.md, а более широкую таксономию adversarial-PE и коммерческий набор фикстур — на paax.dev.
Коротко: IOCX создан для реальной враждебной действительности, а не для идеализированных входных данных.
150–300 МБ/с устойчивая пропускная способность Быстрый путь — без разбора PE.
dumpbinpython-magic, вызывавшая ошибки импорта в Windowspip install iocx
iocx suspicious.exe
echo "Visit http://bad.example.com" | iocx -
iocx suspicious.exe -a
from iocx.engine import Engine
engine = Engine()
results = engine.extract("suspicious.exe")
print(results)
IOCX создаёт структурированный, детерминированный JSON, который включает IOC, PE-метаданные, анализ секций, эвристики и индикаторы обфускации.
Пример ниже — сокращённый вывод реального враждебного PE-образца. Он демонстрирует форму и глубину схемы, сохраняя при этом приемлемый для документации размер.
{
"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 спроектирован так, чтобы его можно было расширять безопасно и предсказуемо. Плагины являются полноправными компонентами, проверяемыми теми же детерминированными snapshot-тестами, что и основной движок.
Вы можете создавать:
См.:
docs/specs/overlap-suppression.mddocs/specs/plugin-authoring-guidelines.mdIOCX — это больше, чем один бинарный файл; это модульная экосистема:
IOCX используется в:
Везде, где индикаторы нужно извлекать безопасно, детерминированно и в масштабе, IOCX подходит.
Все тестовые образцы:
IOCX обеспечивает строгие пороги производительности в CI, чтобы гарантировать:
См.:
docs/performance.mdНазвание IOCX относится исключительно к официальному движку, опубликованному на:
iocxiocx-<plugin>iocx-extension-<name>iocx-detector-<feature>Развитие IOCX сосредоточено на стабильности, расширяемости и более глубоком покрытии статического анализа. Ниже перечислены текущие направления работы и исследований.
Мы приветствуем:
Руководство см. в CONTRIBUTING.md.
Если вы обнаружили проблему безопасности, не открывайте issue на GitHub.
Следуйте инструкциям в SECURITY.md.
Лицензия MPL‑2.0 — см. LICENSE.
| Возможность | IOCX | Типичные IOC-экстракторы | Песочницы / динамические инструменты |
|---|
| Безопасность | Нулевое выполнение, только статический анализ | Только регулярные выражения, нет безопасности для бинарных файлов | Выполняет недоверенный код (высокий риск) |
| Детерминизм | Полностью детерминированный вывод | Недетерминированный при помехах | Недетерминированный по своей конструкции |
| Понимание бинарных форматов | Полный разбор PE, эвристики | Нет поддержки бинарных файлов | Да, но небезопасно и медленно |
| Устойчивость к враждебным воздействиям | Протестирован на некорректных PE и враждебных строках | Легко обходится | Часто падает или ошибочно классифицирует |
| Производительность | 150–300 МБ/с (текст), 6–15 МБ/с (PE) | Сильно варьируется | Чрезвычайно медленно |
| Удобство для CI/CD | Да — безопасно, детерминированно, быстро | Частичное | Нет — небезопасно для конвейеров |
| Стабильность схемы | Гарантирована | Редкая | Отсутствует |
| Детектор |
|---|
| Время на 1 МБ |
|---|
| Пропускная способность |
|---|
| Крипто | 0.0037 s | ~270 МБ/с |
| Пути к файлам | 0.0041 s | ~250 МБ/с |
| IP | 0.0065 s | ~156 МБ/с |
| Домены | 0.0035 s | ~300 МБ/с |
--min-length запланировано на v0.7.5idna