
iocx v0.7.6.1
Расширяемый детерминированный движок статического анализа, извлекающий высокосигнальные IOC из PE-файлов и текста, созданный для автоматизации SOC и современных конвейеров анализа угроз.
IOCX
Детерминированное извлечение IOC с нулевым риском для современных конвейеров безопасности
Статическое извлечение IOC из PE-файла с помощью CLI IOCX
Официальный проект IOCX
Это оригинальный движок IOCX для детерминированного статического извлечения IOC и анализа PE-файлов. Любые другие репозитории, использующие имя «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 для масштабируемого современного анализа угроз.
Попробуйте IOCX за 10 секунд
echo "http://malicious.example" | iocx -
Или безопасно просканируйте PE-файл:
iocx suspicious.exe -a deep
Зачем существует IOCX
Команды безопасности сталкиваются с тремя постоянными проблемами:
- Экстракторы на основе регулярных выражений ломаются при враждебных входных данных
- Песочницы небезопасны, медленны и непригодны для автоматизации
- Большинство IOC-инструментов непоследовательны, медленны или выдают незначительно различающиеся результаты между запусками
IOCX решает эту проблему с помощью детерминированного движка, работающего только со статическим анализом, разработанного для автоматизации, безопасности и масштабирования.
Чем IOCX не является
IOCX намеренно не является:
- песочницей
- инструментом поведенческого анализа
- эмулятором
- движком обогащения
Он никогда не выполняет недоверенный код. Он никогда не выполняет динамический анализ. Он статичен по замыслу — для безопасности, детерминизма и совместимости с CI/CD.
Философия дизайна
IOCX создан для реалий современного вредоносного ПО, а не для допущений устаревших инструментов.
1. Детерминизм вместо неоднозначности
Стабильный, воспроизводимый вывод — без случайности, без изменчивости.
2. Статический анализ вместо динамического
Выполнение небезопасно. Статический анализ предсказуем, масштабируем и удобен для CI.
3. Инженерия с учётом враждебных входных данных
Повреждённые PE-файлы, испорченные RVA, враждебные строки — IOCX рассматривает их как обычные входные данные.
4. Стабильность схемы как контракт
Нисходящие системы никогда не должны ломаться при обновлении.
5. Производительность без компромиссов
150–300 МБ/с на необработанном тексте. 6–15 МБ/с на типичных PE-файлах. Предсказуемость даже при наихудшей враждебной нагрузке.
Эти обязательства основаны на опубликованной методологии исследования структурного анализа PE — детерминированное создание тестовых образцов, дисциплина единичной аномалии и поведение загрузчика Windows как эталон корректности. См. docs/methodology.md для полной методологии и paax.dev для более широкой таксономии враждебных PE и коммерческого набора тестовых образцов.
Что отличает IOCX
| Возможность | IOCX | Типичные экстракторы IOC | Песочницы / динамические инструменты |
|---|---|---|---|
| Безопасность | Нулевое выполнение, только статический анализ | Только регулярные выражения, нет безопасности для двоичных файлов | Выполняет недоверенный код (высокий риск) |
| Детерминизм | Полностью детерминированный вывод | Недетерминированный при шуме | Недетерминированный по замыслу |
| Понимание двоичных форматов | Полный разбор PE, эвристики | Нет поддержки двоичных файлов | Да, но небезопасно + медленно |
| Устойчивость к враждебным данным | Протестировано против повреждённых PE, враждебных строк | Легко обходится | Часто падает или ошибочно классифицирует |
| Производительность | 150–300 МБ/с (текст), 6–15 МБ/с (PE) | Сильно варьируется | Чрезвычайно медленно |
| Удобство для CI/CD | Да — безопасно, детерминированно, быстро | Частично | Нет — небезопасно для конвейеров |
| Стабильность схемы | Гарантирована | Редко | Отсутствует |
Короче говоря: IOCX создан для реальной враждебной реальности, а не для идеализированных входных данных.
Варианты использования
CI/CD и DevSecOps
- Сканирование двоичных файлов перед выпуском
- Обнаружение случайных URL, IP-адресов или секретов в сборках
- Обеспечение соблюдения требований безопасности с нулевым риском выполнения
SOC и реагирование на инциденты
- Извлечение индикаторов из оповещений или текста буфера обмена аналитика
- Безопасный осмотр образцов вредоносного ПО без выполнения
- Нормализация IOC в структурированный JSON
Анализ угроз
- Обработка потоков данных в масштабе
- Разбор неструктурированных отчётов
- Создание конвейеров обогащения на основе детерминированного вывода
Автоматизация и скриптинг
- Передача логов или артефактов через IOCX
- Использование Python API для ETL или пакетных рабочих процессов
- Расширение с помощью пользовательских детекторов
Профили производительности
1. Извлечение сырых IOC (текст, логи, буферы)
150–300 МБ/с устойчивая пропускная способность Быстрый путь — без разбора PE.
| Детектор | Время на 1 МБ | Пропускная способность |
|---|---|---|
| Крипто | 0.0037 с | ~270 МБ/с |
| Пути к файлам | 0.0041 с | ~250 МБ/с |
| IP | 0.0065 с | ~156 МБ/с |
| Домены | 0.0035 с | ~300 МБ/с |
2. Типичные PE-файлы (~39 КБ)
- 0.0122 с (типично)
- 0.0145 с (с эвристиками)
- 6–15 МБ/с пропускная способность
3. Враждебный плотный PE (1.5 МБ)
- 0.192 с
- ~7.6 МБ/с пропускная способность
- Вызывает аномалии TLS, структурные аномалии, паттерны анти-отладки
4. Полный движок (не-PE)
- 1 МБ: 0.038 с
Основные версии
Показать историю версий
v0.7.6.1 — Валидатор каталога исключений
- Добавлена глубокая семантическая валидация каталога исключений PE (
.pdata); 14 новых кодов причин; всего 15 валидаторов. - Исправлен дефект, который подавлял структурные находки во всём движке.
- Четыре дополнительных проверки оказались мёртвыми в продакшене: две проверки размещения каталогов, одна проверка отображения секций и одна проверка границ каталога ресурсов.
- Видимые изменения в выводе: находки, ранее подавленные или неправильно помеченные, теперь будут отображаться.
- Тесты: 1620 → 2136. Покрытие: 100%.
v0.7.6 — Расширение структурных валидаторов: каталоги Debug и relocations
- Два новых структурных валидатора PE — relocations и debug
- Валидаторы WIN_CERTIFICATE и tls теперь получают структурную истину из выделенных парсеров структур, независимых от pefile
- 12 новых кодов причин с таксономиями подпричин, разрешаемыми по приоритету
- Детерминированный побайтовый разбор — без зависимости от ленивой интерпретации pefile
- 1620 тестов при 100% покрытии
v0.7.5 — Расширение структурных валидаторов
- Четыре новых структурных валидатора PE — exports, delay-load imports, VS_VERSIONINFO и иерархия ресурсов
- 24 новых кода причин с таксономиями подпричин, разрешаемыми по приоритету
- Детерминированный побайтовый разбор — без зависимости от ленивой интерпретации pefile
- Релевантные для безопасности метаданные — характеристики DLL, декодирование имён подсистем/машин, энтропия каждого ресурса
- 1370 тестов при 100% покрытии — сквозная проверка с помощью
dumpbinна реальных двоичных файлах
v0.7.4.1 — Исправление совместимости с Windows
- Удалена зависимость
python-magic, вызывавшая ошибки импорта в системах Windows - Добавлен детектор типа файла на чистом Python для полной кроссплатформенной переносимости
- Улучшена логика обнаружения PE путём обеспечения строгой совместимой с Windows валидации PE.
- Без изменений поведения при извлечении IOC
- Исправление согласованности
--min-lengthзапланировано на v0.7.5
v0.7.4 — Расширенный разбор каталогов
- Полный разбор и валидация каталога конфигурации загрузки (Load Config Directory)
- Расширенные метаданные необязательного заголовка для нисходящих эвристик
- Новые эвристики GuardCF, cookie, аномалий
- Более быстрый анализ PE
- 99 PE-образцов в тестовом наборе; 45 полностью валидированы по спецификации
v0.7.3 — Структурная корректность и детерминированные эвристики
- Значительное усиление всех структурных валидаторов PE
- Детерминированное, стабильное для снимков поведение
- Чёткие, согласованные ReasonCodes
- Более сильные эвристики, основанные на структурной истине
v0.7.2 — Исправление зависимостей
- Добавлена отсутствующая зависимость
idna - Без изменений поведения или схемы
v0.7.1 — Расширение враждебных эвристик и усиление парсеров
- Шесть новых эвристик 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 создаёт структурированный, детерминированный JSON, который включает IOC, метаданные PE, анализ секций, эвристики и индикаторы обфускации.
Пример ниже — сокращённый вывод из реального враждебного 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 (поведение delay-load, структурные аномалии, паттерны перемещений)
- Правила выборочного подавления для рабочих процессов OSINT, DFIR и анализа угроз
- Извлечение метаданных ELF и Mach-O
- Режим пакетного анализа для рабочих процессов с несколькими артефактами
- Режимы вывода в стиле YARA и хуки обогащения
- Статический анализ, не зависящий от двоичного формата
- Кроссплатформенная экосистема плагинов
- Привязки для языков Rust, Go и Node.js
Вклад в проект
Мы приветствуем:
- Новые детекторы
- Улучшения парсеров
- Обновления документации
- Синтетические враждебные образцы
См. CONTRIBUTING.md для руководств.
Безопасность
Если вы обнаружили проблему безопасности, не открывайте issue на GitHub.
Следуйте инструкциям в SECURITY.md.
Лицензия
Лицензия MPL‑2.0 — см. LICENSE.