Не так давно я намагався впевнетись що ВМ сховати від зловреда майже неможливо. Тому вирішив ще перевірити як з цим справи в 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 на хості. Команда спробує знайти віртуальну машину з ім’ям, яке відповідає поточному хосту.