SakitinSU 内核提权部分讲解

七月 03, 2025 / Linso / 13274阅读 / 0评论/ 分类: OOMkernelLinux

1. 概述

SakitinSU 内核部分 是一个针对 Android 内核的提权与 Selinux 处理的部分:

  • root 权限提升:自动将指定进程提权为 root。
  • 能力管理绕过:通过 hook 能力检查函数,绕过 Linux 能力限制。
  • SELinux 绕过:hook SELinux 访问控制,允许敏感操作。
  • 动态进程监控:监控 su 执行自动触发提权操作。

2. 技术架构与核心机制

2.1 关键 Hook 点与探针部署

探针类型 Hook 函数 功能说明
kprobe sys_execve (按情况) 监控敏感命令执行,触发提权
kretprobe cap_capable 绕过 Linux 能力检查
kretprobe avc_denied 绕过 SELinux 访问控制

探针注册流程

flowchart TD
    A[模块加载] --> B[注册 execve kprobe]
    B --> C[注册 cap_capable kretprobe]
    C --> D[注册 avc_denied kretprobe]
    D --> E[监控/劫持敏感操作]

2.2 核心提权逻辑

部分代码片段

struct cred *cred = (struct cred *)__task_cred(current);

// 1. 提权为 root
cred->uid = cred->euid = cred->suid = cred->fsuid = GLOBAL_ROOT_UID;
cred->gid = cred->egid = cred->sgid = cred->fsgid = GLOBAL_ROOT_GID;
cred->securebits = 0;

// 2. 赋予所有能力
memset(&cred->cap_inheritable, 0xff, sizeof(kernel_cap_t));
memset(&cred->cap_permitted, 0xff, sizeof(kernel_cap_t));
memset(&cred->cap_effective, 0xff, sizeof(kernel_cap_t));
memset(&cred->cap_bset, 0xff, sizeof(kernel_cap_t));
memset(&cred->cap_ambient, 0xff, sizeof(kernel_cap_t));

// 3. 关闭 seccomp (部分需要依情况)