前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Linux Kernel Exploitation 理论学习

Linux Kernel Exploitation 理论学习

作者头像
用户1423082
发布2024-12-31 18:35:44
发布2024-12-31 18:35:44
660
举报
文章被收录于专栏:giantbranch's bloggiantbranch's blog

基础

内核为用户空间提供的一些服务

  1. 文件系统的IO
  2. 权限管理
  3. 系统调用(Syscalls)
  4. 进程管理
  5. ……

内核通熟来说就是底层的代码(它是操作系统的核心),有两个主要的职能:

  1. 跟硬件交互,控制硬件
  2. 为应用程序提供一个运行环境

内核空间Ring0,我们用户空间就是Ring3

使用的常用的库函数也有所区别

内核管理进程,所以权限也是他管了

利用相关

我们可以用commit_credit,更新进程的credentials

我们可以prepare_kernel_cred_t构造一个cred数据结构

那就是两步

由于在内核中我们很难修改文件系统,创建新的进程,创建网络连接,所以我们要回到用户空间

我们可以通过下面的方式劫持控制流

我们熟悉的防护有下面的

一些新的防护

mmap_min_addr

它可以使空指针引用的漏洞利用更加困难

一般空指针引用流程如下,而mmap_min_addr不允许程序申请低地址的内存,所以极大增加了利用难度

kallsyms

/proc/kallsyms提供内核的符号

假如我们没有信息泄露漏洞,那么我们就需要它

那么假如有这个防护,那么没有权限的用户就会返回0了

SMEP / SMAP

SMEP: Supervisor Mode Execution Protection Introduced in Intel IvyBridge SMAP: Supervisor Mode Access Protection Introduced in Intel Haswell

一般提权的代码是这样的

SMEP避免这种攻击是通过触发一个页错误(page fault)来完成大的, 就是如果一个设置了user bit的程序在ring0中执行内存中的代码,那就触发一个page fault

SMAP也是类似的,不过这个是防御对数据的读取

reference

https://github.com/RPISEC/MBE

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础
  • 利用相关
  • 一些新的防护
    • mmap_min_addr
    • kallsyms
    • SMEP / SMAP
  • reference
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档