Часть 2: Обход обнаружения

circle-info

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


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


Запускаем программу и пошагово выполняем код с помощью клавиши F10 до тех пор, пока вредоносное ПО не завершит работу с ошибкой FailFast. Далее смотрим, где ещё в коде есть ссылки на метод, который привел нас к FailFast.


Тут я хочу подметить несколько интересных строк, которые привлекли моё внимание, они выполняются непосредственно перед самим завершением работы вредоноса.


Очищаем все предыдущие точки останова и ставим их только на выделенные места.


После долгих и кропотливых попыток я всё же смог определить имя WMI объекта, который использует вредоносное ПО для проверки моей системы на виртуальную машину.

Обнаружили, что проверяется объект Win32_PhysicalMemory

На первый взгляд объект Win32_PhysicalMemory присутствует, и что может пойти не так?


Всё гениальное просто, оказывается, вредоносному ПО не нравится пустое значение параметра Speed в объекте Win32_PhysicalMemory.


Что-ж, давайте тогда просто подменим этот объект :) Для подмены я создам файл memory_bypass.mof с содержанием, клонирующим настройки моей основной машины на Windows.


Затем я скомпилирую этот .mof файл командой mofcomp .\memory_bypass.mof. Теперь ничего не должно смущать вредоносное ПО.


Так и есть, проверка пройдена успешно, но меня смущает новый модуль "а", который я не могу словить. На этом этапе я установлю модульную точку останова для каждого нового загруженного модуля.


И... Можем заметить, что в память dnSpy загружается новый модуль исполняемого файла под именем "a". Интересно, что же это за модуль?


circle-check

Last updated