Не так давно я намагався впевнетись що ВМ сховати від зловреда майже неможливо. Тому вирішив ще перевірити як з цим справи в HyperV. На поміч мені став ChatGPT, бо в мене не було часу самому рискати по мережі, але результат очікуваний - для експериментів а якості пісочниці HyperV точно не годиться. Дивіться результати далі.
Щоб визначити, чи машина є віртуальною, будь хто може скористатися командою PowerShell, яка перевіряє наявність ознак віртуалізації. Один з найпростіших способів - це скористатися `Get-WmiObject` або `Get-CimInstance` для отримання інформації про BIOS чи апаратне забезпечення. Якщо сервер є віртуальним, у властивостях часто можна побачити такі рядки, як "Microsoft Corporation" для Hyper-V або інші специфічні ознаки.
Ось приклади команд, які можна виконати в PowerShell:
1. Використання класу Win32_BIOS
(Get-WmiObject -Class Win32_BIOS).SerialNumber
Значення `SerialNumber` часто вказує на віртуальну платформу. Наприклад, для Hyper-V він може починатися з `Microsoft Corporation`.
2. Перевірка за допомогою класу Win32_ComputerSystem
(Get-WmiObject -Class Win32_ComputerSystem).Manufacturer
Для віртуальних машин на Hyper-V `Manufacturer` зазвичай повертає `Microsoft Corporation`.
3. Використання класу Win32_SystemEnclosure
(Get-CimInstance -ClassName Win32_SystemEnclosure).ChassisTypes
Ця команда виведе код типу шасі. Для віртуальних машин Hyper-V зазвичай повертається значення `3` (для віртуального шасі).
4. Перевірка через властивості Hyper-V специфічного класу
Get-VM | Where-Object { $_.Name -eq (hostname) }
Ця команда підійде, якщо є доступ до PowerShell команд Hyper-V на хості. Команда спробує знайти віртуальну машину з ім’ям, яке відповідає поточному хосту.
Наступні команди також є корисними для перевірки, чи працює машина в середовищі Hyper-V. Розгляньмо кожну з них окремо:
5. Перевірка стану служби Virtual Machine Management Service (VMMS)
Get-Service -Name "VMMS"
Ця команда перевіряє, чи працює служба `VMMS`, яка відповідає за управління віртуальними машинами Hyper-V. Якщо служба працює, це може бути ознакою, що машина є Hyper-V хостом. Але це ще не точно вказує на те, що конкретна машина є віртуальною, оскільки `VMMS` може працювати на фізичному сервері, який виконує роль Hyper-V хоста.
6. Перевірка наявності простору імен WMI для Hyper-V
Get-WmiObject -Namespace root -Class __NAMESPACE | Where-Object { $_.Name -eq 'Virtualization' }
Ця команда перевіряє, чи існує простір імен `root\Virtualization` в WMI. Наявність цього простору імен є ознакою того, що система має встановлені компоненти Hyper-V, але знову ж таки, це більше свідчить про те, що машина може бути хостом для віртуалізації, а не обов’язково віртуальною машиною.
7. Запит до MSVM_ComputerSystem
Get-WmiObject -ComputerName localhost -Namespace root\Virtualization -Query "Select * from MSVM_ComputerSystem where Description like '%Virtual%'"
Цей запит звертається до класу `MSVM_ComputerSystem` у просторі імен Hyper-V і шукає записи, де опис містить слово `Virtual`. Це одна з найбільш корисних команд для визначення, чи є машина віртуальною, оскільки `MSVM_ComputerSystem` зазвичай використовується для інформації про віртуальні машини в середовищі Hyper-V. Якщо цей запит повертає значення, це майже напевне означає, що ви працюєте з віртуальною машиною Hyper-V.
То ж, як бачите, тільки powershell команд для визначення чи є система віртуальним хостом HyperV вдосталь. Єдине що 5-а та 6-а команди більше підходять для перевірки, чи може ваш хост сам виконувати роль Hyper-V хоста для інших ВМ.
Щасти вам.
No comments:
Post a Comment
А что вы думаете по этому поводу?