T1547.006: 内核模块和扩展

持久化

摘要

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

来源归属

来源:MITRE ATT&CK · 置信度:high

平台

  • macOS
  • Linux

战术

持久化

参考来源