Как тестировать подозрительные драйверы .sys в виртуальной машине

Вы нашли файл с расширением .sys, и что-то подсказывает, что доверять ему нельзя. Может, это файл из непонятного архива, может, антивирус на него ругается, а может — вы просто хотите понять, что он делает, прежде чем запускать на рабочей машине. В любом случае, загружать такой драйвер на хост-систему — плохая идея. Драйверы работают на уровне ядра, и один плохой .sys-файл может убить систему, слить данные или открыть бэкдор.

Ниже — рабочий подход к безопасному анализу подозрительных драйверов в виртуальной машине. Без теории про архитектуру ядра, только практика.

Почему именно виртуальная машина, а не просто песочница

Обычные песочницы вроде 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: Подготовьте виртуальную машину правильно

Это критический момент, который часто пропускают. Если настроить ВМ небрежно, драйвер может выбраться на хост или повредить ему данные.

  1. Создайте снимок чистой ВМ сразу после установки ОС и настроек. Это ваша кнопка «отменить». Каждый раз после теста откатывайтесь к этому снимку.
  2. Отключите общие папки между хостом и ВМ. VirtualBox и VMware умеют пробрасывать папки хоста внутрь гостевой ОС — это потенциальный путь побега.
  3. Уберите сетевой адаптер или переведите его в режим «Internal Network» / «Host-only» без маршрутизации наружу. Драйвер может пытаться отправлять данные на сервер злоумышленника.
  4. Отключите USB-контроллер, если не нужен. Через USB тоже возможна утечка или атака на хост.
  5. Отключите 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. Версии должны совпадать.
  • Не проверяют цифровую подпись. Подписанный драйвер от известного вендора — это не гарантия безопасности, но несовершенный драйвер без подписи — почти наверняка проблема.

Рекомендации по безопасной работе

  1. Всегда работайте с копией файла, никогда с оригиналом. Переименуйте, перемещайте, но не запускайте исходник на хосте.
  2. Ведите журнал: что загружали, какая версия ОС, какие инструменты использовали, что наблюдали. Это дисциплина, которая спасает от ошибок.
  3. Если после загрузки драйвера ВМ ведёт себя странно (тормоза, непонятные процессы, изменения в реестре) — немедленно отключайте ВМ и откатывайтесь к снимку. Не пытайтесь «доработать» в заражённой среде.
  4. Храните образы чистых ВМ на защищённом носителе. Если образ будет скомпрометирован, все ваши откаты бесполезны.
  5. Используйте отдельный гипервизор для анализа, не тот, на котором у вас рабочие ВМ. Или как минимум — отдельную учётную запись.

Итог

Тестирование подозрительного .sys-драйвера — это не чёрная магия, а рутинная процедура. Подготовьте изолированную ВМ с отключённой сетью и общими ресурсами, сделайте снимок, загрузите драйвер через sc, понаблюдайте за поведением, откатитесь. Если нужна глубина — подключайте WinDbg и декомпилятор. Главное правило: никогда не загружайте непроверенный драйвер на хост-систему, даже «просто посмотреть». Уровень привилегий у драйвера максимальный, и последствия могут быть необратимыми.

Если после анализа остаются сомнения — драйвер лучше не использовать. Один пропущенный вредоносный драйвер уровня ядра может перечеркнуть всю безопасность системы.

Оцените статью
PEFile — Безопасность и технологии простым языком