Эвристический анализ
Эвристический анализ — третий уровень конвейера обнаружения PRX-SD. В то время как сопоставление хешей и правила YARA полагаются на известные сигнатуры и паттерны, эвристика анализирует структурные и поведенческие свойства файла для обнаружения угроз, ранее не виденных — включая zero-day вредоносные программы, пользовательские импланты и сильно обфусцированные образцы.
Принцип работы
PRX-SD сначала определяет тип файла с помощью определения по сигнатуре, затем применяет набор целевых эвристических проверок, специфичных для этого формата файла. Каждая сработавшая проверка добавляет баллы к накопительной оценке. Итоговая оценка определяет вердикт.
Механизм оценки
| Диапазон оценок | Вердикт | Значение |
|---|---|---|
| 0 - 29 | Clean | Нет значимых подозрительных индикаторов |
| 30 - 59 | Suspicious | Обнаружены некоторые аномалии; рекомендуется ручная проверка |
| 60 - 100 | Malicious | Угроза с высокой достоверностью; несколько сильных индикаторов |
Оценки аддитивны. Файл с одной незначительной аномалией (например, немного высокой энтропией) может получить 15 баллов, тогда как файл, объединяющий высокую энтропию, подозрительные API-импорты и подписи упаковщиков, получит 75+ баллов.
Анализ PE (исполняемый файл Windows)
Эвристика PE направлена на исполняемые файлы Windows (.exe, .dll, .scr, .sys):
| Проверка | Баллы | Описание |
|---|---|---|
| Высокая энтропия секции | 10-25 | Секции с энтропией > 7,0 указывают на упаковку или шифрование |
| Подозрительные API-импорты | 5-20 | API как VirtualAllocEx, WriteProcessMemory, CreateRemoteThread |
| Известные сигнатуры упаковщиков | 15-25 | Обнаружены заголовки UPX, Themida, VMProtect, ASPack, PECompact |
| Аномалия временной метки | 5-10 | Временная метка компиляции в будущем или до 2000 года |
| Аномалия имени секции | 5-10 | Нестандартные имена секций (заменённые .rsrc, случайные строки) |
| Аномалия ресурсов | 5-15 | Встроенные PE-файлы в ресурсах, зашифрованные секции ресурсов |
| Аномалия таблицы импорта | 10-15 | Очень мало импортов (упакован) или подозрительные комбинации импортов |
| Цифровая подпись | -10 | Действительная подпись Authenticode снижает оценку |
| TLS-коллбэки | 10 | Записи TLS-коллбэков для защиты от отладки |
| Данные оверлея | 5-10 | Значительные данные, добавленные после PE-структуры |
Пример результатов PE
Heuristic Analysis: updater.exe
Score: 72/100 [MALICIOUS]
Findings:
[+25] Section '.text' entropy: 7.91 (likely packed or encrypted)
[+15] Packer detected: UPX 3.96
[+12] Suspicious API imports: VirtualAllocEx, WriteProcessMemory,
CreateRemoteThread, NtUnmapViewOfSection
[+10] Section name anomaly: '.UPX0', '.UPX1' (non-standard)
[+10] Compilation timestamp: 2089-01-01 (future date)Анализ ELF (исполняемый файл Linux)
Эвристика ELF направлена на бинарные файлы Linux и общие объекты:
| Проверка | Баллы | Описание |
|---|---|---|
| Высокая энтропия секции | 10-25 | Секции с энтропией > 7,0 |
| Ссылки на LD_PRELOAD | 15-20 | Строки, ссылающиеся на LD_PRELOAD или /etc/ld.so.preload |
| Persistence через cron | 10-15 | Ссылки на /etc/crontab, /var/spool/cron, каталоги cron |
| Persistence через systemd | 10-15 | Ссылки на пути юнитов systemd, systemctl enable |
| Индикаторы SSH-бэкдора | 15-20 | Изменённые пути authorized_keys, строки конфигурации sshd |
| Защита от отладки | 10-15 | ptrace(PTRACE_TRACEME), проверки /proc/self/status |
| Сетевые операции | 5-10 | Создание raw-сокетов, подозрительные привязки к портам |
| Самоудаление | 10 | unlink собственного пути бинарного файла после выполнения |
| Stripped + высокая энтропия | 10 | Stripped-бинарный файл с высокой энтропией указывает на упакованное вредоносное ПО |
Перенаправление в /dev/null | 5 | Перенаправление вывода в /dev/null (поведение демона) |
Пример результатов ELF
Heuristic Analysis: .cache/systemd-helper
Score: 65/100 [MALICIOUS]
Findings:
[+20] LD_PRELOAD reference: /etc/ld.so.preload manipulation
[+15] Cron persistence: writes to /var/spool/cron/root
[+15] SSH backdoor: modifies /root/.ssh/authorized_keys
[+10] Self-deletion: unlinks /tmp/.cache/systemd-helper
[+5] Network: creates raw socketАнализ Mach-O (исполняемый файл macOS)
Эвристика Mach-O направлена на бинарные файлы macOS, бандлы и универсальные бинарные файлы:
| Проверка | Баллы | Описание |
|---|---|---|
| Высокая энтропия секции | 10-25 | Секции с энтропией > 7,0 |
| Внедрение dylib | 15-20 | Ссылки на DYLD_INSERT_LIBRARIES, подозрительная загрузка dylib |
| Persistence через LaunchAgent/Daemon | 10-15 | Ссылки на ~/Library/LaunchAgents, /Library/LaunchDaemons |
| Доступ к Keychain | 10-15 | Вызовы API Keychain, использование команды security |
| Обход Gatekeeper | 10-15 | Строки xattr -d com.apple.quarantine |
| Обход Privacy TCC | 10-15 | Ссылки на базу данных TCC, злоупотребление API доступности |
| Защита от анализа | 10 | Проверки sysctl на наличие отладчиков, строки определения ВМ |
| Аномалия подписи кода | 5-10 | Ad-hoc подписанный или неподписанный бинарный файл |
Пример результатов Mach-O
Heuristic Analysis: com.apple.helper
Score: 55/100 [SUSPICIOUS]
Findings:
[+20] Dylib injection: DYLD_INSERT_LIBRARIES manipulation
[+15] LaunchAgent persistence: writes to ~/Library/LaunchAgents/
[+10] Keychain access: SecKeychainFindGenericPassword calls
[+10] Unsigned binary: no code signature presentАнализ документов Office
Эвристика Office направлена на форматы Microsoft Office (.doc, .docx, .xls, .xlsx, .ppt):
| Проверка | Баллы | Описание |
|---|---|---|
| Наличие макросов VBA | 10-15 | Макросы с автовыполнением (AutoOpen, Document_Open, Workbook_Open) |
| Макрос с выполнением шелла | 20-30 | Shell(), WScript.Shell, вызов PowerShell в макросах |
| Поля DDE | 15-20 | Поля Dynamic Data Exchange, выполняющие команды |
| Ссылка на внешний шаблон | 10-15 | Внедрение удалённого шаблона через attachedTemplate |
| Обфусцированный VBA | 10-20 | Сильно обфусцированный код макроса (злоупотребление Chr(), конкатенацией строк) |
| Встроенные OLE-объекты | 5-10 | Встроенные исполняемые файлы или скрипты как OLE-объекты |
| Подозрительные метаданные | 5 | Поля автора со строками base64 или необычными паттернами |
Пример результатов Office
Heuristic Analysis: Q3_Report.xlsm
Score: 60/100 [MALICIOUS]
Findings:
[+15] VBA macro with AutoOpen trigger
[+25] Macro executes: Shell("powershell -enc JABjAGwA...")
[+10] Obfuscated VBA: 47 Chr() calls, string concatenation abuse
[+10] External template: https://evil.example.com/template.dotmАнализ PDF
Эвристика PDF направлена на PDF-документы:
| Проверка | Баллы | Описание |
|---|---|---|
| Встроенный JavaScript | 15-25 | JavaScript в действиях /JS или /JavaScript |
| Действие Launch | 20-25 | Действие /Launch, выполняющее системные команды |
| Действие URI | 5-10 | Подозрительные действия URI, указывающие на известные вредоносные паттерны |
| Обфусцированные потоки | 10-15 | Несколько уровней кодирования (FlateDecode + ASCII85 + hex) |
| Встроенные файлы | 5-10 | Исполняемые файлы, встроенные как вложения |
| Отправка формы | 5-10 | Формы, отправляющие данные на внешние URL |
| AcroForm с JavaScript | 15 | Интерактивные формы со встроенным JavaScript |
Пример результатов PDF
Heuristic Analysis: shipping_label.pdf
Score: 45/100 [SUSPICIOUS]
Findings:
[+20] Embedded JavaScript: 3 /JS actions found
[+15] Obfuscated stream: triple-encoded FlateDecode chain
[+10] Embedded file: invoice.exe (PE executable)Справочник распространённых результатов
Следующая таблица перечисляет наиболее часто срабатывающие эвристические результаты по всем типам файлов:
| Результат | Серьёзность | Типы файлов | Частота ложных срабатываний |
|---|---|---|---|
| Секция с высокой энтропией | Средняя | PE, ELF, Mach-O | Низкая-средняя (игровые ресурсы, сжатые данные) |
| Обнаружение упаковщика | Высокая | PE | Очень низкая |
| Макрос с автовыполнением | Высокая | Office | Низкая (некоторые легитимные макросы) |
| Манипуляции с LD_PRELOAD | Высокая | ELF | Очень низкая |
| Встроенный JavaScript | Средняя-высокая | Низкая | |
| Подозрительные API-импорты | Средняя | PE | Средняя (инструменты безопасности это вызывают) |
| Самоудаление | Высокая | ELF | Очень низкая |
Уменьшение ложных срабатываний
Если легитимный файл вызывает эвристические оповещения, вы можете добавить его в список разрешённых по хешу SHA-256:
sd allowlist add /path/to/legitimate/fileФайлы из списка разрешённых пропускают эвристический анализ, но по-прежнему проверяются по базам данных хешей и YARA.
Следующие шаги
- Поддерживаемые типы файлов — полная матрица типов файлов и детали определения по сигнатуре
- Правила YARA — обнаружение на основе паттернов, дополняющее эвристику
- Сопоставление хешей — самый быстрый уровень обнаружения
- Обзор движка обнаружения — как все уровни работают вместе