
Kratos — это высокопроизводительный драйвер минифильтра файловой системы Windows, предназначенный для обнаружения, блокировки и постоянной иммунизации.
Проект исследовательской работы в области защитной безопасности — драйвер-минифильтр Windows, разработанный на C++ для обнаружения и нейтрализации программ-вымогателей в реальном времени на уровне ядра (Ring 0).
Kratos (Kratos.sys) — драйвер-минифильтр Windows, работающий на высоте 425342 (уровень Anti-Virus) через Filter Manager (fltmgr.sys). В отличие от статических сигнатурных антивирусных решений, Kratos использует чисто поведенческий подход:
| Цель | Результат |
|----------|---------|
| Затронутые файлы (первый запуск) | < 5 |
| Затронутые файлы (повторные запуски) | 0 |
| Уровень ложных срабатываний | 0% (После настройки) |
| Совместимость | NTFS / ReFS |
User-Mode
│
▼
Filter Manager (fltmgr.sys) ← Altitude 425342
│
▼
┌─────────────────────────────────────────────────────┐
│ KRATOS.SYS │
│ │
│ IRP_MJ_CREATE → Инициализация контекстов │
│ IRP_MJ_WRITE → Энтропийный анализ │
│ IRP_MJ_READ → Подсчет соотношения R/W │
│ IRP_MJ_SET_INFORMATION → Обнаружение удаления/переименования │
│ │
│ RTL_AVL_TABLE → KS_PROCESS_CONTEXT на PID │
│ FLT_FILE_CONTEXT → Энтропия + состояние на файл │
└─────────────────────────────────────────────────────┘
│
▼
NTFS / ReFS
Kratos различает удаление ценных файлов (.docx, .pdf, .jpg...) и удаление системных/кэш-файлов с помощью KS_IsValuableFile():
Вычисление через предварительно рассчитанную LUT (KratosEntropyLUT512) — избегает использования log2(), недоступного в режиме ядра. Выборка 512 байт на каждую операцию записи.
.tmp файл с энтропией ≥ 7,5/8 битОсновное новшество: вместо черного списка вредоносных расширений Kratos использует белый список легитимных расширений.
Исходное расширение ценно? ДА
Новое расширение распознано? НЕТ
→ ПОДОЗРИТЕЛЬНО — независимо от выбранного расширения
Этот подход может обнаружить LockBit 3.0 (.xmjzh8q), BlackCat/ALPHV (случайные) и любые будущие программы-вымогатели с неизвестным расширением.
ValuableDeleteCount > 10 → +10 баллов
RenameToSuspicious > 2 → +40 баллов
HighEntropyWrites > 3 → +40 баллов
RansomNoteCreated → +60 баллов
ShadowCopyDeleted → +75 баллов
Оценка ≥ 60 → ПРЕДУПРЕЖДЕНИЕ
Оценка ≥ 80 → КРИТИЧЕСКИЙ + Завершение + Черный список
После обнаружения программы-вымогателя Kratos вычисляет ее 64-битный хеш FNV-1a по первым 4096 байтам исполняемого файла (заголовок PE + начало кода) и сохраняет его в реестре:
\Registry\Machine\SOFTWARE\Kratos\Blacklist
└── 1F81F13004B5B920 = "C:\Users\...\Hercule.exe"
При каждом создании процесса ProcessNotifyCallback проверяет черный список до любого выполнения. Процесс блокируется через CreationStatus = STATUS_ACCESS_DENIED.
Устойчивость к переименованию: хеш FNV-1a идентичен независимо от имени файла (Hercule-AES.exe, HERCUL~1.EXE, chrome.exe...).
Защита от подмены: процессы из белого списка проверяются по Ожидаемому имени + пути:
chrome.exe + \Program Files\Google\Chrome\Application\ → Легитимный
chrome.exe + C:\Users\...\Desktop\ → ПОДДЕЛЬНЫЙ
# Откройте KratosMinifilter.sln в Visual Studio
# Конфигурация: Debug или Release / x64
# Build → Build Solution
# На целевой ВМ — включите тестовый режим
bcdedit /set testsigning on
# Скопируйте Kratos.sys и Kratos.inf
# Установите через Device Manager или sc.exe
sc create Kratos type= kernel start= boot binPath= "C:\Kratos\Kratos.sys"
sc start Kratos
Измените g_LegitExtensions[] в KratosDetection.cpp, чтобы настроить расширения, считающиеся легитимными после переименования.
Измените g_TrustedProcesses[], чтобы добавить легитимные процессы с ожидаемым путем:
{ "myapp.exe", L"\\Program Files\\MyApp\\" },
Измените KS_EvaluateThreatScore() в KratosDetection.cpp, чтобы настроить пороги ПРЕДУПРЕЖДЕНИЕ/КРИТИЧЕСКИЙ в соответствии с вашей средой.
⚠️ Этот драйвер разработан в рамках исследовательской работы в области защитной безопасности.
- Использование строго ограничено изолированными тестовыми средами (ВМ без доступа к сети)
- Любое развертывание на рабочей системе осуществляется под исключительную ответственность пользователя
- Автор снимает с себя всякую ответственность за любой ущерб, возникший в результате неправильного использования
- Изменение этого драйвера для обхода систем безопасности без разрешения является незаконным