首页
社区
课程
招聘
[原创][翻译]规避技术:macOS
2021-6-8 10:59 8980

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

2021-6-8 10:59
8980

备注
原文地址: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"

"0"

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等解决方案,而不是虚拟化。此外,应该使用签名的内核扩展。



[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞3
打赏
分享
最新回复 (2)
雪    币: 200
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
冷血david 2021-6-10 21:27
2
0
收藏了,等更新,一直想看mac的这类文章
感谢楼主
雪    币: 1140
活跃值: (266)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_Chao 2021-7-24 00:00
3
0
感谢楼主
请问有没有MacOS内核编程的
游客
登录 | 注册 方可回帖
返回