-
-
[原创][翻译]规避技术:macOS
-
发表于:
2021-6-8 10:59
9867
-
备注
原文地址:https://evasions.checkpoint.com/techniques/macos.html
原文标题:Evasions: macOS
更新日期:2021年6月8日
此文后期:根据自身所学进行内容扩充
因自身技术有限,只能尽自身所能翻译国外技术文章,供大家学习,若有不当或可完善的地方,希望可以指出,用于共同完善这篇文章。
目录
macOS沙盒检测方法
1. 硬件模型检测方法
2. 检查是否启用了超线程
3. 内存大小检测方法
4. I/O套件注册表检测方法
5. Boot ROM版本检测方法
6. 检查是否启用了系统完整性保护
识别标志
反制措施
macOS沙盒检测方法
大多数针对macOS的沙盒和虚拟环境检测方法都是基于使用 "sysctl "和 "ioreg "等外壳命令。我们没有提供代码样本块,而是展示了命令和它们的参数。不幸的是,由于Apple的软件许可政策,我们无法收集各种管理程序的命令输出。因此,我们尽可能比较物理机和虚拟机的命令输出。
1. 硬件模型检测方法
所使用的命令:
如果在本地Apple硬件上运行,返回值包含硬件的型号名称:
在虚拟化的硬件上,该值可能包含管理程序的名称:
这种技术在MacRansom恶意软件中出现过。如果命令输出不包含 "Mac "子串,恶意软件认为它是在虚拟机中运行。
2. 检查是否启用了超线程
2018年之前发布的大多数Apple硬件(MacBook、Mac mini)都启用了超线程。这意味着物理核心的数量等于逻辑核心的一半。然而,一些管理程序不提供改变逻辑核心数量的能力,逻辑核心数量总是等于物理核心数量。
所使用的命令:
在物理硬件上,该命令的输出值必须等于 "2"。这一技术在MacRansom恶意软件中出现过。
我们应该注意到,新硬件的超线程功能被禁用,例如,配备6核英特尔酷睿i7处理器的Mac mini。因此,这种方法应该被认为是过时的。
3. 内存大小检测方法
这种方法类似于用于PC的内存大小检测方法。当运行几个虚拟机时,每个虚拟机被分配少量的内存,而Apple物理硬件通常有超过4Gb的内存。
所使用的命令:
该命令以字节为单位返回RAM的大小,例如:17179869184。
4. I/O套件注册表检测方法
有几种方法可以使用I/O工具包注册表来检测虚拟机。
检查 "IOPlatformExpertDevice "注册表类
所使用的命令:
IOPlatformExpertDevice类的以下字段可以被检查,以检测一个虚拟机:
Field
Physical hardware example value
Virtual machine example value
VM detection rule
IOPlatformSerialNumber
"C07T40BYG1J2"
"0"
Equal to "0"
board-id
<"Mac-87C4F04823D6BACF">
<"VirtualBox">
Contains "VirtualBox", "VMware", etc.
manufacturer
<"Apple Inc.">
<"innotek GmbH">
Doesn't contain "Apple"
检查USB设备的供应商名称:
所使用的命令:
在原生的Apple硬件上的输出样本:
在虚拟化的硬件上,该值可能包含管理程序的名称:
通过检查命令输出是否包含管理程序名称,例如 "VirtualBox"、"VMware "等,可以检测到一个虚拟机。
另一个选择是用"-l "选项调用ioreg命令,使其显示所有对象的属性。输出应与已知的hypervisor名称进行核对,例如:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课