研究 Windows 安全——无论是漏洞挖掘还是红蓝对抗,对 SysInternals Suite 都不会陌生。这套软件包提供了丰富的系统分析诊断功能,大部分还是图形界面程序。
但多年以来 macOS 一直鲜有与之能对标的软件包——也许系统自带的各种命令和工具也能完成同等的任务,比如:
nettop - TcpView
launchctl dumpstate - Autoruns
Console.app - DebugView
sudo fs_usage - FileMon (ProcMon)
除了系统自带的,*os Internals 的作者 Jonathan Levin 也发布了一些工具,不过他近几年不怎么对 Darwin 系列系统感兴趣了,一些工具的维护也就暂停或者转交给其他人。
然而这些软件和 Windows 相比数量上还是差了不少。大概是因为 macOS 特别安全,不需要这种工具
今天搬运的开源项目是来自安全公司 Red Canary, Inc. 的 Red Canary Mac Monitor,功能上类似 Windows 的 SysMon。
项目地址
https://github.com/redcanaryco/mac-monitor
这个项目基于系统的 Endpoint Security 框架,可以记录文件读写、进程创建等事件,也就是对应如下的列表:
在真实系统上产生的事件日志很多,软件还允许按照时间类型、路径、是否来自系统自带程序等进行过滤。
项目在 GitHub 上提供了编译好的 pkg 包,按照说明文档中的截图允许 System Extension,并开启 Full Disk Access 即可。
友情提示:下载执行网上的程序需要小心,本文仅搬运开源项目资讯,不对项目代码的安全性负责。
此外 GitHub 上还有一个类似 TCPView 的图形应用 Sloth,有空的话以后我会另外写一篇介绍。
关于 Endpoint Security
在 macOS Catalina 之后,为了废弃第三方内核扩展,苹果先后推出了 Endpoint Security 和 DriverKit 框架。
此前为了实现类似 ProcMon 的监控功能,第三方软件通常使用 Kernel Extension(内核扩展)。苹果看上去对第三方代码的稳定性和性能都不放心,决定将这些功能迁移到用户态实现。于是便有了 Endpoint Security 框架。
Endpoint Security 顾名思义就是提供给安全解决方案用的 API。通过这些日志可以实现目前流行的两类安全产品,DLP(数据防泄漏)和 EDR(终端检测与响应)。
如果有自研类似产品的需求,这个项目也是一个很好的参考。
任何代码在引入功能的同时也可能产生漏洞,安全框架也不例外。Endpoint Security 在早期版本也出过本地权限提升漏洞,例如 CVE-2019-8805。
这是一个典型的 XPC 接口访问控制漏洞,由于遗漏了对 XPC 客户端的 entitlement 的检查,任何第三方程序都可以滥用这个接口,让 OSSystemExtensionPointListener 服务执行 SMJobSubmit 提交任务到 launchd。恶意代码可以指定以 root 权限执行命令。
作者在 OBTS v3 上详细介绍了这个框架的基本知识和漏洞成因分析:
幻灯片 https://objectivebythesea.org/v3/talks/OBTS_v3_sKnight.pdf
演讲录像 https://www.youtube.com/watch?v=jaVkpM1UqOs
参考资料
Sysinternals Suite
https://learn.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite
CVE-2019-8805 - A macOS Catalina privilege escalation
https://knight.sc/reverse%20engineering/2019/10/31/macos-catalina-privilege-escalation.html
Red Canary Mac Monitor
https://github.com/redcanaryco/mac-monitor