苹果

描述

大多数 macOS 特定的沙箱和虚拟环境检测方法都基于使用 shell 命令,例如“sysctl”和“ioreg”。

1.硬件型号检测方法

使用的命令:
sysctl -n hw.model
如果在本机 Apple 硬件上运行,返回值包含硬件的型号名称:
$ sysctl -n hw.model
Macmini8,1
如果命令输出不包含“Mac”子字符串,则恶意软件认为它正在虚拟机中运行。

2.检查超线程

2018 年之前发布的大多数 Apple 硬件(MacBook、Mac mini)都启用了超线程。这意味着物理核心的数量等于逻辑核心的一半。但是,某些虚拟机管理程序不提供更改逻辑核心数量的功能,逻辑核心数量始终等于物理核心数量。
使用的命令:
echo $((`sysctl -n hw.logicalcpu`/`sysctl -n hw.physicalcpu`))
在物理硬件上,命令的输出值必须等于“2”。新硬件配备了禁用超线程的功能,例如配备 6 核 Intel Core i7 CPU 的 Mac mini。因此,这种方法被认为是过时的。

3.内存大小检测

当运行多个虚拟机时,每个虚拟机都会分配少量的 RAM,而 Apple 物理硬件通常具有超过 4 Gb RAM。
使用的命令:
sysctl -n hw.memsize

4.I/O KitRegistry检测

检查“IOPlatformExpertDevice”注册表类
使用的命令:
ioreg -rd1 -c IOPlatformExpertDevice
检查 USB 设备供应商名称
使用的命令:
$ ioreg -rd1 -c IOUSBHostDevice | grep "USB Vendor Name"
    "USB Vendor Name" = "Apple Inc."
    "USB Vendor Name" = "Apple Inc."
    "USB Vendor Name" = "Apple, Inc."

5.Boot ROM版本检测

如果在 Apple 原生硬件上运行,则返回值包含相应 Apple 产品的字母代码,例如,Mac mini 为“MM”,MacBook Pro 为“MBP”,MacBook Air 为“MBA”:
$ system_profiler SPHardwareDataType | grep "Boot ROM Version"
        Boot ROM Version: MM71.0232.B00
如果在虚拟机上运行,​​返回值可能包含虚拟机管理程序名称:
$ system_profiler SPHardwareDataType | grep "Boot ROM Version"
        Boot ROM Version: VirtualBox

6.检查系统完整性保护

最新版本的 macOS 具有系统完整性保护功能 (SIP)。如果沙箱使用未签名的内核扩展进行监控,则必须禁用 SIP 功能才能加载此类内核扩展。恶意软件可以检查 SIP 是否已启用。
使用的命令:
csrutil status