Обходим детектирование виртуальной машины программами в VMWare

  • Tutorial
Разработчики вирусного ПО и просто разработчики, не желающие, чтобы их программу пытались реверсить, на этапе запуска или установки проводят проверки на виртуальную машину, и в случае её обнаружения отказываются работать, а то и вовсе самоликвидируются. Под катом описан способ, как можно попробовать решить эту проблему.

Я использовал VMWare Fusion для Mac, однако с тем же успехом способ работает и в Workstation для Win.

1) Для работы необходима заново установленная система, как внести изменения в уже существующую — не нашёл.

Готовите виртуальный диск, указываете систему, как это обычно делаете, и в настройках к устанавливаемой машине, у меня этот пункт назван Isolation, выключаете любой обмен данными с хостовой ОС.

2) Далее надо найти конфигурационный VMX файл, создаваемый на этапе создания машины в VMWare, и в конец добавить строки:

isolation.tools.getPtrLocation.disable = «TRUE»
isolation.tools.setPtrLocation.disable = «TRUE»
isolation.tools.setVersion.disable = «TRUE»
isolation.tools.getVersion.disable = «TRUE»
monitor_control.disable_directexec = «TRUE»
monitor_control.disable_chksimd = «TRUE»
monitor_control.disable_ntreloc = «TRUE»
monitor_control.disable_selfmod = «TRUE»
monitor_control.disable_reloc = «TRUE»
monitor_control.disable_btinout = «TRUE»
monitor_control.disable_btmemspace = «TRUE»
monitor_control.disable_btpriv = «TRUE»
monitor_control.disable_btseg = «TRUE»

Эти опции предотвращают детектирование программами виртуального окружения через такие сложные проверки, как отслеживание адресного пространства памяти, счётчиков.

Важно! Если на этапе настройки установки будет опция вроде «Express install», «Быстрая установка» — выключайте их. Также не стоит устанавливать VMWare Tools в установленную систему, т.к. некоторое ПО в проверку включает и наличие этого пакета.

3) Сохраняем файл, указываем для загрузки ISO с установщиком системы, устанавливаем ОС как обычно.

4) Несмотря на то, что подавляющее большинство программ, не любящих виртуальной среды, не заходят дальше проверок, которые мы отсекли на 2 шаге, некоторые особо упорные всё же идут дальше и пытаются искать, к примеру, всё, что похоже на название контроллеров виртуальных дисков.

Чтобы победить и их в Windows, идём в редактор реестра в ветку HKLM\SYSTEM\CurrentControlSet\Services\Disk\Enum. Как видите, там есть вполне явная отсылка к тому, что диск — виртуальный.


Нам нужно изменить его, убрав из параметра VMware, Virtual, Ven, итп, и сохранить её так.

Также имеет смысл заменить в реестре поиском по VMware/Virtual на какой-нибудь Intel или IBM всё, что меняется, а не только дисковые переменные.

После пробуйте запускать ваш упрямый объект экспериментов — в процентах 70 случаев описанные шаги помогут пройти проверки на виртуальное окружение.

Важно! Значение в HKLM\SYSTEM\CurrentControlSet\Services\Disk\Enum перезаписывается после каждой перезагрузки, так что его нужно менять после каждого нового запуска системы.

UPD от @Denisoid:

Естественно, это не исчерпывающее руководство, некоторое ПО также может пытаться определять виртуальную систему следующими методами:

1) Проверками диапазона MAC адресов (просто подменяется в настройках виртуального сетевого адаптера до запускa виртуальной машины)
2) Через WinAPI опросом конфигурации ОС и прочей системной информации (FirmwareTable)
3) Низкоуровневыми трюками.

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



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

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

Спасибо всем, кто осилил статью и помог в дополнении её толковыми комментариями!
Share post

Comments 28

    0
    Спасибо, попробуем. Мб получится все же запустить никому не нужный Дневной дозор со старфорсом на виртуальной XP на семерке.
    Хотя скорее не удастся — когда разбирался с этим было оущение, чо чуть ли не половина виртуального обородудования и ключей реестра хранят в себе отпечаток VMware Player(запускал на нем а не на workstation — мб причина в этом)…
      0
      Так на дневной вроде как была человеческая кхм трещина, а вот с ночным дела обстоят хуже. Проще уж на старенький ноут хрюшу накатить.
      +3
      Описанные вами методы недостаточны для параноидальных программ. Как правило авторы коммерческого ПО используют по 3-4 метода детекта виртуальной машины, неговоря уже про malware.
      VMware может быть задетектирована:
      1) Проверками диапазона MAC адресов
      2) Наличием sys файлов на диске (в случае установки VMware Tools)
      3) Через WinAPI опросом конфигурации ОС и прочей системной информации (FirmwareTable)
      4) Низкоуровневыми трюками.
        0
        Описанные методы являются основой того, что нужно учитывать. Такими действиями удаётся обхитрить множество программ.

        Второй пункт я упомянул, с первым никогда не сталкивался, но достаточно очевиден, а вот 3 и 4 имеет смысл описывать в отдельной статье — примере на какой-нибудь реальной малвари, т.к. они имеют отношение не просто к параноидальным, но программам с уникальными подходами. И рецепты к ним почти уникальны.

        Но спасибо за комментарий, добавил в текст.
        +20
        А нет статьи про наоборот — как разбросать по реальной системе все вот эти вот файлы, ключи реестра, и прочее, чтобы так этого боящийся малварь в ужасе самоудалялся? этож можно и антивирус будет не ставить.
          +2
          А ведь замечательная идея то :)
            0
            да — по типу пугающей окраски насекомых и прочих желающих жить особей
            +4
            Есть: https://habrahabr.ru/post/172279/
              0
              Класс, описаны отличные способ защиты от перспективных угроз. Взял на заметку.
              0
              Этот способ не может заменить антивирус, поскольку не всякая малварь вообще имеет механизмы самоуничтожения при обнаружении виртуальной машины.

              Вдобавок, есть некоторые параноидально защищённые легальные коммерческие программы, которые не позволяют запускать себя в виртуальных машинах или требуют для такого запуска покупки более дорогой лицензии. Если они сочтут ваш ПК виртуальной машиной, это может привести к невозможности их запуска.
                0
                >Этот способ не может заменить антивирус, поскольку не всякая малварь вообще имеет механизмы самоуничтожения при обнаружении виртуальной машины.

                Это понятно, как дополнительная «линия обороны» кроме антивируса на конечных хостах имел в виду. Есть куча объектов, для которых вероятна целевая атака, и также вероятно, что будут пытаться до последнего уходить от анализа.

                >Вдобавок, есть некоторые параноидально защищённые легальные коммерческие программы, которые не позволяют запускать себя в виртуальных машинах или требуют для такого запуска покупки более дорогой лицензии. Если они сочтут ваш ПК виртуальной машиной, это может привести к невозможности их запуска.

                Кстати, статья писалась именно после очередного «столкновения» с такой программой, техподдержка которой отправила ставить bootcamp как единственное средство работы на Mac.
                +1
                +1
                На exel@b (ресурс сегодня лежит, так что ссылку дать не смогу) недавно один из участников допиливал VMWare на предмет антидетекта. Вкратце: пришлось очень много всего запатчить, и всё равно находились новые и новые способы определить, что программа запущена в виртуалке.

                Кроме имени диска ещё полно «палевных» строчек в биосе и драйверах. Всё это он пропатчил, но против низкоуровневых приёмов не попрёшь. Тут либо саму подопытную программу ломать, либо отдельную физическую машину иметь.
                  +1
                  Вот эта тема, там же можно найти и ссылку на уже пропатченные файлы для Windows:
                  https://exelab.ru/f/index.php?action=vthread&forum=5&topic=24207
                  +1
                  К сожалению создание такой виртуальной машины, которая не будет детектится является фундаментально неразрешимой задачей, вот здесь есть небольшая, но отличная статья на эту тему (кому интересно):
                  ссылка

                  Проблема еще в том, что VMWare, да и другим производителям виртуальных машин в целом это и не нужно, например есть целый набор инструкций x86, которые в виртуальной машине работают немного не так, как на реальной машине. Это уже пофиксить гораздо сложнее, а вот задетектить легко, требуется 5-7 машинных инструкций.
                    +1
                    На таком уровне детектирование естественно, что будет работать — применяется целый набор оптимизаций, которые ведут к неполному соответствию работы виртуального и реального железа.
                    Если моделировать железо на уровне VHDL — то мы ценой огромной потери скорости сможем смоделировать железо, не отличающееся от реального.
                    При этом детектирование будет возможно только путём связи с внешними ресурсами для замера времени исполнения определённого участка кода при помощи таймера вне этой машины.
                      0
                      Да, но тогда придется моделировать и процессор, а это уже не виртуальная машина, а полноценный эмулятор, например qemu поддерживает такой режим. Там как Вы правильно заметили очень серьезные потери в производительности, чем вирусописатели активно и пользуются. Например фазе заражения системы предшествует длительный цикл «пустых» операций, которая в эмуляторе может занимать несколько часов и даже дней, а на реальной машине исполняется за пару минут.

                      Вообще, есть сейчас несколько интересных работ, где ребята используют реальную, физическую машину для анализа вредоносного кода. Привожу пару ссылок кому интересно:
                      ссылка 1
                      ссылка 2
                    0
                    Интересная информация. Могли бы вы поделиться, какие программы так отрицательно относятся к VM?
                    Нам повезло, что серверы лицензий вроде FlexLM достаточно безразлично относятся к виртуальным машинам, физика или виртуалка выбирается по требованию вендора продукта (физику тихо ненавидим).
                      0
                      любые программы которые хотят ограничить запуск копий софта. Самый банальный пример — онлайн игры, например тебе позволяется использовать бесплатно 2 «окна», купить подписку и использовать 3 окна (и не больше). Но ты — умный, ты запустил 4 виртуалки и бегаешь 8-ю окнами.
                        0
                        Total Uninstall, например. Для запуска в виртуальной машине она хочет профессиональную лицензию, домашняя (более дешевая) не годится. Если не ошибаюсь, на программе сверху навешен VMProtect, с помощью которого это требование и реализовано.
                          0
                          Спасибо, просветился.
                        • UFO just landed and posted this here
                            0
                            При анализе малвари например. Малварь не любит когда ее анализируют, она старается проверить что работает не в песочнице.
                            +1
                            Все написано уже до вас. посмотрите в сторону VBoxHardenedLoader
                            В случае использования VBoxHardenedLoader pafish проходит все тесты кроме 1, который не особо существенен.
                              0
                              Вам очень повезло, если все ваши коллеги знают английский.
                              Зато теперь есть место, где собрана релевантная информация по теме — это уже хорошо.
                                +2
                                ИМХО в IT без английского нельзя. никак. вообще. мало людей которые умудряются без английского выезжать с хорошими знаниями. Мне приходится с коллегами регулярно собачиться за установку английских версий WS. И да, все мои коллеги очень поверхностно знают английский. Очень сильно лично мне мешает траблшутить — ищешь проблему всегда на английском, а потом пытаешься понять как же эти золото-локализаторы перевели компоненту которая тебе нужна.
                                  +2

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

                              0
                              1. С повсеместным внедрением VDI нас ждет безоблачное будущее, когда вирус попав на комп самоудаляется?
                              2. как сделать парочку финтов на обычном компе чтобы гадость думала что это виртуалка? )))

                              Only users with full accounts can post comments. Log in, please.