Назад к обновлениям
New releaseSep 3, 2026

iocx v0.7.6.1

Расширяемый детерминированный движок статического анализа, извлекающий высокосигнальные IOC из PE-файлов и текста, созданный для автоматизации SOC и современных конвейеров анализа угроз.

Поделиться

IOCX

Детерминированное извлечение IOC с нулевым риском для современных конвейеров безопасности

IOCX Demo

Статическое извлечение IOC из PE-файла с помощью CLI IOCX

Официальный проект IOCX

Это оригинальный движок IOCX для детерминированного статического извлечения IOC и анализа PE-файлов. Любые другие репозитории, использующие имя «iocx», не связаны с этим проектом.

Официальные ссылки:


Почему 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

Команды безопасности сталкиваются с тремя постоянными проблемами:

  1. Экстракторы на основе регулярных выражений ломаются при враждебных входных данных
  2. Песочницы небезопасны, медленны и непригодны для автоматизации
  3. Большинство 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 МБ/с
IP0.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.md
  • docs/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


Дорожная карта

Разработка IOCX сосредоточена на стабильности, расширяемости и более глубоком покрытии статического анализа. Пункты ниже представляют текущие области работы и исследований.

  • Расширенные эвристики PE (поведение delay-load, структурные аномалии, паттерны перемещений)
  • Правила выборочного подавления для рабочих процессов OSINT, DFIR и анализа угроз
  • Извлечение метаданных ELF и Mach-O
  • Режим пакетного анализа для рабочих процессов с несколькими артефактами
  • Режимы вывода в стиле YARA и хуки обогащения
  • Статический анализ, не зависящий от двоичного формата
  • Кроссплатформенная экосистема плагинов
  • Привязки для языков Rust, Go и Node.js

Вклад в проект

Мы приветствуем:

  • Новые детекторы
  • Улучшения парсеров
  • Обновления документации
  • Синтетические враждебные образцы

См. CONTRIBUTING.md для руководств.


Безопасность

Если вы обнаружили проблему безопасности, не открывайте issue на GitHub. Следуйте инструкциям в SECURITY.md.


Лицензия

Лицензия MPL‑2.0 — см. LICENSE.

Категории