В современном мире информационной безопасности и программного анализа виртуальные машины играют важную роль. Аналитики часто используют виртуализированные окружения для тестирования и изучения вредоносных программ (вредоносного ПО). Однако злоумышленники тоже совершенствуют свои технологии, и многие из них делают все возможное, чтобы обнаружить запуск в виртуальной машине и изменить свое поведение. Очень часто вредоносные программы проверяют наличие определенного оборудования, которого обычно в виртуальных машинах нет, и в случае отсутствия данное ПО либо прекращает работу, либо ведет себя по-другому, усложняя анализ. Одним из таких аппаратных элементов является кулер процессора (CPU fan).
Именно его отсутствие может выдать, что программа запущена в виртуальной среде. Осознание причин Почему вредоносное ПО проверяет наличие кулера? Все просто – для усложнения анализа программ. Вредоносные программы хотят отказаться от выполнения своих вредоносных функций, чтобы затруднить исследователям их изучение. Наличие виртуальной машины часто ассоциируется с детектированием и анализом, соответственно вредоносное ПО стремится избегать исполнения в таких условиях. Метод определения наличия кулера процессора в системе часто делается через Windows Management Instrumentation (WMI).
Класс Win32_Fan предоставляет информацию об устройствах охлаждения, подключенных к системе. Если данного класса нет или он пуст, вредоносное ПО с большой вероятностью предположит, что это виртуальная машина, и изменит свое поведение. Как система узнает о наличии кулера Вся аппаратная информация о системе хранится в SMBIOS (System Management BIOS). Особенно важен здесь тип 27, который описывает устройства охлаждения, включая кулеры. По сути, система считывает эту таблицу, чтобы понять, какое оборудование присутствует — наличие кулера, температуру или другие параметры.
Для извлечения данных из SMBIOS можно использовать утилиту dmidecode, доступную в Linux и Windows (через порты). Она позволяет получить подробную информацию по различным типам, включая охлаждающие устройства и температурные датчики (тип 27 и тип 28 соответственно). Как обмануть виртуальную машину и добавить кулер Настройка виртуальной машины с добавлением эмулируемого кулера процессора — задача, которая может существенно помочь в обходе проверок антивирусного и вредоносного ПО. Однако процесс не так прост, особенно если вы используете Xen, а не QEMU/KVM. В случае Xen существует специальная опция smbios_firmware, которая позволяет задать собственные данные SMBIOS для виртуальной машины.
Она указывает виртуальной машине, какие аппаратные устройства и параметры у нее «есть». Ключевая сложность в Xen в том, что по умолчанию можно переопределять только некоторые типы SMBIOS. К сожалению, типы, отвечающие за кулер (27) и температурный датчик (28), изначально не поддерживаются для переопределения, и для этого придется модифицировать исходный код Xen и применить патчи, отвечающие за добавление поддержки этих таблиц. Формирование корректных SMBIOS структур для кулера Очень важно правильно сформировать двоичные данные, которые потом добавляются в smbios.bin.
Для охлаждающих устройств и температурных датчиков существует специальный шаблон с соответствующими заголовками и данными. При создании такого файла нужно учитывать спецификацию SMBIOS, например, дополнять строки завершающими нулями и правильно указывать размер структуры (он предваряется 32-битным числом в формате little-endian). Эти SMBIOS записи имитируют наличие реального кулера и датчика температуры, предоставляя нужные сведения операционной системе. После успешного запуска виртуальной машины с этими настроенными данными WMI-запрос wmic path Win32_Fan get Description,Status начнет возвращать реальные данные, которые ранее отсутствовали. Альтернатива для QEMU/KVM Система на основе QEMU или KVM значительно упрощает данную задачу.
Для эмуляции SMBIOS фабричных данных в QEMU служит флаг -smbios, в который можно передать просто файл с «сырыми» SMBIOS данными, без необходимости предварять структуру размером. Это значительно ускоряет время настройки и не требует модификаций исходников гипервизора. Опыт показывает, что при использовании QEMU/KVM можно гораздо проще и быстрее добавить эмуляцию необходимых аппаратных компонентов. При этом операционная система гостя получает полноценную информацию о кулере и датчике, что успешно обманывает большинство вредоносных программ. Что делать после настройки После того, как в вашей виртуальной машине появится корректно эмулированный кулер, можно проверить это с помощью встроенных средств Windows – выполнить команду wmic path Win32_Fan get Description,Status, которая должна показать описания кулера и его состояние.
Если информация отображается, значит настройка прошла успешно, и большая часть вредоносных программ больше не будет подозревать наличие виртуальной машины по причине отсутствия кулера. Такой трюк открывает новые возможности для системных администраторов и специалистов по безопасности, давая более надежный и точный анализ вредоносных программ. Эмуляция оборудования не исчерпывается только кулером – подобным образом можно подделывать данные и по другим классам, например, по памяти, датчикам напряжения и так далее. Мотивы и польза Помимо обхода антивирусных и защитных механизмов самого вредоносного ПО, настройка виртуального окружения с аппаратными эмулированными устройствами помогает получать более реалистичные результаты тестирования и анализа. В результате исследователи могут добиться высокого качества изучения образцов, а системные администраторы сильнее обезопасить свои сети и инфраструктуру.
Также в долгосрочной перспективе развитие подобных методик повышает устойчивость систем к современным сложным угрозам, позволяя создавать более эффективные механизмы обнаружения и анализа зловредного ПО. Практический опыт показывает, что уже сегодня «обман» виртуальной машины – это важный инструмент в арсенале специалистов по информационной безопасности. В заключение Задание возможности виртуальной машине «видеть» кулер процессора требует продуманного подхода к модификации SMBIOS данных, особого внимания к техническим деталям и возможной адаптации гипервизора. Xen требует более глубокой кастомизации с применением патчей, а QEMU/KVM предлагает более удобные, готовые к использованию решения с поддержкой кастомных SMBIOS структур. Эта методика помогает эффективно обходить проверки вредоносных программ на наличие виртуальных окружений, что значительно облегчает анализ и расширяет возможности для исследователей.
Современные технологии виртуализации движутся в сторону все более качественной аппаратной эмуляции, что открывает широкие перспективы для развития IT-безопасности и обеспечения защиты от киберугроз.