【笔记】LFI测试环境配置

253 阅读3分钟

摘要

LFI(Linux Fault Injection)是Linux内核提供的一个故障注入工具,想要测试该工具效果需要通过指定方式编译并替换内核。内容源自本人23年10月的一部分实习工作,网络资料多为官方文档的翻译,缺少对LFI测试环境配置的完整教程,故将该笔记上传分享,希望各位少踩坑。

测试设备

设备:机械革命mini主机
CPU:R7-7735HS,8核16线程
显卡:核显AMD Radeon 680M
操作系统:Windows 11
虚拟机软件:Visual Box 7.0,Visulal Box 7.0 Extension Pack(选装)
虚拟机环境:Ubuntu 22.04.3 LTS,内核版本6.2.0-34
测试内核版本:Linux 6.5.7 stable

虚拟机配置

  1. 下载Ubuntu镜像,需约5G空间
  2. 虚拟机硬件设置,根据引导进行,此处注意勾选跳过自动安装 01.png
  3. 此次注意勾选启用EFI,否则后面可能无法使用NVMe调试
    02.png
  4. 空间分配建议预留空间=1G<EFI引导>+2*虚拟机内存G<swap空间>+50G<内核编译中间文件>
  5. 检查无误点击完成即可,建议预先分配全部空间,以免出现混乱 03.png
  6. (选)点击设置-->存储,第二个控制器名称为SATA,型号默认为ACHI。如果需要进行NVMe测试,可以在此时将型号改为NVMe 04.png

Ubuntu桌面系统安装

  1. 点击“启动”打开虚拟机,根据引导进行安装。语言最好选择English,避免中文乱码导致不兼容问题。

  2. 选择Minimal Installation,下一步安装类型选择Something else

  3. 空间分配规则,boot loader选择efi所在的Device 05.png | Use as | Primary or Logical | Size | Mount point | | ------ | ------------------ | -------- | ----------- | | efi | Logical | 1024 MB | 无 | | swap | Logical | 16384 MB | 无 | | ext4 | Primary | 所有剩余空间 | / |

  4. 时区选上海,创建用户名和主机名,开始安装,完成后点击重启选项。

  5. 找到Software&Updates(蓝色A图标),更改Download from(下载源)为国内网站。然后找到Software Updater(黑色A图标)更新软件。 06.png

编译更换内核

  1. 安装依赖
sudo apt install libncurses5-dev openssl libssl-dev build-essential pkg-config \
libc6-dev bison flex libelf-dev zlib1g-dev minizip libidn11-dev dwarves
  1. 将压缩包解压到一个较少使用的文件夹中,避免误删除。解压后进入执行
make menuconfig
  1. 输入/,搜索lkdtm,置为y。输入/,搜索所有包含notifier_error_inject,全部置为y。输入/,搜索所有包含 fault_inject的选项位置,全部置为y,基本都在Kernel hacking>Kernel Testing and Converge里面。 !!!必须是显示*,如果是M或空不行!!!

  2. 完成后选择save写入磁盘,退出menuconfig后运行

gedit .config
  1. 修改如下,保存退出

CONFIG_MODULE_SIG=n CONFIG_SYSTEM_TRUSTED_KEYS="" CONFIG_SYSTEM_REVOCATION_KEYS=""

  1. 运行如下指令进行编译
make -j$(nproc) && make modules
  1. 安装
sudo make modules_install
sudo make install
  1. 重启,打开终端运行下面指令,如果显示的是要安装的版本号则成功。
uname -r