完全docker化的Linux内核调试环境

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/0xricksanchez/like-dbg

项目介绍

LIKE-DBG ( LI nux- KE rnel- De B u G ger ) 旨在 自动化 尝试设置 Linux 内核调试环境时的无聊步骤。 我开始深入内核开发研究,发现现有的解决方案不够可用。 因此,这是一种尝试,在人们甚至可以考虑尽可能轻松有趣地进行研究之前,先做好所有必要的准备工作。 从构建内核、在模拟环境中运行它到附加调试器的所有步骤都在 docker 容器中透明地完成,以将系统要求保持在最低限度。 目前,以下每个步骤都有一个专用的 docker 容器:

  • 构建内核
  • 创建与内核一起使用的根文件系统
  • 作为调试对象 启动内核+文件系统
  • 作为 调试器附加到内核

注意事项

由于这个项目还处于早期阶段,我预计事情会迅速发生变化,同时也会在此过程中引入重大变化。 需要改进的主要点是:

  • 超越真正的多架构 x86_64 支持 arm64
  • 扩展内核构建器不仅可以成功构建最新的™内核
  • 添加安卓内核支持
  • 添加(集成)测试
  • 进一步提升调试体验

特征

从好的方面来看,尽管处于早期阶段,但已经存在一些有用的功能:

  • 一般的:
    • 由于每个步骤的 dockerization,对主机系统的要求最低
    • 一个易于掌握的 configs/user.ini 配置,允许高度可定制的会话
      • 或者通过命令行为不同的调试设置提供不同的配置!
    • 专为处理 Linux 内核开发挑战而设计的 CTF 运行程序
      • ctf/misc 包含一些漂亮的脚本来帮助 CTF
    • 代码质量措施:
    • 与操作系统无关,这意味着它应该可以在以下平台上正常运行:
      • Debian/Ubuntu
      • Arch Linux/曼扎罗
      • 软呢帽
  • 内核构建器:
    • 多架构: x86_64arm64
    • gcc 在和 之间选择 clang 构建内核
    • 配置方式:
      • 通用模式,
      • syzkaller 模式,
      • 自定义模式,或
      • 提供可用的内核配置
    • 用于构建的细粒度版本控制:
      • 提交哈希
      • 发布标签(例如:5.10-rc)
      • 主要-次要补丁(例如:5.10.77)
    • 能够自动应用补丁文件
    • 添加自定义内核模块的基本能力
  • 根文件系统构建器:
    • debootstrap提供支持
    • 自动生成匹配内核架构的文件系统
    • 定制能力:
      • 文件系统中需要的包
      • 一切都基于 Debian 发行版
  • 调试对象:
    • QEMU提供支持
    • configs/*.ini 文件中自定义 QEMU 运行时选项。
  • 调试器:

要求

首先,您必须确保在系统中设置以下要求:

  • docker
  • tmux
  • python>=3.9
    • venv

建议不要以 root 用户身份运行它,例如为了在 VPS 上进行测试。 它可能工作得很好,但总的来说,我强烈建议创建一个专门的非 root 用户来放入 dockersudo 组中!

选修的

本节涵盖运行 LIKE-DBG不需要 的工具, 但在调试或编写 exploit 时拥有并提供大量帮助是很好的。

配置

微调内核调试体验是本项目的目标之一。 目前,所有可调选项都暴露在两个配置文件中: configs/system.iniconfigs/user.ini . 建议不要更改某些字段,因为它们主要是出于开发原因。 但是,所有根据您的需要自定义环境的内容都应该是不言自明的,因为它们都标有简短的注释。

用法

一旦您设置好编写/调整配置,使用取决于您的场景。 基于 configs/user.ini 配置的最简单的入门方法如下:

tmux -f .tmux.conf
python3 -m venv .like-dbg
source .like-dbg/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
# This checks out a kernel, builds it, creates a root file system and starts the debugger and debuggee eventually
./start_kgdb.py

自动创建的文件系统存在 2 个用户:

  • root 没有密码
  • user:user

这是为了让您可以轻松地从任一角度进行开发和利用。

扩展使用

# If you want to try a CTF challenge where you were given a (compressed) Linux Image and a root filesystem try:
./start_kgdb.py --ctf <Image> <RootFS>

# If you want to kill the current debugging session
./start_kgdb.py -k

# If you want to provide a custom 'user.ini' for a specific debugging setup
./start_kgdb.py -c <path_to_cfg> [other_args]

# If you want to test some partial functionality of LIKE-DBG
# Stage 1: Download Kernel
# Stage 2: Stage 1 & unpack Kernel
# Stage 3: Stage 2 & build Kernel
# Stage 4: Only build a root file system
# Stage 5: Stage 3+4 & start debuggee
./start_kgdb.py -p <stage_nr>

# Update all containers
./start_kgdb.py -u

例子

examples 子目录包含有关如何 LIKE_DBG 帮助您完成特定内核调试任务的示例。 每个示例都包含一个专用 README.md 的以及包含重现示例的必要信息。

展示

8951dba439223631

 

 

 

标签:工具分享