计算机系统分层设计与Rootkit概念及实现
💻 计算机系统分层设计 与 🐛Rootkit 概念及实现
🧪 实验问题 1
简述 💻 计算机系统 中的分层设计理念及相关应用举例
🎯 实验目的
- 理解 💻 计算机系统 分层设计理念及其重要性。
- 学习 分层设计 在 💻 计算机系统 中的典型应用。
📝 实验内容
分层设计 是一种将复杂系统划分为若干层次的设计方法,每层专注于特定的功能或抽象级别,向上提供服务,向下请求服务。这种设计理念使得系统模块化、易于维护和扩展。
分层设计的特点:
- 模块化:每一层可以独立开发和测试。
- 易于扩展:新增功能仅需在相应层中进行。
- 维护性强:局部修改不会影响其他层。
典型应用:
操作系统:
- 🖥️ 操作系统 采用分层设计,从硬件到用户程序通常分为硬件层、内核层、系统调用接口层、用户层等。
- 实例:📂 文件系统 位于内核层,它抽象出文件管理功能,向上层屏蔽了硬件存储设备的细节。
网络协议栈:
- 🌐 OSI 七层模型 是网络通信领域的分层设计典范,将通信过程划分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
- 实例:📨 HTTP 位于应用层,它依赖于传输层(如 📦 TCP 协议)进行数据传输。
🧪 实验问题 2
简述 🐛 Rootkit 的相关定义,以及 🐛 Rootkit 的类型
🎯 实验目的
- 掌握 🐛 Rootkit 的概念及特点。
- 理解 🐛 Rootkit 的分类及其应用场景。
📝 实验内容
🐛 Rootkit 定义:
Rootkit 是一种具有高隐蔽性的软件工具,通常用于隐藏自身或其他恶意活动。它常与 🐎 木马、🔙 后门 等恶意程序结合,通过修改操作系统的核心部分达到隐藏和长期驻留的目的。
🐛 Rootkit 特点:
- 🔍 高隐蔽性:隐藏 📂 文件、📋 进程、📡 端口 等。
- 🔄 高持久性:通过多种手段维持对系统的控制权。
- ⚠️ 低检测率:传统杀毒软件难以发现。
🐛 Rootkit 类型:
用户态 Rootkit:
- 运行在用户空间。
- 替换系统 API 或劫持系统调用返回值。
- 应用场景:💸 大面积勒索或挖矿木马。
内核态 Rootkit:
- 运行在内核空间。
- 修改系统内核数据结构或挂钩内核函数。
- 应用场景:高级持续性威胁(APT)。
硬件态 Rootkit:
- 植入硬件层或引导扇区。
- 在系统启动前获得控制权。
- 应用场景:高隐蔽性、定向攻击。
🐛 Rootkit 的常见隐藏技术:
程序替换:
- LD_PRELOAD:通过预加载动态链接库,直接替换原始程序。
- Ring3:在用户空间执行,属于用户态 Rootkit 的一种常用方法。
端口隐藏:
- eBPF:通过 kprobes/uprobes/tracepoint 等操作在内核中插入钩子,以隐藏特定的端口。
- Netfilter Hook:使用 Netfilter 框架的钩子功能来过滤特定网络数据包,隐藏端口信息。
网络连接隐藏:
- VFS Hook:Hook
tcp4_seq_show
函数,过滤/proc/net/tcp
目录中特定内容,隐藏特定的网络连接。 - eBPF:通过在内核中设置钩子来过滤网络连接。
- Netfilter Hook:Hook Netfilter Callback Function Register,拦截网络数据包,隐藏相关连接信息。
- VFS Hook:Hook
进程隐藏:
- VFS Hook:通过 Hook
filldir64/readdir
函数,过滤/proc/PID
目录中文件内容,从而隐藏进程。 - Syscall Hook:通过 Hook
Sys_getdents
/Sys_getdents64
系统调用函数,隐藏/proc/PID
目录中文件信息。 - eBPF:在内核中设置 tracepoint 钩子,过滤操作,从而隐藏进程。
- VFS Hook:通过 Hook
文件隐藏:
- VFS Hook:Hook
filldir64/readdir
函数,过滤特定目录中的文件。 - eBPF:通过在内核设置 tracepoint 钩子,隐藏文件内容。
- VFS Hook:Hook
内核模块隐藏:
- 模块链表操作:
- 通过修改
kernel module
链表结构,将目标模块从链表中移除,从而实现隐藏。 - Hook
list_del_init
函数或通过kobject
操作来修改内核模块链表结构,使模块不被显示。
- 通过修改
- 模块链表操作:
这些技术手段通过对内核或用户空间的相关接口进行劫持或修改,能够有效地实现对📋 进程、📡 端口、📂 文件等系统资源的隐藏,达到了 🐛 Rootkit 的高隐蔽性要求。
🧪 实验问题 3
通过资料检索,了解 🐛 Rootkit 的具体实现,并尝试实现一个简单的 🐛 Rootkit
📝 实验名称
🐛 Rootkit 实验与提权演示
🎯 实验目的
通过本次实验,掌握 🐛 Rootkit 的基本使用方法,学习如何在 🐧 Linux 系统中利用 🐛 Rootkit 实现 📋 进程隐藏、内核模块隐藏以及普通用户提权的操作。
🖥️ 实验环境
- 操作系统: 🐧 CentOS 7.9
- 🐛 Rootkit 工具: Diamorphine
📝 实验步骤
1. 环境准备
(1) 克隆 Diamorphine 代码库
使用如下命令克隆 Diamorphine 的代码库:
1 | git clone https://github.com/m0nad/Diamorphine |

(2) 进入目录并编译模块
进入克隆的 Diamorphine 目录,使用 make
命令进行编译:
1 | cd Diamorphine |

如果缺少与当前内核匹配的头文件和构建工具,运行以下命令:
1 | sudo yum groupinstall "Development Tools" -y |
(3) 加载内核模块(as root)
将编译后的模块加载到内核中:
1 | insmod diamorphine.ko |

2. 内核模块隐藏验证
(1) 验证内核模块是否隐藏
使用 lsmod
命令列出当前加载的所有内核模块,检查是否能看到 Diamorphine 模块:
1 | lsmod |
由于 Diamorphine 模块具有隐藏功能,此时不会显示在列表中。

(2) 显示隐藏的模块
要显示被隐藏的 Diamorphine 模块,可以发送 kill -63
信号:
1 | kill -63 0 |
再次运行 lsmod
,可以看到 Diamorphine 模块显示在列表中。

3. 隐藏用户态进程
(1) 创建一个虚拟进程
通过运行以下命令创建一个虚拟进程:
1 | sleep 1000 & |

(2) 隐藏进程
要隐藏进程,可以使用 kill -31
命令,指定需要隐藏的进程 ID:
1 | kill -31 <pid> |
运行 ps
命令查看,进程将不再显示。

(3) 取消隐藏进程
使用相同的 kill -31
命令来取消隐藏该进程:
1 | kill -31 <pid> |
此时再次运行 ps
命令,可以看到该进程重新显示。

4. 普通用户提权至 root
(1) 切换至普通用户并查看权限
首先,切换到普通用户,例如 moyuan
,并查看当前用户权限:
1 | su - moyuan |
默认情况下,普通用户是没有 root 权限的。

(2) 提权至 root
使用 Diamorphine 的 kill -64
信号来为普通用户授予 root 权限:
1 | kill -64 0 |
执行上述命令后,再次运行 whoami
命令,结果将显示用户已被提升为 root。

5. 实验结果
- 实验结果: 通过 Diamorphine 工具,成功实现了内核模块和用户态进程的隐藏,以及普通用户提权至 root 的操作。
- 总结: 本次实验演示了 🐛 Rootkit 工具的强大功能,包括隐藏内核模块、隐藏用户进程以及普通用户提权等。在安全研究中,这些功能展示了如何在获得系统最高权限后维持控制权。但也要意识到,这类工具滥用可能对系统安全构成巨大威胁。
6. 注意事项与学习体会
- 🛠️ 工具的使用应与原理结合: 在学习过程中,理解工具背后的工作原理尤为重要,只有如此才能做到举一反三。
- ⚠️ 保持警惕与责任感: 🐛 Rootkit 等工具在安全领域有其研究价值,但使用时需保持审慎,确保不会对他人或公共系统造成不良影响。
- 📈 工具不断更新: 安全工具和技术不断更新,掌握基础原理并善于总结经验,是保持技术先进性的关键。
通过本次实验,我对 🐛 Rootkit 的原理及其在 🐧 Linux 系统中的应用有了更深的理解,也更深刻地认识到了系统安全的重要性。
实验总结
实验收获:
- 理解了 💻 计算机系统分层设计的理念及应用。
- 掌握了 🐛 Rootkit 的定义、分类及应用场景。
- 通过实践学习了 🐧 Linux 内核模块的开发流程,初步实现了一个简单 🐛 Rootkit。
注意事项:
- 🐛 Rootkit 开发涉及较高权限操作,存在风险,请勿用于非法用途。
- 在实际环境中使用内核模块时,应充分测试以避免系统崩溃。
未来改进:
- 学习更多高级劫持技术,如虚拟📁文件系统劫持。
- 研究 🐛 Rootkit 的检测和防御方法,增强系统🛡️安全性。