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

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

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

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

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

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

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

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

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

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

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

Сохраняем его и открываем для дальнейшего анализа. Именно для этого я и снимал анти-тампер защиту — с ней я бы не смог сохранить и исследовать этот модуль.
Last updated