Hypervisor
Adversaries may install a type-1 hypervisor below the operating system to achieve persistent, stealthy access that survives reboots and is hidden from the guest OS. A malicious hypervisor intercepts hardware-level operations and can conceal its presence from all software running above it, including security tools and the OS kernel. This technique has been deprecated by MITRE ATT&CK but remains relevant for detection engineering due to its theoretical use by sophisticated threat actors and nation-state groups targeting high-value environments. Practical implementations include Blue Pill-style subvirt attacks, malicious Xen-based hypervisors, or abuse of legitimate hypervisor platforms (Hyper-V, VMware) as persistence anchors. Detection relies on pre-installation indicators (hypervisor binary drops, boot configuration changes, driver installs) since post-installation detection from inside the guest OS is unreliable.
let HypervisorTools = dynamic([
"xen", "bluePill", "vmmkit", "subvirt", "bluepill",
"hvloader", "hypervisor", "vmm.exe", "hv.exe"
]);
let SuspiciousBcdeditArgs = dynamic([
"hypervisorlaunchtype", "hypervisordebugtype", "hypervisordebugport",
"hypervisorbaudrate", "hypervisorloadoptions", "hypervisorschedulertype",
"testsigning on", "nointegritychecks on", "loadoptions hypervisor"
]);
let SuspiciousDriverNames = dynamic([
"xen.sys", "xenbus.sys", "xennet.sys", "xenvbd.sys", "xenvif.sys",
"hvax64.exe", "hvix64.exe", "hvloader.exe", "winhvr.sys", "hvload"
]);
// Branch 1: Suspicious bcdedit invocations modifying hypervisor boot settings
let BcdeditHypervisor = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName =~ "bcdedit.exe"
| where ProcessCommandLine has_any (SuspiciousBcdeditArgs)
| extend DetectionBranch = "BcdeditHypervisorConfig"
| extend RiskIndicator = "Boot configuration modified for hypervisor loading";
// Branch 2: Suspicious driver files associated with hypervisors dropped to disk
let HypervisorDriverDrop = DeviceFileEvents
| where Timestamp > ago(24h)
| where ActionType in ("FileCreated", "FileModified")
| where FolderPath has_any ("\\System32\\drivers\\", "\\SysWOW64\\drivers\\", "\\EFI\\", "\\Boot\\")
| where FileName has_any (SuspiciousDriverNames)
| extend DetectionBranch = "HypervisorDriverDrop"
| extend RiskIndicator = "Hypervisor-associated driver written to system directory";
// Branch 3: Service creation installing hypervisor-related drivers
let HypervisorServiceInstall = DeviceRegistryEvents
| where Timestamp > ago(24h)
| where ActionType in ("RegistryKeyCreated", "RegistryValueSet")
| where RegistryKey has @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services"
| where RegistryValueData has_any (SuspiciousDriverNames) or RegistryKey has_any (HypervisorTools)
| extend DetectionBranch = "HypervisorServiceInstall"
| extend RiskIndicator = "Registry service entry created for potential hypervisor driver";
// Branch 4: Process creating or accessing EFI/boot sector files (pre-install staging)
let BootSectorAccess = DeviceFileEvents
| where Timestamp > ago(24h)
| where FolderPath has_any ("\\EFI\\Microsoft\\Boot\\", "\\EFI\\Boot\\", "\\Boot\\BCD", "\\bootmgfw.efi", "\\bootmgr")
| where ActionType in ("FileCreated", "FileModified", "FileRenamed")
| where not (InitiatingProcessFileName has_any ("TrustedInstaller.exe", "wuauclt.exe", "svchost.exe", "MoUsoCoreWorker.exe"))
| extend DetectionBranch = "BootSectorModification"
| extend RiskIndicator = "EFI or boot file modified by non-trusted process";
union BcdeditHypervisor, HypervisorDriverDrop, HypervisorServiceInstall, BootSectorAccess
| project Timestamp, DeviceName, AccountName,
FileName, ProcessCommandLine, FolderPath, RegistryKey, RegistryValueData,
InitiatingProcessFileName, InitiatingProcessCommandLine,
DetectionBranch, RiskIndicator
| sort by Timestamp desc Data Sources
Required Tables
False Positives
- Legitimate Hyper-V or Windows Hypervisor Platform enablement via Windows Features — generates bcdedit hypervisorlaunchtype changes during install
- VMware Workstation or VirtualBox installation on developer machines that install kernel-mode drivers to system directories
- Windows Subsystem for Android or WSL2 enabling Hyper-V hypervisor support via bcdedit commands during feature activation
- Enterprise virtualization products (Citrix, Parallels, Nutanix AHV agents) installing Xen-compatible PV drivers to System32\drivers
- Windows Update or Windows Recovery Environment modifying EFI and BCD files during cumulative update installation
References (10)
- https://attack.mitre.org/techniques/T1062/
- https://en.wikipedia.org/wiki/Hypervisor
- https://capec.mitre.org/data/definitions/552.html
- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90.8832&rep=rep1&type=pdf
- https://learn.microsoft.com/en-us/windows-hardware/drivers/install/kernel-mode-code-signing-requirements--windows-vista-and-later-
- https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/bcdedit-command-line-options
- https://docs.microsoft.com/en-us/windows/security/threat-protection/device-guard/enable-virtualization-based-protection-of-code-integrity
- https://learn.microsoft.com/en-us/windows/security/hardware-security/tpm/trusted-platform-module-overview
- https://github.com/tandasat/HyperPlatform
- https://github.com/ionescu007/SimpleVisor
Unlock Pro Content
Get the full detection package for T1062 including response playbook, investigation guide, and atomic red team tests.