Я использовал 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)
Dinisoid
01.10.2016 17:55+3Описанные вами методы недостаточны для параноидальных программ. Как правило авторы коммерческого ПО используют по 3-4 метода детекта виртуальной машины, неговоря уже про malware.
VMware может быть задетектирована:
1) Проверками диапазона MAC адресов
2) Наличием sys файлов на диске (в случае установки VMware Tools)
3) Через WinAPI опросом конфигурации ОС и прочей системной информации (FirmwareTable)
4) Низкоуровневыми трюками.crypby
01.10.2016 18:21Описанные методы являются основой того, что нужно учитывать. Такими действиями удаётся обхитрить множество программ.
Второй пункт я упомянул, с первым никогда не сталкивался, но достаточно очевиден, а вот 3 и 4 имеет смысл описывать в отдельной статье — примере на какой-нибудь реальной малвари, т.к. они имеют отношение не просто к параноидальным, но программам с уникальными подходами. И рецепты к ним почти уникальны.
Но спасибо за комментарий, добавил в текст.
Mnemonik
01.10.2016 18:39+20А нет статьи про наоборот — как разбросать по реальной системе все вот эти вот файлы, ключи реестра, и прочее, чтобы так этого боящийся малварь в ужасе самоудалялся? этож можно и антивирус будет не ставить.
dartraiden
01.10.2016 21:13+4Есть: https://habrahabr.ru/post/172279/
crypby
02.10.2016 00:13Класс, описаны отличные способ защиты от перспективных угроз. Взял на заметку.
dartraiden
02.10.2016 00:16Этот способ не может заменить антивирус, поскольку не всякая малварь вообще имеет механизмы самоуничтожения при обнаружении виртуальной машины.
Вдобавок, есть некоторые параноидально защищённые легальные коммерческие программы, которые не позволяют запускать себя в виртуальных машинах или требуют для такого запуска покупки более дорогой лицензии. Если они сочтут ваш ПК виртуальной машиной, это может привести к невозможности их запуска.crypby
02.10.2016 00:23>Этот способ не может заменить антивирус, поскольку не всякая малварь вообще имеет механизмы самоуничтожения при обнаружении виртуальной машины.
Это понятно, как дополнительная «линия обороны» кроме антивируса на конечных хостах имел в виду. Есть куча объектов, для которых вероятна целевая атака, и также вероятно, что будут пытаться до последнего уходить от анализа.
>Вдобавок, есть некоторые параноидально защищённые легальные коммерческие программы, которые не позволяют запускать себя в виртуальных машинах или требуют для такого запуска покупки более дорогой лицензии. Если они сочтут ваш ПК виртуальной машиной, это может привести к невозможности их запуска.
Кстати, статья писалась именно после очередного «столкновения» с такой программой, техподдержка которой отправила ставить bootcamp как единственное средство работы на Mac.
dartraiden
01.10.2016 21:18+1На exel@b (ресурс сегодня лежит, так что ссылку дать не смогу) недавно один из участников допиливал VMWare на предмет антидетекта. Вкратце: пришлось очень много всего запатчить, и всё равно находились новые и новые способы определить, что программа запущена в виртуалке.
Кроме имени диска ещё полно «палевных» строчек в биосе и драйверах. Всё это он пропатчил, но против низкоуровневых приёмов не попрёшь. Тут либо саму подопытную программу ломать, либо отдельную физическую машину иметь.dartraiden
04.10.2016 10:24+1Вот эта тема, там же можно найти и ссылку на уже пропатченные файлы для Windows:
https://exelab.ru/f/index.php?action=vthread&forum=5&topic=24207
VitalityM
02.10.2016 14:52+1К сожалению создание такой виртуальной машины, которая не будет детектится является фундаментально неразрешимой задачей, вот здесь есть небольшая, но отличная статья на эту тему (кому интересно):
ссылка
Проблема еще в том, что VMWare, да и другим производителям виртуальных машин в целом это и не нужно, например есть целый набор инструкций x86, которые в виртуальной машине работают немного не так, как на реальной машине. Это уже пофиксить гораздо сложнее, а вот задетектить легко, требуется 5-7 машинных инструкций.vmchaz
03.10.2016 03:05+1На таком уровне детектирование естественно, что будет работать — применяется целый набор оптимизаций, которые ведут к неполному соответствию работы виртуального и реального железа.
Если моделировать железо на уровне VHDL — то мы ценой огромной потери скорости сможем смоделировать железо, не отличающееся от реального.
При этом детектирование будет возможно только путём связи с внешними ресурсами для замера времени исполнения определённого участка кода при помощи таймера вне этой машины.VitalityM
03.10.2016 15:14Да, но тогда придется моделировать и процессор, а это уже не виртуальная машина, а полноценный эмулятор, например qemu поддерживает такой режим. Там как Вы правильно заметили очень серьезные потери в производительности, чем вирусописатели активно и пользуются. Например фазе заражения системы предшествует длительный цикл «пустых» операций, которая в эмуляторе может занимать несколько часов и даже дней, а на реальной машине исполняется за пару минут.
Вообще, есть сейчас несколько интересных работ, где ребята используют реальную, физическую машину для анализа вредоносного кода. Привожу пару ссылок кому интересно:
ссылка 1
ссылка 2
gotch
03.10.2016 09:27Интересная информация. Могли бы вы поделиться, какие программы так отрицательно относятся к VM?
Нам повезло, что серверы лицензий вроде FlexLM достаточно безразлично относятся к виртуальным машинам, физика или виртуалка выбирается по требованию вендора продукта (физику тихо ненавидим).bykvaadm
03.10.2016 15:57любые программы которые хотят ограничить запуск копий софта. Самый банальный пример — онлайн игры, например тебе позволяется использовать бесплатно 2 «окна», купить подписку и использовать 3 окна (и не больше). Но ты — умный, ты запустил 4 виртуалки и бегаешь 8-ю окнами.
dartraiden
04.10.2016 10:21Total Uninstall, например. Для запуска в виртуальной машине она хочет профессиональную лицензию, домашняя (более дешевая) не годится. Если не ошибаюсь, на программе сверху навешен VMProtect, с помощью которого это требование и реализовано.
pfemidi
06.10.2016 12:04Например программы защищённые при помощи Themida (WinLicense) http://www.oreans.com/themida.php Таких программ (коммерческих) достаточное количество. Детектирование виртуальной машины в Themida можно и отключить, но не всегда это делают. К примеру в софте для Advance Turbo Flasher ( http://www.advance-box.com/ ) данная проверка не выключена и вполне себе делается.
bykvaadm
03.10.2016 15:55+1Все написано уже до вас. посмотрите в сторону VBoxHardenedLoader
В случае использования VBoxHardenedLoader pafish проходит все тесты кроме 1, который не особо существенен.crypby
03.10.2016 17:12Вам очень повезло, если все ваши коллеги знают английский.
Зато теперь есть место, где собрана релевантная информация по теме — это уже хорошо.bykvaadm
03.10.2016 18:01+2ИМХО в IT без английского нельзя. никак. вообще. мало людей которые умудряются без английского выезжать с хорошими знаниями. Мне приходится с коллегами регулярно собачиться за установку английских версий WS. И да, все мои коллеги очень поверхностно знают английский. Очень сильно лично мне мешает траблшутить — ищешь проблему всегда на английском, а потом пытаешься понять как же эти золото-локализаторы перевели компоненту которая тебе нужна.
Desem
05.10.2016 13:171. С повсеместным внедрением VDI нас ждет безоблачное будущее, когда вирус попав на комп самоудаляется?
2. как сделать парочку финтов на обычном компе чтобы гадость думала что это виртуалка? )))
keydon2
Спасибо, попробуем. Мб получится все же запустить никому не нужный Дневной дозор со старфорсом на виртуальной XP на семерке.
Хотя скорее не удастся — когда разбирался с этим было оущение, чо чуть ли не половина виртуального обородудования и ключей реестра хранят в себе отпечаток VMware Player(запускал на нем а не на workstation — мб причина в этом)…
hikkivision
Так на дневной вроде как была человеческая кхм трещина, а вот с ночным дела обстоят хуже. Проще уж на старенький ноут хрюшу накатить.