跳转至

内核模块和扩展

对手可能会修改内核以在系统启动时自动执行程序。可加载内核模块(LKM)是可以按需加载和卸载到内核中的代码片段。它们扩展了内核的功能,而无需重新启动系统。例如,一种类型的模块是设备驱动程序,它允许内核访问连接到系统的硬件。(引用: Linux Kernel Programming) 恶意使用时,LKM可以是一种内核模式Rootkit,以最高的操作系统权限(Ring 0)运行。(引用: Linux Kernel Module Programming Guide) LKM基于rootkit的常见功能包括:隐藏自身、选择性隐藏文件、进程和网络活动,以及日志篡改、提供认证的后门,并使非特权用户能够获得root访问权限。(引用: iDefense Rootkit Overview) 内核扩展,也称为kext,在macOS中用于加载功能,类似于Linux的LKM。由于内核负责执行安全性,并且内核扩展作为内核的一部分运行,因此kext不受macOS安全策略的约束。kext通过kextloadkextunload命令加载和卸载。kext需要使用开发者ID签名,该ID由Apple授予权限,允许其签名内核扩展。没有这些权限的开发者仍然可以签名kext,但除非禁用SIP,否则它们不会加载。如果启用了SIP,则在将kext添加到AuxKC之前会验证其签名。(引用: System and kernel extensions in macOS) 自macOS Catalina 10.15以来,内核扩展已被弃用,取而代之的是系统扩展。然而,kext仍然被允许作为“遗留系统扩展”,因为没有用于内核编程接口的系统扩展。(引用: Apple Kernel Extension Deprecation) 对手可以使用LKM和kext在系统上进行持久性和/或权限提升。在野外已经发现了一些示例,并且也有一些相关的开源项目。(引用: Volatility Phalanx2)(引用: CrowdStrike Linux Rootkit)(引用: GitHub Reptile)(引用: GitHub Diamorphine)(引用: RSAC 2015 San Francisco Patrick Wardle)(引用: Synack Secure Kernel Extension Broken)(引用: Securelist Ventir)(引用: Trend Micro Skidmap)