Вы нашли файл с расширением .sys, и что-то подсказывает, что доверять ему нельзя. Может, это файл из непонятного архива, может, антивирус на него ругается, а может — вы просто хотите понять, что он делает, прежде чем запускать на рабочей машине. В любом случае, загружать такой драйвер на хост-систему — плохая идея. Драйверы работают на уровне ядра, и один плохой .sys-файл может убить систему, слить данные или открыть бэкдор.
Ниже — рабочий подход к безопасному анализу подозрительных драйверов в виртуальной машине. Без теории про архитектуру ядра, только практика.
- Почему именно виртуальная машина, а не просто песочница
- Что понадобится
- Шаг 1: Подготовьте виртуальную машину правильно
- Шаг 2: Перенесите файл .sys в ВМ
- Шаг 3: Загрузите драйвер и наблюдайте
- Регистрация и загрузка
- Что смотреть во время загрузки
- Шаг 4: Анализ без загрузки — статический разбор
- Сравнение подходов к анализу
- Что делать в зависимости от вашей ситуации
- Частые ошибки при тестировании
- Рекомендации по безопасной работе
- Итог
Почему именно виртуальная машина, а не просто песочница
Обычные песочницы вроде Sandboxie или встроенные Windows Sandbox работают на уровне пользовательского режима (user mode). А драйверы .sys загружаются в режиме ядра (kernel mode) — это привилегированный уровень, где код имеет прямой доступ к памяти, оборудованию и структурам ОС. Песочница его не изолирует.
Виртуальная машина — другое дело. Гипервизор изолирует даже kernel-mode код. Если драйвер натворит дел внутри ВМ, хост-система не пострадает (при условии корректной настройки, о чём ниже).
Что понадобится
- Гипервизор: VirtualBox (бесплатно), VMware Workstation Player (бесплатно для личного использования) или Hyper-V (встроен в Windows Pro/Enterprise).
- Образ ОС: та же версия Windows, под которую написан драйвер. Если драйвер для Windows 10 x64 — ставьте Windows 10 x64.
- Инструменты внутри ВМ: WinDbg (отладчик ядра), Process Monitor, API Monitor, и желательно — снятая ранее контрольная точка (snapshot).
- Отключённый сетевой адаптер в ВМ или изолированная сеть.
Шаг 1: Подготовьте виртуальную машину правильно
Это критический момент, который часто пропускают. Если настроить ВМ небрежно, драйвер может выбраться на хост или повредить ему данные.
- Создайте снимок чистой ВМ сразу после установки ОС и настроек. Это ваша кнопка «отменить». Каждый раз после теста откатывайтесь к этому снимку.
- Отключите общие папки между хостом и ВМ. VirtualBox и VMware умеют пробрасывать папки хоста внутрь гостевой ОС — это потенциальный путь побега.
- Уберите сетевой адаптер или переведите его в режим «Internal Network» / «Host-only» без маршрутизации наружу. Драйвер может пытаться отправлять данные на сервер злоумышленника.
- Отключите USB-контроллер, если не нужен. Через USB тоже возможна утечка или атака на хост.
- Отключите Drag-and-Drop и буфер обмена между хостом и гостевой системой.
Шаг 2: Перенесите файл .sys в ВМ
Не используйте для этого общие папки. Лучшие варианты:
- ISO-образ, подключённый как виртуальный CD/DVD. Создайте ISO с файлом на хосте, подключите образ в ВМ, скопируйте оттуда.
- Флешка, проброшенная исключительно в ВМ (USB passthrough).
- Скачать файл внутри ВМ через изолированную сеть, если сеть всё-таки нужна для анализа.
Шаг 3: Загрузите драйвер и наблюдайте
Драйвер .sys — это не обычная программа, его нельзя просто запустить двойным кликом. Его нужно зарегистрировать как службу и загрузить.
Регистрация и загрузка
Откройте командную строку от администратора внутри ВМ:
sc create TestDriver type= kernel binPath= C:\path\to\suspicious.sys
sc start TestDriver
Если драйвер загрузится — увидим статус SERVICE_RUNNING. Если нет — система вернёт ошибку, и это тоже информация. Некоторые вредоносные драйверы проверяют, запущены ли они в виртуальной среде, и отказываются работать.
После завершения теста — остановите и удалите службу:
sc stop TestDriver
sc delete TestDriver
Что смотреть во время загрузки
- Синий экран (BSOD) — если драйвер кривой или конфликтует с системой. Это нормально для тестовой среды. Дамп краша можно потом проанализировать в WinDbg.
- События в журнале Windows — откройте Event Viewer, раздел System. Ищите записи от источника «Service Control Manager» и «BugCheck».
- Process Monitor — запустите до загрузки драйвера с фильтром на имя файла .sys. Покажет, какие процессы и ключи реестра трогает драйвер.
- API Monitor — фиксирует вызовы системных API. Поможет понять, какие функции ядра использует драйвер.
Шаг 4: Анализ без загрузки — статический разбор
Не всегда нужно загружать драйвер, чтобы понять, что он делает. Иногда достаточно посмотреть его структуру.
- Заголовок PE-файла — откройте в CFF Explorer или PE-bear. Посмотрите секции, импортируемые библиотеки. Если драйвер импортирует
ZwLoadDriver,IoCreateDevice,IoCreateSymbolicLink— это штатные вещи. Если видите подозрительные строки в секциях данных — это тревожный знак. - Строки — запустите
stringsиз Sysinternals или аналог. Посмотрите, какие URL, имена устройств, пути к файлам зашиты в драйвере. - Цифровая подпись — проверьте через
sigcheck(Sysinternals). Отсутствие подписи у драйвера — красный флаг. Подпись от неизвестного издателя — тоже подозрительно. - IDA Pro или Ghidra — если нужно глубоко разобрать логику. Декомпилируйте функцию
DriverEntry— это точка входа драйвера, именно она вызывается при загрузке.
Сравнение подходов к анализу
| Подход | Что даёт | Сложность | Когда использовать |
|---|---|---|---|
| Статический анализ (PE-заголовки, строки, декомпиляция) | Понимание структуры, импортов, заданных строк без запуска | Средняя | Первичная оценка, когда загружать страшно |
| Загрузка в ВМ + мониторинг | Реальное поведение: какие файлы, реестр, процессы трогает | Низкая | Основной рабочий сценарий |
| Отладка ядра через WinDbg | Пошаговое выполнение, точки останова, дампы памяти | Высокая | Когда нужно точно понять логику вредоносного кода |
| Загрузка в ВМ + дамп памяти | Последствия работы драйвера: изменения в памяти, загруженные модули | Средняя | Когда драйвер что-то оставляет после себя |
Что делать в зависимости от вашей ситуации
Вы просто хотите проверить, безопасный ли драйвер.
Сделайте статический анализ (PE-заголовки, строки, подпись), загрузите в ВМ с отключённой сетью, поработайте пару часов, откатите снимок. Если ничего подозрительного — можно решать, доверять или нет.
Вы исследуете вредоносный драйвер (например, из инцидента).
Не подключайте сеть вообще. Используйте WinDbg для пошаговой отладки. Сделайте дамп памяти до и после загрузки, сравните. Документируйте все находки — они могут понадобиться для отчёта об инциденте.
Драйвер отказывается загружаться в ВМ.
Некоторые драйверы проверяют наличие виртуального окружения (по реестру, MAC-адресу, специфическим ключам). Попробуйте ВМ с другим гипервизором, или используйте физическую машину для тестов (если есть такая возможность). Либо идите путём статического анализа — разберите в IDA/Ghidra, как именно происходит проверка.
Частые ошибки при тестировании
- Тестирование на хост-машине «на всякий случай». Это не «на всякий случай», это русская рулетка. Драйвер уровня ядра может сделать что угодно, включая шифрование всех файлов или модификацию загрузочного сектора.
- Забывают отключить общие папки. Драйвер может получить доступ к файлам хоста через VirtualBox Shared Folders или VMware Shared Folders.
- Оставляют сеть включённой. Даже если вы думаете, что драйвер «просто что-то проверяет», он может отправлять данные наружу. Отключайте сеть.
- Не делают снимок ВМ. После загрузки сомнительного драйвера система может быть нестабильна. Без снимка вы будете переустанавливать ОС вместо отката за 30 секунд.
- Используют другую версию ОС для теста. Драйвер, написанный для Windows 10 22H2, может вести себя иначе на Windows 11 или Windows 7. Версии должны совпадать.
- Не проверяют цифровую подпись. Подписанный драйвер от известного вендора — это не гарантия безопасности, но несовершенный драйвер без подписи — почти наверняка проблема.
Рекомендации по безопасной работе
- Всегда работайте с копией файла, никогда с оригиналом. Переименуйте, перемещайте, но не запускайте исходник на хосте.
- Ведите журнал: что загружали, какая версия ОС, какие инструменты использовали, что наблюдали. Это дисциплина, которая спасает от ошибок.
- Если после загрузки драйвера ВМ ведёт себя странно (тормоза, непонятные процессы, изменения в реестре) — немедленно отключайте ВМ и откатывайтесь к снимку. Не пытайтесь «доработать» в заражённой среде.
- Храните образы чистых ВМ на защищённом носителе. Если образ будет скомпрометирован, все ваши откаты бесполезны.
- Используйте отдельный гипервизор для анализа, не тот, на котором у вас рабочие ВМ. Или как минимум — отдельную учётную запись.
Итог
Тестирование подозрительного .sys-драйвера — это не чёрная магия, а рутинная процедура. Подготовьте изолированную ВМ с отключённой сетью и общими ресурсами, сделайте снимок, загрузите драйвер через sc, понаблюдайте за поведением, откатитесь. Если нужна глубина — подключайте WinDbg и декомпилятор. Главное правило: никогда не загружайте непроверенный драйвер на хост-систему, даже «просто посмотреть». Уровень привилегий у драйвера максимальный, и последствия могут быть необратимыми.
Если после анализа остаются сомнения — драйвер лучше не использовать. Один пропущенный вредоносный драйвер уровня ядра может перечеркнуть всю безопасность системы.
