什么是内核模块?
内核是操作系统的中枢神经系统,控制着它所做的一切,包括管理硬件组件之间的交互和启动必要的 服务。内核在你看到的用户应用程序和运行所有东西的硬件(如 CPU,内存和硬盘驱动器)之间运行。
Linux 是一个单片内核,可以添加内核模块。因此,可以在内核中添加和删除模块。内核有时需要更新, 这可能需要安装新的设备驱动程序(如视频卡,蓝牙设备或 USB 设备),文件系统驱动程序,甚至系统扩展。 必须将这些驱动程序嵌入到内核中才能完全正常运行。在某些系统中,要添加驱动程序,您必须重建、编 译和重新引导整个内核,但 Linux 能够在不经过整个过程的情况下向内核添加一些模块。这些模块称为可加 载内核模块或 LKM。
LKM 必须能够访问内核的最低级别,这使得它们成为骇客极易攻击的目标。一种称为 rootkit 的特殊类型的恶意软件通常通过这些 LKM 嵌入到操作系统的内核中。如果恶意软件嵌入内核,骇客就可以完全控制操作系统。
如果骇客可以让 Linux 管理员将新模块加载到内核,那么骇客不仅可以获得对目标系统的控制权,而且因为他们在操作系统的内核级别运行,可以控制目标系统正在运行的进程,端口,服务,硬盘空间以及您 能想到的几乎任何其他内容。
因此,如果骇客可以成功诱使 Linux 管理员安装其中嵌入了 rootkit 的视频或其他设备驱动程序,则骇客可以完全控制系统和内核。这是一些最阴险的 rootkit 利用 Linux 和其他操作系统的方式。
检查内核版本
了解内核的第一步是检查系统正在运行的内核。至少有两种方法可以做到这一点。首先,我们可以输 入以下内容:
kali >uname -a
![](https://i-blog.csdnimg.cn/blog_migrate/4faac8c1ce7a25766e29c656db60f6fd.png)
内核通过告诉我们,我们的操作系统正在运行的发行版是 linux kali,内核版本是5.9.1,它构建的架构是 x86_64 架构。它还告诉我们它具有对称多处理(SMP)功能(意味着它可以在具有多个核心或处理器的
机器上运行),并于 2020 年 10 月 29 日在 Debian 5.9.1上构建。根据构建中使用的内核和系统中的 CPU,您
的输出可能会有所不同。安装或加载内核驱动程序时可能需要这些信息,因此了解如何获取这些信息非常
有用。
获取这些信息以及其他一些有用信息的另一种方法是对/proc/version 文件使用 cat 命令,如下所示:
kali >cat /proc/version
![](https://i-blog.csdnimg.cn/blog_migrate/aae670d08e76cc1d7cb9fe781fda6064.png)
在这里,你可以看到/proc/version 文件返回了相同的信息。
管理内核模块
Linux 至少有两种方法来管理内核模块。较旧的方法是使用围绕 insmod suite-insmod 构建的一组命令代表插入模块,用于处理模块。第二种方法,使用 modprobe 命令。在这里,我们使用 insmod 套件中的 lsmod
命令列出内核中已安装的模块:
![](https://i-blog.csdnimg.cn/blog_migrate/eb3d46984ce75a0312063abebfebbc81.png)