第四章:深入系统底层 —— Root提权与内核漏洞

1. 为什么应用层不够了?

在前三章,我们假设App运行在一个"受限"的环境里。但作为渗透测试员,我们的目标是**"全设备控制"**。

场景引入

某银行App做了极致的防御:

  • 检测 Frida(第二章失效)。

  • 使用双向证书认证(第三章失效)。

  • 核心逻辑写在云端。

**此时怎么办?**​

唯一的出路是:获取系统最高权限(Root)

一旦有了 Root,你就是手机的"上帝"。你可以修改系统文件、绕过所有App的防御、直接读取App的私有内存数据。


2. Root方案演进:从"修改系统"到"无痕隐身"

在安卓早期,Root 意味着直接修改 /system分区(如 SuperSU)。但现代安卓引入了 AVB(Android Verified Boot),修改系统分区会导致手机无法开机。

2.1 现代Root神器:Magisk

如今,Magisk 是事实上的 Root 标准。它的核心思想是 "系统less"(无系统修改)。

  • 原理 :不修改 /system,而是修改 Boot 镜像(boot.img)

  • 优势

    1. 隐藏 Root:通过 Magisk Hide(或 DenyList),可以让特定的App(如银行App)检测不到 Root 环境。

    2. 模块化:像插件一样安装功能(如广告屏蔽、内核调节)。

2.2 实例:绕过Root检测

很多App会执行 which su或检查 /sbin/su文件。

绕过手法

  1. 在 Magisk 设置中开启 Zygote 注入

  2. 将目标App加入 DenyList

  3. 原理 :当App启动时,Magisk 会在系统层面"欺骗"它,让它以为系统里根本没有 su这个程序。


3. 实战一:从"普通App"到"系统应用"

拥有 Root 权限后,我们能做什么?

目标:读取其他App的私有数据。

安卓规定:App A 无法读取 App B 的数据目录(/data/data/com.bank.app/)。

攻击步骤

  1. 使用 ADB 获取 Root Shell:

    bash 复制代码
    adb shell
    su  # 获取Root权限,此时提示符变为 #
  2. 直接访问银行App的数据库:

    bash 复制代码
    cd /data/data/com.bank.app/databases/
    sqlite3 user.db
    .dump  # 导出所有用户数据

    结果

    无需逆向,无需Hook,直接像打开文件夹一样偷走所有数据。


4. 实战二:利用内核漏洞提权(CVE)

如果你的手机无法解锁 Bootloader (例如某些国产机),或者没有现成的 Magisk 方案 ,你需要使用 内核漏洞(Kernel Exploit)

4.1 什么是内核漏洞?

安卓基于 Linux。Linux 内核偶尔会出现代码错误(如缓冲区溢出)。攻击者可以编写一个程序(Exploit),利用这个错误,从"普通用户"跳到"系统内核(Ring 0)",从而获取 Root。

4.2 经典案例:Dirty COW (CVE-2016-5195)

这是历史上最著名的内核漏洞之一。

  • 原理 :Linux 内核在处理内存写操作时存在竞态条件,允许普通用户写入只读文件(如 /etc/passwd)。

  • 安卓利用

    1. 编译 Dirty COW 的 POC(概念验证代码)。

    2. 在安卓上运行,它会修改系统的 system_server进程。

    3. 结果:手机被 Root。

现状

现代安卓(Android 10+)已经修补了大多数老旧漏洞,但碎片化是安卓的噩梦。很多旧设备(尤其是IoT设备、车机系统)依然跑着有漏洞的老内核。


5. 实战三:Bootloader 漏洞与物理攻击

如果软件层面都防住了,攻击者还能怎么做?物理接触

5.1 场景:捡到一部锁屏的手机

目标:在不解锁屏幕的情况下,窃取数据。

  1. Fastboot 模式:关机状态下,按住音量键+电源键进入。

  2. 漏洞利用:某些厂商的 Bootloader 存在漏洞(如 MTK 芯片的某些版本),允许未授权刷入 Recovery。

  3. 刷入 TWRP:这是一个第三方恢复系统。

  4. 挂载 Data 分区 :进入 TWRP,直接复制 /data目录到 SD 卡。

防御

现代手机开启了 "安全启动(Verified Boot)"。如果 Bootloader 被解锁,或者系统被篡改,手机会变成"砖头"或清除所有数据(Factory Reset Protection)。


6. 防御方视角:系统级加固

作为厂商或高安全需求用户,如何防御 Root 和内核攻击?

  1. SELinux(强制访问控制)

    安卓的安全基石。即使你拿到了 Root(UID 0),SELinux 也能限制你能做什么。例如,禁止 Root 进程读取 /data/data目录。

    (攻击对抗:攻击者会尝试 setenforce 0关闭 SELinux。)

  2. 内核补丁

    及时更新系统,修补 Dirty COW 等高危漏洞。

  3. 硬件安全

    • TrustZone:将指纹、支付密钥存储在独立的硬件区域,即使 Root 也无法读取。

    • AVB 2.0:防止 Boot 镜像被篡改。


7. 总结:渗透测试的边界

到了这一章,我们已经触及了安卓安全的底线。

  • 应用层(一、二、三章):关注"代码逻辑"。

  • 系统层(第四章):关注"权限与控制"。

重要提醒

利用内核漏洞攻击未授权的设备是违法行为。在真实渗透测试中,如果你发现目标设备存在内核漏洞,正确的做法是:

  1. 记录漏洞(CVE编号)。

  2. 评估危害(Local Privilege Escalation)。

  3. 建议厂商升级内核。


最终章预告

《第五章:后渗透与防御对抗 ------ 隐身、持久化与取证》

拿到 Root 后,如何长期控制设备而不被发现?如何清理痕迹?以及,作为蓝队(防御方),如何在服务器日志和手机行为中发现这些入侵痕迹?

相关推荐
kang0x04 小时前
Simple XOR - Writeup by AI
安全
小小工匠4 小时前
Spring AI RAG - 06 敏感词过滤与内容安全防护
人工智能·安全·spring
一切皆是因缘际会5 小时前
AI技术新风口:边缘计算与智能体协同,解锁产业落地新范式
大数据·人工智能·安全·ai·架构·语音识别
JiaWen技术圈5 小时前
网站开发中登录与注册安全防范完整指南
安全
mzhan0176 小时前
Linux: config: CRYPTO_USER_API_AEAD
linux·安全·module
想你依然心痛6 小时前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与HMAF的“代码哨兵“——AI智能体代码安全审计平台
人工智能·安全·harmonyos·智能体
ze^07 小时前
Day01 Web应用&架构搭建&域名源码&站库分离&MVC模型&解析受限&对应路径
安全·web安全·架构·mvc·安全架构
轻口味7 小时前
HarmonyOS 6.1 全栈实战录 - 09 极光底座:ArkWeb 6.1 性能、安全与视觉插帧全特性深度实战
pytorch·安全·harmonyos
Paranoid-up7 小时前
安全启动和安全固件更新(SBSFU)11:保护链:开发 / 量产 / SECURE_LOCK 三种模式
安全·iap·安全启动·安全升级·sbsfu