Rootkit攻击与度量对象提取
文章目录
Rootkit攻击
实验环境搭建
选择Linux 5.10版本作为实验环境,首先确认内核版本。
uname -r
Rootkit简介
- Rootkit 主要任务是隐藏并长期驻留在感染机器上的从事各类恶意活动,达到高隐藏高持久化目的
- 根据运行时权限可以划分为内核态和用户态
- 内核态 Rootkit 具有与操作系统相同的权限,在内核级别运行,通常作为设备驱动程序或可加载模块加载到目标设备中。内核态 Rootkit 很难开发,因为源代码中的任何错误都会影响目标系统的稳定性,这将是发现恶意程序的最直接表现。
- 用户态 Rootkit 以与大多数应用程序具有相同的运行权限。它们可以拦截系统调用并替换 API 或劫持应用程序返回的值,以获得对设备的控制。用户态 Rootkit 所需的前置知识和复杂度,与内核态Rootkit相比更简单,更容易开发,因此常用于大范围攻击。
- 功能有获得远程访问、窃取数据、各类隐藏功能、创建永久root权限后门、隐私监控、劫持或关机安全程序
- 当前主要的Rootkit检测的方法包括但不限于以下几种类型,基于Rootkit运行的效果进行检测、静态文件特征检测、动态行为分析检测、数据完整性检测。它们各有利弊
- 当前主流Rootkit检测项目有Chkrootkit、Rkhunter、Kjackal、Tyton、Elkeid、stmichael-lkm、Qiling
Rootkit测试
选择内核态 LKM Rootkit Diamorphine进行测试。项目链接:https://github.com/m0nad/Diamorphine。对于源码的解释可见(21条消息) Diamorphine rootkit的特性与原理分析_guoguangwu的博客-CSDN博客。如果需要更详细的了解可以参考(21条消息) Linux Rootkit躲避内核检测_dog250的博客-CSDN博客
Diamorphine是用于Linux内核2.6.x/3.x/4.x/5.x和ARM64的LKM rootkit
安装Diamorphine
验证内核是否为2.6.x/3.x/4.x/5.x
uname -r
克隆存储库
git clone https://github.com/m0nad/Diamorphine
进入文件夹
cd Diamorphine
编译
make
进入 root 权限
sudo su
加载模块
insmod diamorphine.ko
测试Diamorphine
已知的功能如下
- 当加载的时候,模块是不可见的(lsmod 看不到)
- 通过发送31信号,可以达到隐藏和不隐藏进程的目的
- 通过发送63信号,可以隐藏和不隐藏该内核模块
- 通过发送64信号(给任何进程),可以将用户变成root
- 如果文件或者目录以MAGIC_PREFIX开始,将会隐藏
初始加载时:
lsmod | grep -i diamorphine
发现模块不显示,使用信号63使其显示
kill -63 0
lsmod | grep -i diamorphine
使用信号31
ps aux | gerp [任意进程号]
kill -31 [任意进程号] # 实现对进程的隐藏
ps aux | gerp [任意进程号] # 发现该进程被隐藏
kill -31 [任意进程号] #解除隐藏
使用信号64,在用户态测试
whoami #输出为用户
kill -64 0
whoami #输出为root
文件或者目录以MAGIC_PREFIX开始,其中MAGIC_PREFIX为“diamorphine_secret”
卸载Diamorphine
模块开始时不可见,若要删除,需要使其可见
kill -63 0
删除模块root权限
rmmod diamorphine
度量对象提取
阅读源码可知,该Rootkit通过挟持系统调用进行攻击,故需要提取整张系统调用表进行度量。
#保存原调度地址,用于后续恢复
#