Какие данные о моем реальном железе знает VirtualBox?


Всем привет. Касательно своего вопроса я много информации прочитал, много мнений послушал + с разрабами тоже пообщался, но все же решил послушать спецов в этом деле. Лишним не будет точно!

Есть ноутбук. На котором стоит в качестве хоста kali linux. В качестве гостевой стоит whonix на virtualbox.

Вопрос следующий:

Может ли какой сайт или софт, определить уникальные идентификаторы моего реального железа, если я сижу с whonix и соответственно как-то связать хост с whonix тем самым установить что это один компьютер.

(про мак-адресс можно не писать)

Комментарии
— гыук (31/05/2016 22:58, исправлен 31/05/2016 23:45)   

Так эмпирическим способом не пробовали? В Whonix как и в Tails два браузера. Вы чем любите пользоваться? Если ТВ, то зайдите на сайт типа whoer.net c отключенным noscript, и посмотрите что определится. Есть в инете ресурсы со сканерами, есть wireshark (с последним конечно нужно уметь обращаться).


А можно прочитать здесь и на сайте whonix, что вирт машина не дает 100% защиты.


Warning[link1]


# Информация о железе
$ lspci


# Расширенная информация не предоставляется
$ sudo lshw


# Ежели совсем скучно, то
$ dmesg

— jack3d (01/06/2016 11:32)   
whoer и другие чекеры информацию о железе не предоставляют... в том и дело.

100% защиты ничего не дает, но интересно, есть ли какие данные по которым можно связать два "якобы" разных пк..
— jack3d (01/06/2016 11:43)   
ВБ видит мой процессор, это вроде не критично. но всё же, не приятно.
— jack3d (01/06/2016 15:08)   
возможно стоит сменить virtualbox на аналоги
— Гость_ (01/06/2016 18:26, исправлен 01/06/2016 18:27)   

Кстати, чтоб выудить всё, что можно, нужно запускать такие тулзы от рута с максимальным уровнем вербосити. Если PCI-карточка проброшена в гостевую систему как есть, на этом уровне вербосити пишется марка, прозиводитель и даже название фирмы, производившей ноутбук (видимо, PCI-карта делалась специально под это железо). Теоретически некоторые PCI-карты могут содержать уникальные ID, поэтому с каждым железом надо разбираться отдельно. Однако, без рута в гостевой системе даже эту информацию о железе не получить. Ещё на hdparm рекомендую посмотреть.



Вообще ничто не даёт 100%-ой защиты, даже air gap (тем более, виртуалки[link2]).



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



Придётся смириться. Процессор – единственное, что гостевым ОС, как правило, известно. Уникального ID у них нет (после скандальной истории с Pentium III[link3] побоялись возвращать серийник процессору). Некоторые VM скрывают тип проца в том смысле, что его не посмотреть в настройках, однако, по косвенным наблюдениям марка процессора всё равно может быть выяснена[link4].



Если скрыть процессор – единственная цель такой смены, то, имхо, не стоит.

— jack3d (01/06/2016 19:21)   
А почему не стоит? Ведь процессор это самый явный идентификатор. Так как остальное подменено на виртуальное...
— гыук (01/06/2016 23:31, исправлен 01/06/2016 23:32)   

Так вы на один и тот же ресурс заходите одновременно с хоста и с гостя?



Что за программы вы используете в Whonix, что они могут передавать на сторону индентификационные данные?



Может на большую часть ваших вопросов вы можете найти по вышеуказанной ссылке "Warning"?
Здесь[link5] есть 6-я строчка:
"none advanced x86 compatible"
Суть описана здесь[link6]
Ну или Qubes. Правда приготовте пачку денег на железо.



"root@host:/home/user# lshw
Could not find the database of available applications, run update-command-not-found as root to fix this
lshw: command not found
root@host:/home/user#"


Я ж и говорю:


Что там в Whonix нагородили не в курсе.



Так какое же приложение должно передать такие данные в сеть?

— Гость_ (01/06/2016 23:43, исправлен 01/06/2016 23:44)   

Изменение CPUID для виртуальных машин под управлением VirtualBox[link7]
Virtualbox, how to force a specific CPU to the guest[link8].
Помимо CPUID, VirtualBox по умолчанию передает (можно отключить) гостевой системе ACPI[link9] хоста, в этом случае, к примеру, уровень заряда батареи можно будет читать из гостевого браузера.

— гыук (02/06/2016 00:54, исправлен 02/06/2016 00:58)   

ТВ имеет такие уязвимости? Каждое приложение в Whonix ходит через свой порт, что видно из torrc. Даже если будет возможность влезть в ТВ, то информация о системе будет очень скудной и однобокой. И да конечно нужно отдавать себе отчет, что эта система не "Амнезия" как Tails (о чем есть предупреждение на оф сайте).

— Гость_ (02/06/2016 10:04)   

ФБРовский троян с встроенным локальным рутом, подцепляемым из бразуера при заходе на нужную страницу – так сойдёт?


Явный, но не уникальный. Ну увидит противник, что у вас Intel i5 или Intel i7. Дальше-то что? Таких процессоров миллион, стоят на самом разном железе, на самых разных ноутбуках. Насколько эта информация уникальна?


Это в Whonix так? Возможно, дело в AppArmor. УМВР.


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


Аменизийность всегда можно настроить сторонними средствами, которые будут запускать систему каждый раз с одного и того же чистого образа (время от времени обновляемого безопасным образом).
— гыук (02/06/2016 11:59, исправлен 02/06/2016 12:08)   

И этот код в браузере будет исполнен на 100%? Или речь все-таки о целевой атаке?



Ну да. Так ведь ТС упоминает о Whonix.



Так то оно так, но "предохраняться" нужно и никто не отменял NoScript.



С 13 версии идет контроль установленных сторонних приложений в систему. Но это конечно не значит что ничего устанавливать туда нельзя. Каждый сам себе пусть определит что ему нужно.

— jack3d (02/06/2016 12:14)   


У меня еще при исполнении LSHW выдает какой то номер непонятный, serial: 0002-0652-0000-0000-0000-0000. Якобы какой то сериал, хотя это не серийник моего corei5. И интел вообще не знают ничего про этот номер, и говорят что к процу он не имеет отношения. Тогда почему в whonix я его вижу? а на хосте например нет.
— jack3d (02/06/2016 12:15)   
Это у меня баг какой? Или в чем соль? Может кто пояснит, уже у кого только можно узнавал. Никто не вкурсе что это такое.
— jack3d (02/06/2016 12:31)   
Вот подобное в гугле у многих:

product: Intel® Core™ i3 CPU 540 @ 3.07GHz
vendor: Intel Corp.
physical id: 4
bus info: cpu@0
version: 6.5.2
serial: 0002-0652-0000-0000-0000-0000
slot: LGA1156
size: 3066MHz
capacity: 3800MHz
width: 64 bits
clock: 133MHz
— гыук (02/06/2016 14:16)   
jack3d (02/06/2016 12:14)

В Whonix эта команда не запускается в штатных условиях
А вы на хосте для какой цели ее запускали? Для интереса? )
— jack3d (02/06/2016 14:18)   
На хосте запустил что бы сравнить, как этот номер в вообще связан с моим реальным железом. Но на хосте не увидел его. А вот на whonix почему то вижу. Есть предположение что вообще это такое?
— jack3d (02/06/2016 15:45)   
Как оказалось это виртуальная машина симулировала серийник таким образом.
— Гость_ (03/06/2016 02:48, исправлен 03/06/2016 03:20)   

Если на 65%, намного легче будет?



Любая атакая на уязвимость в браузере "целевая". Если малварь кто-то подгружает на интернет-страницы, на которые вы можете зайти, значит, это кому-то нужно. В дикой сети таких атак – пруд пруди, на этом весь рынок браузерных эксплоитов держится. За дыру в TBB 80k$ предлагают[link10] – больше, чем за дыры в чём-либо другом, даже в ОС. Видимо, правительства готовы хорошо заплатить.



NS – мёртвому припарка, тем более, что его код не подписан, а обновляется он в браузере автоматически хрен знает как без проверки подписей. То, что действительно защищает – виртуалки и правильно настроенный фаервол.



Поставьте пакет cpuid и командой cpuid смотрите его хоть в госте, хоть на хосте. Первые цифры, по-видимому, стандарты, и соответствуют марке процессора, а остальные у всех нули[link11]:


Processor serial numbers were basically only in Pentium III processors. Intel removed it from later models due to the privacy concerns that were raised. As such, unless you're on a PIII AND your BIOS settings let you read the serial number, all you'll get are 0's.


VM здесь ни при чём.


Кстати, говорят, KVM в некоторых режимах умеет скрывать (в вышесказанном смысле) тип процессора и сообщать системе, что реальный процессор примитивнее используемого. Общий принцип – можно заявить отсутствие некотрых возможностей процессора, которые есть, но нельзя заявить те возможности, которых нет. Таким образом, "эмулируемый" процессор не может быть более продвинутым, чем реально используемый.

— jack3d (03/06/2016 11:23)   

Аналогичный номер выдает у всех почти, у владельцев corei3 \ corei5 и тд.

Вот обьяснение модератора с форума whonix:

The way the serial number is shown is a standard output for when your OEM hasn't implemented the serial enquiry properly. In a VM a number with lots of zero's is shown to simulate this. That's why your host OS probably says "To Be Filled By O.E.M.".


Есть аргументы какие? Или просто лишь бы написать?
— jack3d (03/06/2016 11:34)   
Хотелось бы разобраться....
— jack3d (03/06/2016 11:43)   
Через sudo dmidecode | grep Serial выдало номер какой то на хосте, вроде как уникальный. это и есть серийник процессора? их же вроде убрали после пентиума 3?
— jack3d (03/06/2016 11:48)   
А в виртуалке не отображается ничего.
— jack3d (03/06/2016 12:21)   


Я общался с официальным саппортом intel. Они не знают никаких стандартов, и сказали что это вообще левый набор цыфр. По этому скорее всего это уже виртуалка, нет?
— гыук (03/06/2016 12:43, исправлен 03/06/2016 12:49)   

Ну видите. Очень полезная информация достанется врагу.



В интернет больше не хожу. Там большие пацаны заставляют на свои сайты ходить и заражают всех.



У меня наверно специальный ТВ везде попадается, в котором NS сам не обновляется. А еще его можно попробовать настроить.



И получим кучу "полезного" мусора для атакующего.


— jack3d (03/06/2016 12:49)   


Что имеешь ввиду?
— jack3d (03/06/2016 21:11)   
!!С вопросом разобрался, всем кто отписался спасибо!!!
— гыук (03/06/2016 23:14)   

И смысл?[link12]
— Гость_ (04/06/2016 01:41)   

Поражаюсь вашей наглости. На него трятят своё время, пишут ответы, а он в ответ хамит.


Так где здесь виртуалка-то? При чём тут она? Запусти любую ОС, установи в неё пакет cpuid и выполни команду cpuid – получишь те самые данные. Я на хосте и на госте получаю в качестве вывода одно и то же. Выхлоп определяется тем, какую инфу о проце даёт железо, виртуалка в случае проца его (в моём случае) не меняет. Выглядит примерно так:



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


Возможно, этот фиктивный серийник общий для всех интелов.


Выполни cpuid.


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


Раньше обновлялся, даже здесь это обсуждалось. В любом случае, браузер настолько дыряв, что надеяться на NS глупо.


Если параноя так сильно щемит, удали пакет после тестов, но смысла параноить я не вижу. cpuid эту информацию не с астрала снимает. Получит атакующий эту инфу парсингом инфы из /proc или запросом к нужному сисколу вместо выполнения cpuid – тебе легче будет?


Что ты хотел сказать этой ссылкой? Что на основании одного решения по одному делу суда одной страны теперь никакую инфу полученную через эксплоиты никогда нельзя будет использовать для обвинения? Или нельзя её использовать для parallel construction[link13]? Или после этого решения суда весь шпионаж в сети закончился?
— jack3d (04/06/2016 11:22)   


Извиняюсь если кого задел)) Не хотел хамить. Просто запутался маленько. Теперь всё понял.
— Гость_ (19/11/2016 04:00)   

Не только в KVM. Скорей всего, это общий принцип для всех виртуалок. Например, в man xl.cfg для этого предусмотрена опция cpuid, с помощью которой можно задать характеристики процессора.
— Гость_ (23/11/2016 23:41, исправлен 23/11/2016 23:43)   

Длинная дискуссия[link14] в рассылке на тему того, что и как с этим делать:


Joanna Rutkowska:


I haven't played with it, but see no reasons it should not work. I can imagine we introduce a prefs for VMs (say "generic_cpuid" settable via qvm-prefs) that would be resulting in additional config for cpuid emulation inserted in the config file for such VMs. We would need to agree on good-enough-for-everybody CPUID config and stick to it then. Again, this would be use-able for anon VMs mostly.

However, this will not work for PV VMs, because the CPUID instruction is not a privileged instruction, so malware in a PV VM can always execute this instruction (even if we hooked Xen interface for CPUID-like info to the guest) without trapping into XEN in PV operation.


AFAIU, there are not personal identifying info returned by CPUID, but I can see how this could be used as an additional fingerprinting vector. Thus, perhaps we should consider distributing Whonix workstation template as an HVM template instead of a PVM one? Fortunately we do have templates support for HVMs, so this should be perfectly possible.


However, this will not work for PV VMs, because the CPUID instruction is not a privileged instruction, so malware in a PV VM can always execute this instruction (even if we hooked Xen interface for CPUID-like info to the guest) without trapping into XEN in PV operation.

That's too bad for excluding paravirtualized VMs.

BTW, it should be obvious, but let me point out that any compartmentalizing technology for x86 that is not based on VT-x/AMD-v would be prone to this problem. This is b/c CPUID is an instruction and its execution cannot otherwise be controlled by the OS, other than via VT-x intercept.


A big part of the problem here is that so few people are using Qubes + Whonix, that if 2 AnonVMs got trivially popped (via Firefox, Thunderbird, PDF, IMG, etc) and had the same CPU specs, it would no doubt predictably be the same user/person out in the world using that instance of Qubes + Whonix, since there are probably many more CPU models than such users at this point.


And if there is any personally identifying info/documents/etc inside one of the VMs, then it's a true identity game over for all known AnonVM activity simply tied back to a CPU model.


With GOV netflow and other vast personal activity history, such as technology purchases, software statistics/debug uploads, Qubes HCL report contributions, etc, it only gets easier to filter out key information and potentially infer identity based on 1 single AnonVM compromise.


I'm guessing that this would not limit the speed of the CPU(s) that the HVM is exposed to? Just changes the info/attributes of the AnonVM domain's CPU (including reported MHz?)?

No.
— unknsecured (04/10/2018 14:38)   
Напишу сюда, чтобы не плодить темы. Посмотрел VirtualBox и заметил несколько неприятных моментов: Кроме уже упомянутой непонятно зачем допущеной разработчиками утечки параметра процессора, утекает и DNS! Я считаю это серьезная уязвимость! Как можно сделать чтобы для VirtualBox DNS был недоступен всегда (как при пустом resolv.conf)?
И общий вопрос: насколько там защищена сеть внутри VirtualBox? То есть когда сеть поднята и доступна одной группе ОС, а в другой, если выключено в конфиге, то реально отрублено без случайных утечек! Тот же вопрос касается маршрутизации, поднимаемой в пределах VirtualBox (как с Whonix).
— Гость_ (12/03/2019 16:55)   
Намучался я с VB! Кроме упомянутого слива проца, издевается через мышь: Захватывает управление, так что указатель двигается и в хостовой ОС, но кликать можно только в окне какой-то конкретной запущенной в виртуалке ОС. Еще через какое-то время работы фокус указателя мыши сдвигается примерно на размер одного указателя (стрелки) выше. То есть, если, например ткнуть на текст, то курсор окажется строкой выше, хотя, еще раз: указатель ниже! При этом, настройки в закладке мыши (PS2,USB,планшет) никак на этот глюк не влияют(

Ну и кроме этого, как-то странно распределяет ресурсы: На досточно мощном компе, сжирает все! Независимо от процентных полозков ресурсов проца и количества процов. Еще через каждые десять раз запущенные в виртуалке ОС сами по себе вылетают (не закрывается окно, а запущенная ОС либо мертво виснет, либо в этом же окне перезагружается или перезапускается интерфейс).

Я так понимаю, что сама структура виртуалок такова, что этот софт (VB, другие) использует готовые модули в ядре? Такие как: QEMU/KDM и т.п.? А можно ли как-то научиться запускать под этими модулями ОС буквально из консоли? Или может есть какой более легкий (по глюкам) аналог VB?

Ссылки
[link1] https://www.whonix.org/wiki/Warning

[link2] http://www.pgpru.com/comment57497

[link3] https://en.wikipedia.org/wiki/CPUID#EAX.3D3:_Processor_Serial_Number

[link4] http://www.pgpru.com/comment17088

[link5] https://www.whonix.org/wiki/Download

[link6] https://www.whonix.org/wiki/Dev/Build_Documentation/Physical_Isolation

[link7] http://tty.org.ru/node/182

[link8] https://superuser.com/questions/625648/virtualbox-how-to-force-a-specific-cpu-to-the-guest

[link9] https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface

[link10] http://www.kommersant.ru/Doc/3001495

[link11] https://stackoverflow.com/questions/5045450/how-to-get-cpu-serial-under-linux-without-root-permissions

[link12] https://threatpost.com/judge-tosses-evidence-gathered-by-fbis-tor-exploit/118339/

[link13] https://en.wikipedia.org/wiki/Parallel_construction

[link14] https://groups.google.com/forum/#!topic/qubes-devel/EXrWFgEp5Sg