如何增强Linux内核中的访问控制安全
2. 恢复兴状
行使Makefile编译,insmod插入内核模块后,再执行ls时,就会进入到我们的体系挪用,我们可以在hook代码中删掉某些文件,ls就不会表现这些文件,可是这些文件照旧存在的。 仓库式文件体系 Linux通过vfs假造文件体系来同一抽象详细的磁盘文件体系,从上到下的IO栈形成了一个仓库式。通过对内核源码的说明,以一次读操纵为例,从上到下所执行的流程如下: 内核中回收了许多c说话情势的面向工具,也就是函数指针的情势,譬喻read是vfs提供用户的接口,详细底下挪用的是ext2的read操纵。我们只要实现VFS提供的各类接口,就可以实现一个仓库式文件体系。Linux内核中已经集成了一些仓库式文件体系,譬喻Ubuntu在安装时会提示你是否必要加密home目次,着实就是一个仓库式的加密文件体系(eCryptfs),道理如下: 实现了一个仓库式文件体系,相等于全部的读写操纵城市进入到我们的文件体系,可以拿到全部的数据,就可以举办做一些拦截过滤。 以下是我实现的一个最简朴的仓库式文件体系,实现了最简朴的打开、读写文件,麻雀虽小但五脏俱全。 https://github.com/wangzhangjun/wzjfs inline hook 我们知道内核中的函数不行能把全部成果都在这个函数中所有实现,它一定要挪用它的基层函数。假如这个基层函数可以获得我们想要的过滤信息内容,就可以把基层函数在上层函数中的offset替代成新的函数的offset,这样上层函数挪用基层函数时,就会跳到新的函数中,在新的函数中做过滤和挟制内容的事变。以是从道理上来说,inline hook可以想hook那边就hook那边。 inline hook 有两个重要的题目:
1. 对付第一个题目: 必要有一点的内核源码履历,好比说对付read操纵,源码如下: 在这里当提倡read体系挪用后,就会进入到sys_read,在sys_read中会挪用vfs_read函数,在vfs_read的参数中正好有我们必要过滤的信息,那么就可以把vfs_read当做一个hook点。 2. 对付第二个题目: 怎样Hook?这里先容两种方法:
其道理是在hook点注入int 3(x86)的呆板码,让cpu运行到这里的时辰会触发sig_trap信号,然后将用户自界说的hook函数注入到sig_trap的回调函数中,到达触发hook函数的目标。这个着实也是调试器的道理。 LSM LSM是Linux Secrity Module的简称,即linux安详模块。是一种通用的Linux安详框架,具有服从高,简朴易用等特点。道理如下: LSM在内核中做了以下事变:
合用场景 对付以上几种Hook方法,有其差异的应用场景。
总结 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |