Linux内核模块基础知识

 什么是内核模块?

        内核是操作系统的中枢神经系统,控制着它所做的一切,包括管理硬件组件之间的交互和启动必要的 服务。内核在你看到的用户应用程序和运行所有东西的硬件(如 CPU,内存和硬盘驱动器)之间运行。
         Linux 是一个单片内核,可以添加内核模块。因此,可以在内核中添加和删除模块。内核有时需要更新, 这可能需要安装新的设备驱动程序(如视频卡,蓝牙设备或 USB 设备),文件系统驱动程序,甚至系统扩展。 必须将这些驱动程序嵌入到内核中才能完全正常运行。在某些系统中,要添加驱动程序,您必须重建、编 译和重新引导整个内核,但 Linux 能够在不经过整个过程的情况下向内核添加一些模块。这些模块称为可加 载内核模块或 LKM
        LKM 必须能够访问内核的最低级别,这使得它们成为骇客极易攻击的目标。一种称为 rootkit 的特殊类型的恶意软件通常通过这些 LKM 嵌入到操作系统的内核中。如果恶意软件嵌入内核,骇客就可以完全控制操作系统。
        如果骇客可以让 Linux 管理员将新模块加载到内核,那么骇客不仅可以获得对目标系统的控制权,而且因为他们在操作系统的内核级别运行,可以控制目标系统正在运行的进程,端口,服务,硬盘空间以及您 能想到的几乎任何其他内容。
         因此,如果骇客可以成功诱使 Linux 管理员安装其中嵌入了 rootkit 的视频或其他设备驱动程序,则骇客可以完全控制系统和内核。这是一些最阴险的 rootkit 利用 Linux 和其他操作系统的方式。

检查内核版本

了解内核的第一步是检查系统正在运行的内核。至少有两种方法可以做到这一点。首先,我们可以输 入以下内容:
        kali >uname -a
内核通过告诉我们,我们的操作系统正在运行的发行版是 linux kali,内核版本是5.9.1,它构建的架构是 x86_64 架构。它还告诉我们它具有对称多处理(SMP)功能(意味着它可以在具有多个核心或处理器的 机器上运行),并于 2020 10 29 日在 Debian 5.9.1上构建。根据构建中使用的内核和系统中的 CPU,您 的输出可能会有所不同。安装或加载内核驱动程序时可能需要这些信息,因此了解如何获取这些信息非常 有用。
获取这些信息以及其他一些有用信息的另一种方法是对/proc/version 文件使用 cat 命令,如下所示:
kali >cat /proc/version
在这里,你可以看到/proc/version 文件返回了相同的信息。

管理内核模块

        Linux 至少有两种方法来管理内核模块。较旧的方法是使用围绕 insmod suite-insmod 构建的一组命令代表插入模块,用于处理模块。第二种方法,使用 modprobe 命令。在这里,我们使用 insmod 套件中的 lsmod 命令列出内核中已安装的模块:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305383.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

活动回顾 (下) | 机器学习系统趋势研判,大咖金句汇总

作者:三羊、李宝珠、李玮栋、Yudi、xixi 编辑:李宝珠 在大模型时代的浪潮中,机器学习系统正经历着前所未有的变革。模型规模的急剧膨胀,让我们见证了 AI 能力的巨大提升,然而这种提升不仅为各个领域带来了新的机遇&…

Nginx直播服务器搭建及推拉流测试

文章目录 前言一、搭建 Nginx 直播服务器1、安装 Nginx 依赖2、下载并解压源码①、下载并解压 nginx-http-flv-module 直播模块源码②、下载并解压 Nginx 源码 3、编译安装4、配置 rtmp 服务①、添加 rtmp 服务②、验证配置 二、推流、拉流测试1、ffmepg 推流2、VLC 拉流 前言 …

C#学习笔记 - C#基础知识 - C#从入门到放弃 - C# Windows窗体技术及基础控件(二)

C# 入门基础知识 - C# Windows窗体技术及基础控件 第12节 Windows窗体技术及基础控件12.8 Label 控件12.9 Button 控件12.10 TextBox控件12.11 RichTextBox 控件12.12 Timer控件12.13 CheckBox 控件12.14 RadioButton 控件12.15 ComboBox 控件、ListBox 控件和CheckedListBox 控…

Python 小程序之动态二位数组

动态二位数组 文章目录 动态二位数组前言一、基本内容二、代码编写三、效果展示 前言 没想出啥好点子,这次就给大家写个小程序,动态二维数组吧。 一、基本内容 程序画一个二维的方格,然后里面填上1-10的随机数,每隔一秒更新新一…

Linux学习之制作静态库和动态库

写在前面: 我的Linux的学习之路非常坎坷。第一次学习Linux是在大一下的开学没多久,结果因为不会安装VMware就无疾而终了,可以说是没开始就失败了。第二次学习Linux是在大一下快放暑假(那个时候刚刚过完考试周)&#xf…

Python武器库开发-武器库篇之Git创建远程仓库和建立SSH key 免密登陆(三十七)

武器库篇之Git创建远程仓库和建立SSH key 免密登陆(三十七) Git是一种版本控制系统,用于跟踪文件的更改和协调多人开发项目。它可以记录文件的历史更改,协助多人协作开发,并提供分支管理功能。Git是一个分布式系统,意味着每个人在…

目标检测损失函数:IoU、GIoU、DIoU、CIoU、EIoU、alpha IoU、SIoU、WIoU原理及Pytorch实现

前言 损失函数是用来评价模型的预测值和真实值一致程度,损失函数越小,通常模型的性能越好。不同的模型用的损失函数一般也不一样。损失函数主要是用在模型的训练阶段,如果我们想让预测值无限接近于真实值,就需要将损失值降到最低…

Centos如何修改ssh端口

想必很大一部分的同学用的是centos服务器,对于默认的22端口存在一定的安全风险,所以今天我们一起看下如何修改ssh端口 一、什么是SSH SSH(Secure Shell)是一种安全的远程登录协议,它允许您通过网络远程连接到Linux系统…

关于Redis面试题

前言 之前为了准备面试,收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文:https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv Redis 是什么 全名:远程字典服务。这是一个开源的在内存中的数据结构存…

3 个月前被裁员了,心情跌落谷底,直到我看到了这本神书…

3个月前的某一天,正在愉快的打工,突然被喊去谈话,然后就被辞退了。。 加入了找工作的大军 然而,因为疫情,因为大专学历的我,找工作比以往都艰难了许多 很多,纯粹就是因为学历,都不…

Vue3-26-路由-useRouter 和 useRoute 两个API 的作用介绍

先来说说两个API 的作用 useRouter() : 返回的是项目中的 路由实例的对象 可以通过这个实例对象进行路由的逻辑跳转 useRoute() : 返回的是当前的 路由对象, 可以在当前路由对象中获取到路由名称、路由参数、路由路径等玩完整的路由信息。 写个案例看一下具体是什么…

如何本地部署Nextcloud结合cpolar搭建专属私有云盘远程访问(内网穿透)

文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…