Сопоставление хешей
Сопоставление хешей — первый и самый быстрый уровень в конвейере обнаружения PRX-SD. Для каждого сканируемого файла PRX-SD вычисляет криптографический хеш и ищет его в локальной базе данных известных вредоносных хешей. Совпадение означает, что файл является точной, побайтной копией известного образца вредоносной программы.
Принцип работы
- Вычисление хеша — PRX-SD вычисляет хеш SHA-256 файла. Для поиска по VirusShare также вычисляется хеш MD5.
- Поиск в LMDB — Хеш проверяется в базе данных LMDB с использованием B+-дерева с отображением в память. Это обеспечивает O(1) среднее время поиска.
- Получение метаданных — При нахождении совпадения возвращаются связанные метаданные (источник, семейство вредоносных программ, дата первого обнаружения).
- Вердикт — Совпадение хеша немедленно даёт вердикт
MALICIOUS, и оставшиеся уровни обнаружения пропускаются.
Производительность
| Операция | Время |
|---|---|
| Вычисление SHA-256 (файл 1 КБ) | ~2 микросекунды |
| Вычисление SHA-256 (файл 10 МБ) | ~15 миллисекунд |
| Поиск в LMDB | ~0,5 микросекунды |
| Итого на файл (малый файл, попадание по хешу) | ~3 микросекунды |
LMDB использует файлы, отображённые в память, поэтому кэш страниц ОС сохраняет часто используемые части базы данных в ОЗУ. На системе с достаточным объёмом памяти поиск практически бесплатен.
Поддерживаемые типы хешей
| Тип хеша | Размер | Использование |
|---|---|---|
| SHA-256 | 256 бит (64 hex-символа) | Основной хеш для всех поисков. Используется источниками abuse.ch и встроенным списком блокировок. |
| MD5 | 128 бит (32 hex-символа) | Используется для совместимости с базой данных VirusShare. Вычисляется только при наличии данных VirusShare. |
Ограничения MD5
MD5 криптографически взломан и уязвим для атак коллизий. PRX-SD использует MD5 только для обратной совместимости с базой данных VirusShare. SHA-256 является основным хешем для всех других источников.
Источники данных
PRX-SD агрегирует хеш-сигнатуры из нескольких источников разведки угроз:
| Источник | Тип хеша | Бесплатно | Содержимое | Частота обновления |
|---|---|---|---|---|
| abuse.ch MalwareBazaar | SHA-256 | Да | Последние 48 часов образцов вредоносных программ | Каждые 5 минут |
| abuse.ch URLhaus | SHA-256 | Да | Файлы вредоносных программ с вредоносных URL | Ежечасно |
| abuse.ch Feodo Tracker | SHA-256 | Да | Банковские трояны (Emotet, Dridex, TrickBot) | Каждые 5 минут |
| abuse.ch ThreatFox | SHA-256 | Да | Платформа обмена IOC сообщества | Ежечасно |
| VirusShare | MD5 | Да | 20 млн+ хешей вредоносных программ (исторические) | Периодически |
| Встроенный список блокировок | SHA-256 | В комплекте | EICAR, WannaCry, NotPetya, Emotet и т.д. | С выпусками |
Общее покрытие хешами
| Режим обновления | Хешей | Размер базы данных |
|---|---|---|
Стандартный (sd update) | ~28 000 SHA-256 | ~5 МБ |
Полный (sd update --full) | ~28 000 SHA-256 + 20 млн+ MD5 | ~800 МБ |
Обновление базы данных хешей
Стандартное обновление
Получает последние хеши SHA-256 из всех источников abuse.ch:
sd updateЭто выполняется автоматически при первой установке PRX-SD и может быть запланировано с помощью cron или sd service для непрерывных обновлений.
Полное обновление
Включает полную базу данных MD5 VirusShare:
sd update --fullКогда использовать полный режим
База данных VirusShare содержит 20 млн+ исторических хешей MD5 за несколько лет. Она полезна для криминалистических расследований и комплексного сканирования, но добавляет ~800 МБ к базе данных. Для повседневной защиты достаточно стандартного обновления.
Ручной импорт хешей
Импортируйте пользовательские списки хешей из текстовых файлов (один хеш на строку):
sd import my_hashes.txtКоманда импорта автоматически определяет тип хеша (SHA-256 или MD5) по длине строки. Вы также можете указать метаданные:
sd import my_hashes.txt --source "internal-ir" --family "custom-trojan"База данных LMDB
PRX-SD хранит хеши в LMDB (Lightning Memory-Mapped Database), выбранной за следующие свойства:
| Свойство | Преимущество |
|---|---|
| I/O с отображением в память | Zero-copy чтение, без накладных расходов на сериализацию |
| Структура B+-дерева | O(1) амортизированный поиск |
| ACID-транзакции | Безопасное параллельное чтение во время обновлений |
| Устойчивость к сбоям | Copy-on-write предотвращает повреждение |
| Компактный размер | Эффективное хранение ключей хешей |
База данных хранится по адресу ~/.local/share/prx-sd/signatures.lmdb по умолчанию. Путь можно изменить:
# ~/.config/prx-sd/config.toml
[database]
path = "/opt/prx-sd/signatures.lmdb"Проверка статуса базы данных
Просмотр текущей статистики базы данных хешей:
sd infoPRX-SD Signature Database
=========================
SHA-256 hashes: 28,428
MD5 hashes: 0 (run 'sd update --full' for VirusShare)
YARA rules: 38,800
Database path: /home/user/.local/share/prx-sd/signatures.lmdb
Database size: 4.8 MB
Last updated: 2026-03-21 10:00:00 UTCМесто сопоставления хешей в конвейере
Сопоставление хешей разработано как первая линия защиты, потому что:
- Скорость — При ~3 микросекундах на файл добавляется незначительная нагрузка. Миллион чистых файлов можно проверить менее чем за 3 секунды.
- Ноль ложных срабатываний — Совпадение SHA-256 является криптографической гарантией того, что файл идентичен известному образцу вредоносной программы.
- Короткое замыкание — При нахождении совпадения хеша анализ YARA и эвристика полностью пропускаются, экономя значительное время обработки.
Ограничение сопоставления хешей в том, что оно обнаруживает только точные копии известных образцов. Изменение одного байта даёт другой хеш и позволяет уклониться от этого уровня. Именно поэтому уровни YARA и эвристики существуют как последующие рубежи обороны.
Следующие шаги
- Правила YARA — обнаружение на основе паттернов для вариантов и семейств
- Эвристический анализ — поведенческое обнаружение для неизвестных угроз
- Обзор движка обнаружения — как все уровни работают вместе
- Сканирование файлов и каталогов — использование сопоставления хешей на практике