mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-30 08:30:57 +00:00
5.2 KiB
5.2 KiB
macOS内核扩展
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?想要在HackTricks上宣传你的公司吗?或者想要获得PEASS的最新版本或下载HackTricks的PDF吗?请查看订阅计划!
- 探索我们独家的PEASS家族,我们的NFTs收藏品
- 获得PEASS和HackTricks的官方商品
- 加入💬 Discord群或Telegram群,或在Twitter上关注我🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。
基本信息
内核扩展(Kexts)是具有**.kext
扩展名的包**,直接加载到macOS的内核空间中,为主要操作系统提供额外的功能。
要求
显然,加载内核扩展是一项强大的功能。以下是加载内核扩展所需满足的要求:
- 在恢复模式下,内核扩展必须被允许加载:
- 内核扩展必须使用内核代码签名证书进行签名,该证书只能由Apple颁发。Apple将详细审查公司和所需原因。
- 内核扩展还必须经过公证,Apple可以检查其中是否存在恶意软件。
- 然后,root用户可以加载内核扩展,包中的文件必须属于root用户。
- 在加载过程中,包必须准备在受保护的非根目录位置:
/Library/StagedExtensions
(需要授予com.apple.rootless.storage.KernelExtensionManagement
权限) - 最后,在尝试加载时,用户将收到确认请求,如果确认,计算机必须重新启动以加载它。
加载过程
在Catalina中是这样的:值得注意的是,验证过程发生在用户空间中。然而,只有具有**com.apple.private.security.kext-management
权限的应用程序才能请求内核**加载扩展:kextcache、kextload、kextutil、kextd、syspolicyd
kextutil
命令行工具启动验证过程以加载扩展
- 通过Mach服务与**
kextd
**通信
- **
kextd
**将检查多个事项,如签名
- 通过与**
syspolicyd
**通信,检查是否可以加载扩展
syspolicyd
将向用户询问是否先前未加载扩展
syspolicyd
将结果告知kextd
- **
kextd
**最终可以通知内核加载扩展
如果kextd不可用,kextutil可以执行相同的检查。
参考资料
- https://www.makeuseof.com/how-to-enable-third-party-kernel-extensions-apple-silicon-mac/
- https://www.youtube.com/watch?v=hGKOskSiaQo
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?想要在HackTricks上宣传你的公司吗?或者想要获得PEASS的最新版本或下载HackTricks的PDF吗?请查看订阅计划!
- 探索我们独家的PEASS家族,我们的NFTs收藏品
- 获得PEASS和HackTricks的官方商品
- 加入💬 Discord群或Telegram群,或在Twitter上关注我🐦@carlospolopm。
- 通过向 hacktricks repo 和 hacktricks-cloud repo 发送PR来分享你的黑客技巧。