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

在linux内核中拦截ELF加载程序:通过可加载内核模块的fs / binfm

发布时间:2020-12-13 22:57:51 所属栏目:Linux 来源:网络整理
导读:我是内核编码的新手,目前我正在处理ELF文件,为了安全起见,我已经修改了一些文件,我需要查看它的一些自定义部分标题,并从中提取唯一的代码加密密钥. CPU解密修改后的ELF的内容. 目前上面的逻辑已经在内核源代码树的fs / binfmt_elf.c文件中的load_elf_binary
我是内核编码的新手,目前我正在处理ELF文件,为了安全起见,我已经修改了一些文件,我需要查看它的一些自定义部分标题,并从中提取唯一的代码加密密钥. CPU解密修改后的ELF的内容.

目前上面的逻辑已经在内核源代码树的fs / binfmt_elf.c文件中的load_elf_binary函数中实现,但是我需要重新编译整个内核只需要250行代码更改,所以我正在寻找通过将其作为可加载内核模块(LKM)实现来即兴发挥此功能,以便每次加载ELF时它都会检查是否修改了ELF,如果是,那么它会从相应的部分中获取密钥.

编辑:总结一下,我正在寻找一个可加载的内核模块来读取ELF的各个部分并获取包含加密密钥和相关元数据的自定义部分的内容,并在CPU寄存器中设置这些值.

解决方法

是的,这是可能的,但绝对不容易.甚至还有一个受支持的内核工具“kprobes”允许您从指定位置插入对自己代码的调用(请参阅Documentation / kprobes.txt).如果插入对您自己的代码的调用不足,我认为您需要使用与kprobe相同的机制:通过使用jmps覆盖指令或调用您自己的代码来修补所需的位置.

我曾经在一家公司工作,该公司的安全产品通过运行时修补Windows内核来安装它的钩子.这几乎是一回事,但至少在Windows上,当时必须支持有限数量的版本.

所以,这绝对是可能的,但我不想尝试.它会非常脆弱;你将实际上试图击中一个移动的目标.每个内核安全补丁或版本升级都可能会破坏您的代码.

(编辑:李大同)

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

    推荐文章
      热点阅读