Chinaunix首页 | 论坛 | 博客
  • 博客访问: 966863
  • 博文数量: 403
  • 博客积分: 27
  • 博客等级: 民兵
  • 技术积分: 165
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-25 22:20
文章分类

全部博文(403)

文章存档

2016年(3)

2015年(16)

2014年(163)

2013年(222)

分类: LINUX

2013-05-20 22:01:53

原文地址:内核后门 作者:zyd_cu

如果在编写内核源代码时给内核留下后门,则你可以很容易的利用,则可轻易的使用模块实现一些扩展功能(实现一些跟内核相关的应用或是出于攻击性目的的扩展)。

例如:在read系统调用的实现中,你留下了后门:

read_write.c中,定义了函数指针void (backdoor*)(size_t *count) = NULL;

并使用EXPORT_SYMBOL带出符号backdoor

sys_read中加入如下代码:

if(backdoor != NULL)
         backdoor(&count); //
这里的countsys_read的最后一个参数

在内核模块中,你可以实现自己的后门函数,并将backdoor指针指向该函数,从而实现扩展的功能;

extern void (backdoor*)(size_t *count);
void my_backdoor(size_t *count)
{
    *count = 0;
}

int mybackdoor_init()
{
    backdoor = my_backdoor;
    return 0;
}

void mybackdoor_exit()
{
    backdoor = NULL;
}


则在模块加载之后你所有的read操作将读取不倒任何数据,因为count在系统调用执行的过程中被改为0

同样,你可以通过该方法实现一些其他的功能,如统计网络数据包等,但前提是你清楚内核的执行流,知道在哪个地方添加后门。


阅读(800) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~