
DrSemu - Инструмент для обнаружения и классификации вредоносного ПО в изолированной среде на основе динамического поведения
Dr.Semu запускает исполняемые файлы в изолированной среде, отслеживает поведение процесса и на основе правил Dr.Semu, созданных вами или сообществом, определяет, является ли процесс вредоносным.

[Инструмент находится на ранней стадии разработки]
С помощью Dr.Semu вы можете создавать правила для обнаружения вредоносного ПО на основе динамического поведения процесса.
Всё происходит в пользовательском режиме. Windows Projected File System (ProjFS) используется для предоставления виртуальной файловой системы. Для перенаправления реестра он клонирует все кусты реестра в новое расположение и перенаправляет все обращения к реестру.
Подробнее о других перенаправлениях (изоляция процессов/объектов и т.д.) смотрите в исходном коде.
Dr.Semu использует DynamoRIO (платформу динамической инструментации) для перехвата потока, когда он собирается пересечь границу пользовательского и ядерного режимов. Это дает тот же эффект, что и перехват SSDT, но в пользовательском режиме и без внедрения хуков.
На этом этапе Dr.Semu создает JSON-файл, содержащий информацию о перехвате.
После завершения процесса на основе правил Dr.Semu мы получаем результат: обнаружен ли исполняемый файл как вредоносный или нет.
Они написаны на Python или LUA (находятся в папке dr_rules) и используют динамическую информацию из перехвата и статическую информацию о сэмпле. Добавление поддержки других языков тривиально.

Пример (Python): https://gist.github.com/secrary/ac89321b8a7bde998a6e3139be49eb72
PowerShell для включения ProjFS в окне PowerShell с повышенными привилегиями:Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart
Загрузите и распакуйте zip-файл со страницы релизов
Загрузите DynamoRIO и распакуйте в папку DrSemu, переименовав в dynamorio
Установите Python 3 x64
DrSemu.exe --target file_path
DrSemu.exe --target files_directory
PowerShell для включения ProjFS в окне PowerShell с повышенными привилегиями:Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart

Установите Python 3 x64
Загрузите DynamoRIO и распакуйте в папку bin, переименовав в dynamorio
Соберите библиотеку pe-parser-library.lib:
DrSemu\shared_libs\pe_parse с помощью cmake-guibuild (\shared_libs\pe_parse\build\pe-parser-library\Release\) и 64-разрядную в build64Multi-threaded (/MT)Установите LauncherCLI в качестве запускаемого проекта
Windows 10, версия 1809 (из-за Windows Projected File System)Windows 10, версия 1809 (DynamoRIO поддерживает версии Windows 10 до 1809)