需通过终端命令与系统报告工具确认macos中已加载kext及其签名状态:一、用sudo kextstat -l -k列出运行中kext;二、用kextstat -l -s及kextutil -t验证签名;三、通过“系统报告→软件→内核扩展”查看已安装未加载项;四、用systemextensionsctl list检查用户级system extension;五、用launchctl和ls排查launch agent/daemon中隐藏加载器。

如果您需要确认 macOS 系统中当前加载的内核扩展(kext)及其签名状态,以评估系统安全性或排查驱动兼容性问题,则需通过终端命令与系统报告工具获取实时加载信息。以下是查看系统扩展加载情况的具体操作步骤:
一、使用终端命令列出已加载的内核扩展
该方法直接调用系统内建工具 kextstat,可输出当前运行中所有已签名/未签名内核扩展的名称、版本、加载地址及依赖关系,适用于快速筛查第三方驱动。
1、打开终端(可在“应用程序 → 实用工具”中查找)。
2、输入以下命令并回车执行:sudo kextstat -l -k。
3、系统将提示输入管理员密码,输入后按回车;密码输入时无可见字符反馈,属正常现象。
4、终端将滚动显示全部已加载 kext 列表,其中第5列(kext-id)为扩展唯一标识符,第6列(kext-name)为扩展名称,含“com.apple.”前缀者为苹果官方扩展。
二、检查内核扩展的代码签名与完整性
该方法验证每个已加载扩展是否具备有效 Apple 签名及是否被系统信任,可识别绕过 Gatekeeper 的非法注入行为。
1、在终端中执行:kextstat -l -s,获取带签名状态的精简列表。
2、对特定扩展进一步验证,例如检查 com.intel.kext.FirmwareService,执行:kextutil -t /Library/Extensions/IntelFirmwareService.kext(路径需按实际扩展位置调整)。
3、若输出包含 Valid signature for... 且无“code object is not signed”报错,则表示签名有效。
4、如出现 signature verification failed 或 not loadable: invalid signature,表明该扩展未通过系统安全校验。
三、通过系统报告查看已安装但未加载的扩展
该方式可发现存在于磁盘但尚未被内核加载的扩展文件,常用于审计残留驱动或预装厂商软件。
1、点击屏幕左上角苹果菜单 ,选择“关于本机”。
2、在弹出窗口中点击“系统报告…”按钮。
3、在左侧边栏展开“软件”类别,点击“内核扩展”。
4、右侧主面板将列出所有已安装的 kext 条目,包括状态字段:Loaded(已加载)、Not Loaded(仅存在文件)、Invalid(签名失效或架构不匹配)。
四、扫描用户级系统扩展(System Extensions)
macOS Catalina 及之后版本中,传统 kext 已逐步被更安全的 System Extension 框架替代,此类扩展运行于用户空间,需单独检查。
1、在终端中执行:systemextensionsctl list。
2、输出分为三列:启用状态(Enabled)、团队 ID(Team ID)、扩展标识符(Identifier)。
3、状态为 activated 表示正在运行;disabled 表示已禁用但未卸载;not found 表示扩展包已删除但注册信息残留。
4、如需查看某扩展详细路径,执行:systemextensionsctl lookup
五、检查登录项与启动代理中隐藏的扩展加载器
部分恶意或兼容性工具会通过 Launch Agent 或 Launch Daemon 启动辅助进程,间接加载扩展或注入代码,需同步排查。
1、在终端中依次执行以下两条命令:
launchctl list | grep -i "kext\|extension"
ls -la ~/Library/LaunchAgents/ /Library/LaunchDaemons/ | grep -i "kext\|ext"
2、若输出中出现非苹果路径(如 /Users/xxx/Library/Application Support/…)且含 kext 加载关键词,则需人工核查对应 plist 文件内容。
3、使用 cat /path/to/com.example.loader.plist 查看其 ProgramArguments 字段是否调用 kextload 或 systemextensionsctl 命令。










