加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 通过直接读取内核内存来删除隐藏的内核模块?

发布时间:2020-12-13 23:23:04 所属栏目:Linux 来源:网络整理
导读:是否可以通过直接读取内核内存来找到隐藏的内核模块? 通过隐藏我的意思是从内核模块列表中删除自己的LKM. 如果是这样,我应该期待什么样的结构,或者我应该读什么文件? 解决方法 在@Eugene之后,我找到了一种直接读取内核内存以找到所谓的不那么聪明的隐藏模
是否可以通过直接读取内核内存来找到隐藏的内核模块?

通过隐藏我的意思是从内核模块列表中删除自己的LKM.

如果是这样,我应该期待什么样的结构,或者我应该读什么文件?

解决方法

在@Eugene之后,我找到了一种直接读取内核内存以找到所谓的不那么聪明的隐藏模块的方法:只需从procfs透视图和sysfs透视图中比较模块:

static int detect_hidden_mod_init(void)
{
    char *procfs_modules[MAX_MODULE_SIZE];
    char *sysfs_modules[MAX_MODULE_SIZE];
    int proc_module_index = 0,sys_module_index = 0;

    struct module *mod;
    struct list_head *p;

    // get modules from procfs perspective
    list_for_each(p,&__this_module.list){
        mod = list_entry(p,struct module,list);
        procfs_modules[proc_module_index++] = mod->name;
    }


    // get modules from sysfs perspective
    struct kobject *kobj;
    struct kset *kset = __this_module.mkobj.kobj.kset;
    list_for_each(p,&kset->list) {
        kobj = container_of(p,struct kobject,entry);
        sysfs_modules[sys_module_index++] = kobj->k_name;
    }

    //compare the procfs_modules and sysfs_modules
    ...
}

实际上,它可以检测大多数当前模块隐藏的rootkit,但正如Eugene所说,“一个聪明的rootkit也可能试图隐藏这些数据”.所以这不是一个完美的方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读