### 内核 - 1 LKM 内核模块 #### 1. 链路定位 * 在整册链路中的位置:Ring 0 最高特权层,本地提权与逃逸的终点。 * 作用:理解模块如何在内核态直接触碰系统调用表与内核数据结构。 #### 2. 前置知识 * 用户态 / 内核态边界与系统调用入口。 * `init_module`/`delete_module` 两个管理调用。 * `sys_call_table` 系统调用表概念。 #### 3. 技术原理 * LKM(可加载内核模块)经 `init_module` 装入、`delete_module` 卸载,装入后运行在 Ring 0,拥有内核全部权限。典型滥用方向:改写 `sys_call_table` 中某项指针做系统调用 Hook、篡改进程链表隐藏进程、Hook 文件操作过滤枚举。模块自身缺陷(输入校验缺失)也会被用户态畸形输入触发,导致整机崩溃。 * 【配置缺陷】未开内核随机化、未限制模块加载、设备文件权限过宽、未开 seccomp。【源码漏洞】驱动输入校验缺失。 * 系统调用陷入是用户态进入内核态的受控通道:调用号