第四章:深入系统底层 —— 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 后,如何长期控制设备而不被发现?如何清理痕迹?以及,作为蓝队(防御方),如何在服务器日志和手机行为中发现这些入侵痕迹?

相关推荐
数据知道2 小时前
SSRF 漏洞实战:内网探测、云元数据窃取一条龙
网络·安全·网络安全
yunwei372 小时前
eBPF 教程:精准隔离已建立的 TCP 连接
linux·安全·开源
潘志宏_ZHPAN3 小时前
智能体互联网:原理、架构与开发实践—项目6:智能体安全与生命周期管理
网络·安全
戴西软件3 小时前
戴西CAxWorks.VPG车辆工程仿真软件技术解析(上)——安全仿真体系的自动化构建
运维·网络·数据库·人工智能·算法·安全·自动化
ZENERGY-众壹4 小时前
电力监控系统安全防护实战:如何将生产大区逆变器数据安全穿透至 SIS 平台
安全·系统安全
砚凝霜4 小时前
软考网络工程师|第 6 章 应用层安全协议、防火墙完整备考笔记
网络·笔记·安全
gnhpc14 小时前
国产龙芯主板为智能电网网络安全升级筑牢防护屏障
安全
小马过河R4 小时前
AI Coding应用上线安全实践指南
人工智能·安全·安全架构·engineering·ai coding·harness
Fnetlink15 小时前
Fnet 云网安 260807
服务器·网络·人工智能·安全·网络安全
@CLoudbays_Martin119 小时前
Linux 服务器如何查看是否被植入后门?
linux·服务器·网络·安全·github·ssl