Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Обнаружение виртуальных машин  [new]
priaper
Member

Откуда:
Сообщений: 4
Здравствуйте. Существует ли универсальный способ обнаружить запуск приложения в виртуальной среде вроде
VMware, VirtualBox, Qemu и т.д. в пользовательском режиме из-под ограниченной учетки?
За универсальное решение готов заплатить в разумных пределах.
20 июл 20, 09:27    [22170209]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10412
CoreInfo
20 июл 20, 09:33    [22170212]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
Eolt
Member

Откуда: Russia
Сообщений: 1622
priaper,

Универсального способа нет. Большинство способов детекта виртуалки могут быть перехвачены и нейтрализованы.
20 июл 20, 11:28    [22170292]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
mayton
Member

Откуда: loopback
Сообщений: 47948
Ограниченность учетки проверить очень легко. Достаточно дернуть 1-2 функции которые запрещены для этой учетки
и сразу получить код ошибки.

По поводу Qemu/VBox, - это будет вечная борьба снаряда и брони. И в этой борьбе можно будет просто выиграть
время но не войну. Виртуалки всё более совершенны и скрывают все что можно скрыть. Можешь попробовать измерять
производительнсть (кратковременно) процессорных ядер чтобы получить некую вещественную величину перформанса
и по ней понять насколько сильно конфигурация виртуализована.
20 июл 20, 12:44    [22170346]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
Aklin
Member

Откуда: Прямо сейчас меня здесь нет
Сообщений: 59440
mayton
Можешь попробовать измерять
производительнсть (кратковременно) процессорных ядер чтобы получить некую вещественную величину перформанса
и по ней понять насколько сильно конфигурация виртуализована.
Что-то мне подсказывает, что сильнозагруженный комп с хдд будет совершенно неотличим от слабозагруженной виртуалки с ссд
20 июл 20, 13:42    [22170386]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50765
mayton
По поводу Qemu/VBox, - это будет вечная борьба снаряда и брони.

Зачем? Они специально предоставляют функции, позволяющие себя обнаружить.
20 июл 20, 13:58    [22170406]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 8757
Dimitry Sibiryakov
mayton
По поводу Qemu/VBox, - это будет вечная борьба снаряда и брони.

Зачем? Они специально предоставляют функции, позволяющие себя обнаружить.

mayton не так уж и не прав

AFAIK

Например, создатели Eve Online пытаются обнаружить VmWare, а авторы ботов, владельцы бото-ферм, всячески ее (VmWare) маскируют (с помощью настроек вм).
20 июл 20, 14:18    [22170427]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
mayton
Member

Откуда: loopback
Сообщений: 47948
Aklin
mayton
Можешь попробовать измерять
производительнсть (кратковременно) процессорных ядер чтобы получить некую вещественную величину перформанса
и по ней понять насколько сильно конфигурация виртуализована.
Что-то мне подсказывает, что сильнозагруженный комп с хдд будет совершенно неотличим от слабозагруженной виртуалки с ссд

Ну... есть такой технический термин. Калибровка.

И понятно что она - неточная. Плавает. Но если у тебя есть некий базовый калибровочный сет
например время расчета простых чисел до миллиарда в мультипоточке на всех ядрах Core i7
то ты можешь это время сопоставлять с тестируемой вируталкой и делать выводы. Или просто
время расчет хешей SHA1 как в блокчейнах.

Если оно сильно-сильно будет отличаться - то принимаешь решение. Сообщаешь что
есть подозрение что конфигурация сильно отличается от рекомендуемой. А чтоб пользователь
не хитрил - включаешь 5-10 секунд калибровки перед каждым запуском приложения обязательно

Разумеется оно будет где-то зависеть от HDD. Но не так сильно.
20 июл 20, 14:26    [22170435]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3888
mayton,

тогда уж можно сразу себе пару сатоши нафармить :D раз пошла такая пьянка, а 5-7 сек. пользователь пусть ждёт
20 июл 20, 14:31    [22170442]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
mayton
Member

Откуда: loopback
Сообщений: 47948
За 5-7 секунд ты не сделаешь полезной работы.

Кстати предлагаю подумать на тему WebAssembly. Кажется это более интересно чем калибром майнить.
20 июл 20, 14:32    [22170443]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10412
Охренели вы, что ли, теоретики от программирования???
Под линуксом штатный lscpu выдаёт не только характеристики процессора, но и тип гипервизора. Не определяет QEMU/user? Ну так этот режим для очень выборочных сценариев.
Под виндой - CoreInfo. Хотя он и сообщает, что требуются привилегии администратора для интеловских процов, чтобы обнаруживать гипервизор.
20 июл 20, 14:56    [22170465]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
mayton
Member

Откуда: loopback
Сообщений: 47948
Basil A. Sidorov
Охренели вы, что ли, теоретики от программирования???
Под линуксом штатный lscpu выдаёт не только характеристики процессора, но и тип гипервизора. Не определяет QEMU/user? Ну так этот режим для очень выборочных сценариев.
Под виндой - CoreInfo. Хотя он и сообщает, что требуются привилегии администратора для интеловских процов, чтобы обнаруживать гипервизор.

Наверное Леонид имел в виду что Eve Online (Windows-application) испытывал трудности с детектированием
факта запуска клиента в окружении VMWare через Windows-API.

По поводу того что выдает lscpu я попробую сегодня вечером проверить.
20 июл 20, 17:30    [22170569]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
mayton
Member

Откуда: loopback
Сообщений: 47948
Вот опция такая есть под QEMU.

<hidden state='on'/>


Надо будет 2 варианта посмотреть. С ней и без.
20 июл 20, 17:49    [22170584]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10412
Нет у QEMU такой опции. Это опция какого-то интерфейса к QEMU.
20 июл 20, 18:34    [22170614]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
Aklin
Member

Откуда: Прямо сейчас меня здесь нет
Сообщений: 59440
mayton
Но если у тебя есть некий базовый калибровочный сет
например время расчета простых чисел до миллиарда в мультипоточке на всех ядрах Core i7
то ты можешь это время сопоставлять с тестируемой вируталкой и делать выводы. Или просто
время расчет хешей SHA1 как в блокчейнах.
Это если у тебя ОС никакой нет сверху.
20 июл 20, 18:47    [22170620]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
mayton
Member

Откуда: loopback
Сообщений: 47948
Да. Это был tool под названием virsh

http://manpages.ubuntu.com/manpages/focal/en/man1/virsh.1.html
20 июл 20, 19:11    [22170630]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
fkthat
Member

Откуда:
Сообщений: 2965
Я думаю, можно определить по доступности самой виртуализации, типа, если под линуксом, то что-то вроде:

grep vmx /proc/cpuinfo

внутри VM оно ничего не вернет.
20 июл 20, 19:15    [22170632]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
Aklin
Member

Откуда: Прямо сейчас меня здесь нет
Сообщений: 59440
fkthat
можно определить по доступности самой виртуализации
Виртуализацию можно отключить на уровне биоса.
Да и не все процы ее поддерживают в полном объеме ж.
20 июл 20, 19:18    [22170633]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
mayton
Member

Откуда: loopback
Сообщений: 47948
Давайте вернемся в начало. Автор спросил - тра-лалалала.... VMware, VirtualBox, Qemu
Тоесть его интересует не 1 тип виртуалки а целый список.

За универсальное решение дескыть готов платить. Мне вопросы платы тут не интересны но я-бы
уточнил какой спектр виртуалок его устроит. Один из возможных сценариев описан здесь

https://superuser.com/questions/1387935/hiding-virtual-machine-status-from-guest-operating-system

Есть утилита которая контролирует разные типы виртуалок и надо тестить и тестить.
20 июл 20, 20:00    [22170664]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
priaper
Member

Откуда:
Сообщений: 4
mayton
Qemu/VBox, - это будет вечная борьба снаряда и брони. И в этой борьбе можно будет просто выиграть
время но не войну.

Согласен, но хотелось бы какое-то хотя бы временное решение. Если способ обнаружения будет новым и неизвестным в паблике, то и соответствующую защиту от него сделают нескоро.
20 июл 20, 20:55    [22170699]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
priaper
Member

Откуда:
Сообщений: 4
mayton
я-бы уточнил какой спектр виртуалок его устроит.

Hyper-V, VMware workstation, VirtualBox, Parallels, Qemu минимум.

Сообщение было отредактировано: 20 июл 20, 20:58
20 июл 20, 20:59    [22170700]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
priaper
Member

Откуда:
Сообщений: 4
mayton
Но если у тебя есть некий базовый калибровочный сет
например время расчета простых чисел до миллиарда в мультипоточке на всех ядрах Core i7
то ты можешь это время сопоставлять с тестируемой вируталкой и делать выводы. Или просто
время расчет хешей SHA1 как в блокчейнах.

Если оно сильно-сильно будет отличаться - то принимаешь решение.


Во-первых, почему оно должно вообще отличаться? Условное умножение матриц выполняется с одинаковой скоростью в гостевом режиме при включенной аппаратной виртуализации и без нее.
Во-вторых, время расчета невозможно определить, не зная частоту, архитектуру и количество ядер CPU. А виртуалка может подсунуть гостевой программе любые значения - какой нибудь 2-ядерный Atom начала века вместо i7 10000+
20 июл 20, 21:29    [22170719]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
Dima T
Member

Откуда:
Сообщений: 14878
priaper
mayton
Но если у тебя есть некий базовый калибровочный сет
например время расчета простых чисел до миллиарда в мультипоточке на всех ядрах Core i7
то ты можешь это время сопоставлять с тестируемой вируталкой и делать выводы. Или просто
время расчет хешей SHA1 как в блокчейнах.

Если оно сильно-сильно будет отличаться - то принимаешь решение.


Во-первых, почему оно должно вообще отличаться? Условное умножение матриц выполняется с одинаковой скоростью в гостевом режиме при включенной аппаратной виртуализации и без нее.
Во-вторых, время расчета невозможно определить, не зная частоту, архитектуру и количество ядер CPU. А виртуалка может подсунуть гостевой программе любые значения - какой нибудь 2-ядерный Atom начала века вместо i7 10000+

Производительность проца в виртуалках не отличается от хоста, разве что количество ядер проверить.
У виртуалки тупит дисковая подсистема и сеть, например при заявленном гигабите скорость обмена с хостом 150-200 мегабит.
20 июл 20, 21:36    [22170723]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
mayton
Member

Откуда: loopback
Сообщений: 47948
Dima T
priaper
пропущено...


Во-первых, почему оно должно вообще отличаться? Условное умножение матриц выполняется с одинаковой скоростью в гостевом режиме при включенной аппаратной виртуализации и без нее.
Во-вторых, время расчета невозможно определить, не зная частоту, архитектуру и количество ядер CPU. А виртуалка может подсунуть гостевой программе любые значения - какой нибудь 2-ядерный Atom начала века вместо i7 10000+

Производительность проца в виртуалках не отличается от хоста, разве что количество ядер проверить.
У виртуалки тупит дисковая подсистема и сеть, например при заявленном гигабите скорость обмена с хостом 150-200 мегабит.

Мой тест не про то что виртуалка. А про то что объем ресурсов не соответствует хост-ОС.

Ну подумайте сами - какой болт поднимать виртуалку 100% совпадающую с ресурсами хоста?
20 июл 20, 22:04    [22170732]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружение виртуальных машин  [new]
kolobok0
Member

Откуда:
Сообщений: 2148
priaper,

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

правильно построенный софт - наоборот юзает виртуализацию, как средство ускорения при больших нагрузках...


(круглый)
20 июл 20, 22:33    [22170749]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Программирование Ответить