4

[原创][翻译]规避技术:macOS

 3 years ago
source link: https://bbs.pediy.com/thread-268004.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
[原创][翻译]规避技术:macOS-编程技术-看雪论坛-安全社区|安全招聘|bbs.pediy.com

备注
原文地址: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. 硬件模型检测方法
所使用的命令:

sysctl -n hw.model

如果在本地Apple硬件上运行,返回值包含硬件的型号名称:

$ sysctl -n hw.model
Macmini8,1

在虚拟化的硬件上,该值可能包含管理程序的名称:

$ sysctl -n hw.model
VMware7,0

这种技术在MacRansom恶意软件中出现过。如果命令输出不包含 "Mac "子串,恶意软件认为它是在虚拟机中运行。

2. 检查是否启用了超线程
2018年之前发布的大多数Apple硬件(MacBook、Mac mini)都启用了超线程。这意味着物理核心的数量等于逻辑核心的一半。然而,一些管理程序不提供改变逻辑核心数量的能力,逻辑核心数量总是等于物理核心数量。
所使用的命令:

echo $((`sysctl -n hw.logicalcpu`/`sysctl -n hw.physicalcpu`))

在物理硬件上,该命令的输出值必须等于 "2"。这一技术在MacRansom恶意软件中出现过。

我们应该注意到,新硬件的超线程功能被禁用,例如,配备6核英特尔酷睿i7处理器的Mac mini。因此,这种方法应该被认为是过时的。

3. 内存大小检测方法
这种方法类似于用于PC的内存大小检测方法。当运行几个虚拟机时,每个虚拟机被分配少量的内存,而Apple物理硬件通常有超过4Gb的内存。
所使用的命令:

sysctl -n hw.memsize

该命令以字节为单位返回RAM的大小,例如:17179869184。

4. I/O套件注册表检测方法
有几种方法可以使用I/O工具包注册表来检测虚拟机。
检查 "IOPlatformExpertDevice "注册表类
所使用的命令:

ioreg -rd1 -c IOPlatformExpertDevice

IOPlatformExpertDevice类的以下字段可以被检查,以检测一个虚拟机:

Field

Physical hardware example value

Virtual machine example value

VM detection rule

IOPlatformSerialNumber

"C07T40BYG1J2"

Equal to "0"

board-id

<"Mac-87C4F04823D6BACF">

<"VirtualBox">

Contains "VirtualBox", "VMware", etc.

manufacturer

<"Apple Inc.">

<"innotek GmbH">

Doesn't contain "Apple"

检查USB设备的供应商名称:
所使用的命令:

ioreg -rd1 -c IOUSBHostDevice | grep "USB Vendor Name"

在原生的Apple硬件上的输出样本:

$ ioreg -rd1 -c IOUSBHostDevice | grep "USB Vendor Name"
"USB Vendor Name" "Apple Inc."
"USB Vendor Name" "Apple Inc."
"USB Vendor Name" "Apple, Inc."

在虚拟化的硬件上,该值可能包含管理程序的名称:

$ ioreg -rd1 -c IOUSBHostDevice | grep "USB Vendor Name"
"USB Vendor Name" "VirtualBox"
"USB Vendor Name" "VirtualBox"

通过检查命令输出是否包含管理程序名称,例如 "VirtualBox"、"VMware "等,可以检测到一个虚拟机。
另一个选择是用"-l "选项调用ioreg命令,使其显示所有对象的属性。输出应与已知的hypervisor名称进行核对,例如:

ioreg -l | grep -i -c -e "virtualbox" -e "oracle" -e "vmware"

上面的命令计算了ioreg输出中各种管理程序名称的出现次数。如果出现的次数大于0,则系统很可能是虚拟化的。

5. Boot ROM版本检测方法
所使用的命令:

system_profiler SPHardwareDataType | grep "Boot ROM Version"

如果在原生Apple硬件上运行,返回值包含相应Apple产品的字母代码,例如,"MM "代表Mac mini,"MBP "代表MacBook Pro,"MBA "代表MacBook Air:

$ system_profiler SPHardwareDataType | grep "Boot ROM Version"
Boot ROM Version: MM71.0232.B00

如果在虚拟机上运行,返回值可能包含管理程序名称:

$ system_profiler SPHardwareDataType | grep "Boot ROM Version"
Boot ROM Version: VirtualBox

这种方法在OceanLotus恶意软件中实现,如下所示:

system_profiler SPHardwareDataType 2>/dev/null awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}' 2>/dev/null

6. 检查是否启用了系统完整性保护
最新版本的macOS有系统完整性保护功能(SIP)。如果一个沙盒使用非签名的内核扩展来进行监控,那么必须禁用SIP功能来加载这种内核扩展。恶意软件可能会检查SIP是否被启用。
所使用的命令:

csrutil status

该命令返回SIP状态,例如。“System Integrity Protection status: enabled.”  #系统完整性保护状态:启用

识别标志
在检测到的规避技术的数量和假阳性率之间存在着一种权衡。如果我们想尽可能多地检测到使用规避技术的企图,我们应该使用范围广泛的签名。如果一个进程是用以下命令行之一创建的,这表明一个应用程序正试图使用一种规避技术:

sysctl -n hw.model
sysctl -n hw.logicalcpu
sysctl -n hw.physicalcpu
sysctl -n hw.memsize
ioreg -rd1 -c IOPlatformExpertDevice
ioreg -rd1 -c IOUSBHostDevice
ioreg -l
system_profiler SPHardwareDataType
csrutil status

然而,上述命令既可用于执行规避技术,也可用于收集系统信息。为了减少假阳性检测率,可以使用特定的恶意软件签名,例如:

echo $((`sysctl -n hw.logicalcpu`/`sysctl -n hw.physicalcpu`))

Apple的软件许可政策不允许在Apple原厂硬件以外的硬件上模拟macOS。它也不允许在一台主机上运行两个以上的虚拟机。因此,我们建议使用DeepFreeze等解决方案,而不是虚拟化。此外,应该使用签名的内核扩展。
反制措施
Apple的软件许可政策不允许在Apple原厂硬件以外的硬件上模拟macOS。它也不允许在一台主机上运行两个以上的虚拟机。因此,我们建议使用DeepFreeze等解决方案,而不是虚拟化。此外,应该使用签名的内核扩展。

第五届安全开发者峰会(SDC 2021)议题征集正式开启!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK