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

Я использовал 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.

Спасибо всем, кто осилил статью и помог в дополнении её толковыми комментариями!
Поделиться с друзьями
-->

Комментарии (27)


  1. keydon2
    01.10.2016 17:08

    Спасибо, попробуем. Мб получится все же запустить никому не нужный Дневной дозор со старфорсом на виртуальной XP на семерке.
    Хотя скорее не удастся — когда разбирался с этим было оущение, чо чуть ли не половина виртуального обородудования и ключей реестра хранят в себе отпечаток VMware Player(запускал на нем а не на workstation — мб причина в этом)…


    1. hikkivision
      01.10.2016 17:27

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


  1. Dinisoid
    01.10.2016 17:55
    +3

    Описанные вами методы недостаточны для параноидальных программ. Как правило авторы коммерческого ПО используют по 3-4 метода детекта виртуальной машины, неговоря уже про malware.
    VMware может быть задетектирована:
    1) Проверками диапазона MAC адресов
    2) Наличием sys файлов на диске (в случае установки VMware Tools)
    3) Через WinAPI опросом конфигурации ОС и прочей системной информации (FirmwareTable)
    4) Низкоуровневыми трюками.


    1. crypby
      01.10.2016 18:21

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

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

      Но спасибо за комментарий, добавил в текст.


  1. Mnemonik
    01.10.2016 18:39
    +20

    А нет статьи про наоборот — как разбросать по реальной системе все вот эти вот файлы, ключи реестра, и прочее, чтобы так этого боящийся малварь в ужасе самоудалялся? этож можно и антивирус будет не ставить.


    1. lleo_aha
      01.10.2016 20:20
      +2

      А ведь замечательная идея то :)


      1. sbnur
        01.10.2016 21:11

        да — по типу пугающей окраски насекомых и прочих желающих жить особей


    1. dartraiden
      01.10.2016 21:13
      +4

      Есть: https://habrahabr.ru/post/172279/


      1. crypby
        02.10.2016 00:13

        Класс, описаны отличные способ защиты от перспективных угроз. Взял на заметку.


    1. dartraiden
      02.10.2016 00:16

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

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


      1. crypby
        02.10.2016 00:23

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

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

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

        Кстати, статья писалась именно после очередного «столкновения» с такой программой, техподдержка которой отправила ставить bootcamp как единственное средство работы на Mac.



  1. dartraiden
    01.10.2016 21:18
    +1

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

    Кроме имени диска ещё полно «палевных» строчек в биосе и драйверах. Всё это он пропатчил, но против низкоуровневых приёмов не попрёшь. Тут либо саму подопытную программу ломать, либо отдельную физическую машину иметь.


    1. dartraiden
      04.10.2016 10:24
      +1

      Вот эта тема, там же можно найти и ссылку на уже пропатченные файлы для Windows:
      https://exelab.ru/f/index.php?action=vthread&forum=5&topic=24207


  1. VitalityM
    02.10.2016 14:52
    +1

    К сожалению создание такой виртуальной машины, которая не будет детектится является фундаментально неразрешимой задачей, вот здесь есть небольшая, но отличная статья на эту тему (кому интересно):
    ссылка

    Проблема еще в том, что VMWare, да и другим производителям виртуальных машин в целом это и не нужно, например есть целый набор инструкций x86, которые в виртуальной машине работают немного не так, как на реальной машине. Это уже пофиксить гораздо сложнее, а вот задетектить легко, требуется 5-7 машинных инструкций.


    1. vmchaz
      03.10.2016 03:05
      +1

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


      1. VitalityM
        03.10.2016 15:14

        Да, но тогда придется моделировать и процессор, а это уже не виртуальная машина, а полноценный эмулятор, например qemu поддерживает такой режим. Там как Вы правильно заметили очень серьезные потери в производительности, чем вирусописатели активно и пользуются. Например фазе заражения системы предшествует длительный цикл «пустых» операций, которая в эмуляторе может занимать несколько часов и даже дней, а на реальной машине исполняется за пару минут.

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


  1. gotch
    03.10.2016 09:27

    Интересная информация. Могли бы вы поделиться, какие программы так отрицательно относятся к VM?
    Нам повезло, что серверы лицензий вроде FlexLM достаточно безразлично относятся к виртуальным машинам, физика или виртуалка выбирается по требованию вендора продукта (физику тихо ненавидим).


    1. bykvaadm
      03.10.2016 15:57

      любые программы которые хотят ограничить запуск копий софта. Самый банальный пример — онлайн игры, например тебе позволяется использовать бесплатно 2 «окна», купить подписку и использовать 3 окна (и не больше). Но ты — умный, ты запустил 4 виртуалки и бегаешь 8-ю окнами.


    1. dartraiden
      04.10.2016 10:21

      Total Uninstall, например. Для запуска в виртуальной машине она хочет профессиональную лицензию, домашняя (более дешевая) не годится. Если не ошибаюсь, на программе сверху навешен VMProtect, с помощью которого это требование и реализовано.


      1. gotch
        04.10.2016 10:35

        Спасибо, просветился.


    1. pfemidi
      06.10.2016 12:04

      Например программы защищённые при помощи Themida (WinLicense) http://www.oreans.com/themida.php Таких программ (коммерческих) достаточное количество. Детектирование виртуальной машины в Themida можно и отключить, но не всегда это делают. К примеру в софте для Advance Turbo Flasher ( http://www.advance-box.com/ ) данная проверка не выключена и вполне себе делается.


  1. bykvaadm
    03.10.2016 15:55
    +1

    Все написано уже до вас. посмотрите в сторону VBoxHardenedLoader
    В случае использования VBoxHardenedLoader pafish проходит все тесты кроме 1, который не особо существенен.


    1. crypby
      03.10.2016 17:12

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


      1. bykvaadm
        03.10.2016 18:01
        +2

        ИМХО в IT без английского нельзя. никак. вообще. мало людей которые умудряются без английского выезжать с хорошими знаниями. Мне приходится с коллегами регулярно собачиться за установку английских версий WS. И да, все мои коллеги очень поверхностно знают английский. Очень сильно лично мне мешает траблшутить — ищешь проблему всегда на английском, а потом пытаешься понять как же эти золото-локализаторы перевели компоненту которая тебе нужна.


        1. reff
          04.10.2016 11:04
          +2

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


  1. Desem
    05.10.2016 13:17

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