揭秘:恶意Linux内核模块的运作机制与防御

1 下载量 112 浏览量 更新于2024-09-03 收藏 44KB DOC 举报
"本文主要探讨了恶意的Linux内核模块的工作原理及应对策略。当面对已经加载了恶意内核模块的入侵事件时,传统的安全工具可能失去效力,因为内核空间的破坏会严重影响整个系统。文章介绍了Linux内核模块(LKM)的基本概念及其在系统动态扩展中的作用,同时也阐述了其在入侵检测中的挑战。恶意LKM,如knark,可以通过篡改系统调用表来改变操作系统的行为,实现对文件、进程甚至网络连接的隐藏。具体来说,knark修改了如getdents、kill、read、ioctl和execve等关键系统调用,以达到其隐蔽目的。文章还暗示作者开发了相应的工具来对抗这类恶意内核模块的攻击。" 在这篇文章中,核心知识点包括: 1. **Linux内核模块(LKM)**:LKM是Linux系统中用于动态添加或移除内核功能的机制,无需重启系统。它们允许系统管理员在运行时扩展内核功能,比如支持新的硬件或文件系统。然而,这种灵活性也为恶意攻击者提供了机会。 2. **系统调用表**:系统调用表是操作系统提供给用户空间程序访问内核服务的接口。恶意LKM可以篡改这个表,从而改变系统行为,使得常规的安全工具无法正常工作。 3. **knark恶意模块**:knark是一个示例,展示了如何利用LKM进行恶意活动。它通过修改系统调用表,实现对文件、进程和网络连接的隐藏,从而逃避检测。 4. **被修改的系统调用**: - `getdents`:用于获取目录项,knark可以隐藏文件和目录。 - `kill`:knark使用无效信号使进程“隐身”,防止被ps命令发现。 - `read`:knark可隐藏netstat中的入侵者连接。 - `ioctl`:knark可以隐藏网卡的混杂模式,并处理隐藏文件。 - `fork`和`execve`:knark可以隐藏新进程的创建,尤其是来自隐藏进程的子进程。 5. **应对策略**:文章提到作者开发了一些工具来应对这类恶意内核模块,但未详述具体工具的细节。 这些知识点揭示了网络安全的新层面,即内核级别的威胁,并强调了对内核安全和系统调用保护的重要性。同时,这也意味着安全防护需要超越用户空间,深入到内核空间,以检测和阻止恶意LKM的活动。