九维团队-绿队(改进)| Android Root测试环境实践

渗透技巧 1年前 (2023) admin
198 0 0

九维团队-绿队(改进)| Android Root测试环境实践

本文以 Google pixel4 机型为例,介绍了Android刷机与越狱过程。

九维团队-绿队(改进)| Android Root测试环境实践


一、Android 刷机


一、、

前期准备


前置知识:什么是 Android SDK Platform-Tools

 
Android SDK Platform-Tools 是一个包含了一组实用工具的软件包,用于与 Android 设备进行交互、调试、测试和开发应用程序。这些工具提供了一种在开发过程中与 Android 设备和模拟器进行通信的方式。


简单介绍2个常见的 Android SDK Platform-Tools 中的工具,也是本文中使用的:


adb (Android Debug Bridge):adb 是最常用的工具之一,其允许开发人员在计算机和 Android 设备之间进行通信。用户可通过 adb 在设备上安装和卸载应用程序、上传和下载文件,执行 shell 命令,进行端口转发等操作


fastboot:fastboot 是一个用于刷写 Android 设备的工具,其可用于解锁 Bootloader、刷写系统分区、引导映像等。


1、电脑 Android SDK Platform-Tools 准备

Android SDK Platform-Tools

可从 Android Studio 的 SDK 管理器或sdkmanger命令行工具获取最新的 SDK Platform-Tools;也可以单独下载这些命令行工具,下载地址:

https://developer.android.google.cn/studio/releases/platform-tools?hl=zh-cn#revisions

*左右滑动查看更多


2、Android SDK Platform-Tools 历史版本

最新版本下载地址:

Windows:

https://dl.google.com/android/repository/platform-tools-latest-windows.zip

*左右滑动查看更多


MacOS: 

https://dl.google.com/android/repository/platform-tools-latest-darwin.zip

*左右滑动查看更多


Linux: 

https://dl.google.com/android/repository/platform-tools-latest-linux.zip

*左右滑动查看更多


下载历史版本:

https://dl.google.com/android/repository/platform-tools_r[版本号]-[操作系统].zip

*左右滑动查看更多


版本号为 Android SDK Platform-Tools 的历史版本,具体版本修订记录可查阅SDK平台工具版本说明。

SDK平台工具版本说明:https://developer.android.google.cn/studio/releases/platform-tools?hl=zh-cn

*左右滑动查看更多


操作系统中,Windows 操作系统对应 windows,MacOS 操作系统对应 darwin,Linux 操作系统对应 linux。


如下载兼容 MacOS 的33.0.3 版本,则构造如下地址:

https://dl.google.com/android/repository/platform-tools_r33.0.3-darwin.zip

*左右滑动查看更多


Android SDK Platform-Tools 降级则将旧版本解压后覆盖 SDK 根目录下的 platform-tools (若是单独下载的 platform-tools,则覆盖对应目录或直接多个版本同时使用)。


针对多个版本同时使用可将主力版本更新进环境变量。


MacOS 示例:

sudo vi /etc/paths


Windows 示例:

选择【此电脑 – 属性 – 高级系统设置 – 环境变量】,将对应的 SDK Platform-Tools 目录添加到 path 即可。


3、手机开启开发者选项

选择【设置 – 系统 – 关于手机】,点击【版本号】七次即可开启。


4、手机开启 USB 调试

选择【设置 – 系统 – 开发者选项】,开启【USB 调试】。


5、手机 OEM 与 Bootloader 解锁

进入【开发者选项】,选择【OEM 解锁】进行 OEM 解锁。


手机连接电脑,通过Android SDK Platform-Tools中的adb工具执行adb reboot bootloader命令进入 Bootloader 模式(关机状态下,可长按【电源键】与【音量减键】以进入 Bootloader 模式),手机进入 Bootloader 模式后,连接电脑,通过 Android SDK Platform-Tools 中的 fastboot 工具执行fastboot devices命令验证是否成功进入 Bootloader 模式。


执行命令fastboot flashing unlock进行 Bootloader 解锁。


Bootloader 解锁界面中,用【音量加/ 减】键控制光标,选择【Yes】并按下电源键进行 Bootloader 解锁。


等待操作完毕后执行fastboot reboot命令重启手机。


为什么要解OEM锁?
解 OEM(Original Equipment Manufacturer,原始设备制造商) 锁通常指解开 Android 设备的 Bootloader 锁,解 OEM 锁可以为用户提供更多的灵活性和控制权,解锁 oem 便可解锁以下功能:


自定义固件和操作系统:解 OEM 锁可以允许用户在设备上安装自定义的固件、操作系统或 ROM。这便意味着用户可尝试不同的 Android 版本、定制的用户界面以及其他修改过的操作系统。


Root 权限: 解 OEM 锁通常也是获得 root 权限的一步,root 权限使用户能够访问设备的系统文件、设置权限,以及运行需要特权的应用程序等。


开发和测试:对于开发者而言, 解 OEM 锁后便能允许其使用该设备进行调试、测试和开发应用程序。


6、镜像下载

大家对应机型的镜像下载即可。官方镜像下载地址:

Nexus 和 Pixel 设备的出厂映像https://developers.google.cn/android/images?hl=zh-cn#flame

*左右滑动查看更多


九维团队-绿队(改进)| Android Root测试环境实践





刷机行动

1、ANDROID_PRODUCT_OUT 设置

需设置环境变量ANDROID_PRODUCT_OUT值为镜像解压后所在目录地址。


Windows 选择【此电脑 – 属性 – 高级系统设置 – 环境变量】添加对应键值。


MacOS 执行如下命令:

export ANDROID_PRODUCT_OUT=【镜像完整地址】。


2、完整镜像刷入

手机进入 Bootloader 模式,Windows 操作系统运行flash-all.bat , MacOS 则运行 flash-all.sh,等待完成即可。


3、部分镜像刷入

若只想刷入部分镜像,可参考flash-all.sh所执行的命令仅刷入部分镜像,可执行命令如fastboot flash boot boot.img等。


4、示例

手机已开启 USB 调试并解除 Bootloader 锁。

手机连接电脑,终端执行以下命令查看 adb 连接。

九维团队-绿队(改进)| Android Root测试环境实践


此处显示unauthorized,在手机上同意 adb 调试即可。

九维团队-绿队(改进)| Android Root测试环境实践


执行以下命令进入 Bootloader 模式:

adb reboot bootloader


此时手机显示Fastboot Mode,成功进入 Bootloader 模式。


页面中Device state:unlocked表示该机已解除 Bootloader 锁。


执行以下命令查看 fastboot 连接情况:

fastboot devices


九维团队-绿队(改进)| Android Root测试环境实践


设置环境变量ANDROID_PRODUCT_OUT值为镜像解压后所在目录地址。

export ANDROID_PRODUCT_OUT=/Users/Android/flame-qq2a.200405.005

*左右滑动查看更多


执行flash-all.sh进行刷机,等待完成即可。

九维团队-绿队(改进)| Android Root测试环境实践


刷机部分问题解决

1、Bootloader 模式下设备未识别

MacOS 执行命令system_profiler SPUSBDataType查看 USB 设备是否成功连接。


Windows 选择【此电脑 – 管理 – 设备管理器】查看设备接入情况,若显示为标黄未知设备则为未能成功识别。


可尝试更换 USB 数据线,Windows 右键该未知设备选择【更新驱动程序】,选择 Android Studio 中的usb_driver文件夹中的驱动程序进行更新。


2、fastboot: error: ANDROID_PRODUCT_OUT not set

同上文设置ANDROID_PRODUCT_OUT变量。


3、刷机完卡在开机界面

pixel6 等机型是不允许向下兼容的,刷过高版本 Android 要降级的话不能使用常规刷机方式。


本次测试使用 pixel4 机型,这是允许向下兼容的,但是在刷机过程中还是出现该情况,这是由于 Android SDK Platform-Tools 的版本问题,对其进行降级即可解决。


4、开机后 Wi-Fi 无法正常连接

Android 7.0 系统以后连接 Wi-Fi 无法正常连接,此为 Android 原生系统访问谷歌服务器验证 Wi-Fi 有效性。


运行以下命令再重启网络即可。

adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204

*左右滑动查看更多


二、Android 越狱

本次越狱采用 Magisk 进行,内核版本是 5.10 以上可尝试使用 KernelSU。

Magisk 网址:https://magiskcn.com/KernelSU 网址:https://kernelsu.com/


1、Magisk 安装与镜像制作

通过Magisk 下载地址下载 Magisk apk 文件。

https://magiskcn.com/magisk-download

*左右滑动查看更多


手机开启 USB 调试,连接电脑。


使用 adb 工具执行以下命令将 Magisk 安装至手机。

adb install Magisk-Stable-26100.apk(根据文件名与具体地址变化)

*左右滑动查看更多


将先前刷机所下载的镜像中的boot.img文件(位于解压完成文件中的另一压缩包中)提取出来,通过adb执行以下命令推送到手机/sdcard/Download/目录下。

adb push boot.img /sdcard/Download/

*左右滑动查看更多


手机打开 Magisk 选择【安装】。

九维团队-绿队(改进)| Android Root测试环境实践


选择【选择并修补一个文件】,文件选刚刚推送到手机/sdcard/Download/目录下的boot.img文件。

九维团队-绿队(改进)| Android Root测试环境实践


点击【开始】,之后 Magisk 就会自动开始修补,并且将处理好的新 boot 镜像保存在 /sdcard/Download/ 文件夹里。


所生成的新 boot 镜像文件需回传至电脑,可通过adb执行如下命令进行回传。

adb pull /sdcard/Download/magisk_patched_xxx.img(根据文件名变化) 【本地地址】

*左右滑动查看更多


Windows 用户也可直接通过文件挂载进行传输, MacOS 用户可下载第三方文件管理工具(如HandShaker MAC版)。

HandShaker MAC版下载网址https://www.smartisan.com/apps/#/handshaker

*左右滑动查看更多


2、以新镜像启动

类似上文刷机步骤,执行adb reboot bootloader命令进入 Bootloader 模式。


执行以下命令:

fastboot boot magisk_patched_xxx.img(修补后镜像,根据文件路径文件名改变)

*左右滑动查看更多


执行完成根据需求重启便越狱成功,手机遇特殊情况重启后会恢复到未被修改的 boot.img 镜像,此时仅需进入 Bootloader 模式再次运行一下以上命令即可。


三、Apk root 防御


上文中的刷机方式其实就是修改系统镜像重新刷入。


为了更直观地谈防护措施,我们直接来看一个自编译的安卓开源项目源码。

*注:此处所举例源码分支为 android-10.0.0_r17,适用于 Pixel XL、Pixel 机型,编译为 userdebug 版本。


user 版本是发布给最终用户的版本,也就是普通用户使用的版本。这个版本的系统是最稳定的,它没有开启调试选项,也没有 root 权限,用户只能运行和使用已安装的应用程序,无法访问系统的内部和敏感信息。


而 userdebug 版本是为开发和调试而设计的版本。与 user 版本相比,它提供了更多的调试和开发工具,例如可以通过 adb shell 获取 root 权限,方便开发人员在开发过程中进行调试和测试。也就是说 userdebug 版本的镜像,提供的就是一个 root 的环境。


一、、

系统文件与系统命令

build/make/target/product/base_system.mk代码中列举了 userdebug 版本编译时带的一些包,从中可以看到一些进行调试与测试的一些工具,如“su”,“ss”等等,这些包在编译完成后会生成一些系统文件或目录:

# Packages included only for eng or userdebug builds, previously debug taggedPRODUCT_PACKAGES_DEBUG :=     adb_keys     arping     gdbserver     init-debug.rc     iotop     iw     logpersist.start     logtagd.rc     procrank     showmap     sqlite3     ss     strace     su     sanitizer-status     tracepath     tracepath6     traceroute6     unwind_info     unwind_reg_info     unwind_symbols 

*左右滑动查看更多


检测以上进行调试的工具如/system/bin/su、 /system/xbin/su等是否存在,命令是否能执行,便能判断当前系统是否处于 root 环境。


二、、

系统属性检测

root 的系统可能会存在一些系统属性与正常的 user 版本不一样。


如以下编译完成后的build.prop文件,其存储的是编译完成后的系统属性。


其中构建指纹信息:

ro.bootimage.build.fingerprint=Android/aosp_sailfish/sailfish:10/QP1A.191005.007.A3/08071452:userdebug/test-keys便有很明显的 userdebug 版本的特征。


再看build/core/make.mk代码所展示的,userdebug 版本的系统的ro.debuggable值为1:

ifeq (true,$(strip $(enable_target_debugging)))# Target is more debuggable and adbd is on by default  ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1# Enable Dalvik lock contention logging.  ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.lockprof.threshold=500else # !enable_target_debugging# Target is less debuggable and adbd is off by default  ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0

*左右滑动查看更多


类似的可能会发生变化的系统属性如ro.secure等等,也可作为检测的对象。


三、、

Superuser应用程序

部分 Rooted 设备可能会安装一些 Superuser 管理应用程序,如 SuperSU 或 Magisk Manager 等等,如前文便是介绍了如何使用 Magisk 进行越狱刷机,可尝试进行这些类似应用的检测。


四、、

特权进程

Rooted 设备上可能会运行一些具有特殊权限的 root 进程,可尝试对进程列表进行检测以查找特权进程。


五、、

调试状态

root 的系统就是为了方便进行调试与测试等操作,设备可调试便可能存在被 Rooted 的可能。


六、、

Hooking框架

Rooted 设备为了更方便地进行应用调试,可能会使用 Hooking 框架来修改应用程序的行为,可尝试检测一些常见的 Hooking 框架,如 Xposed 框架等等。


插播一条招聘信息


一、安全研究工程师实习生(24/25届)

工作地点:深圳
岗位职责:

1、具有较强的责任感、具备能够独立的开展工作的能力、自学能力强、做事踏实认真; 
2、对防御对抗、反溯源、攻击利用等相关红队工具进行研究和开发;
3、熟悉OWASP TOP 10,具有网络安全、系统安全、Web安全等方面的理论基础;
4、熟悉常见编程语言中的一种(Java、Python、PHP、GO),并能够熟练写出针对性的测试脚本;
5、参与区域内网渗透测试、代码审计、红蓝对抗活动、最新漏洞动态跟踪及复现、风险评估、客户培训等工作;
6、主要参与新服务、新技术创新服务的研究;
7、根据ATT&CK框架梳理研究相关TPPs,并形成对应的检测规则。
加分项:
1、具有渗透测试经验或逆向分析能力或溯源分析能力,曾经参与过大型的红蓝对抗项目;
2、熟悉Java、Python、PHP、GO等编程,并有良好的编程习惯和丰富的代码经验;
3、具备钻研精神,愿意在安全领域做出技术突破;
4、具有较强的责任感、具备能够独立的开展工作的能力、自学能力强、做事踏实认真; 

二、代码审计工程师实习生(24/25届)
工作地点:深圳
岗位职责:

1、跟踪和分析业界最新安全漏洞。
2、挖掘Java、PHP程序中未知的安全漏洞和代码缺陷,并对漏洞进行验证,编制安全加固报告;
3、主要参与新服务、新技术创新服务的研究;
任职要求:
1、对JAVA/PHP编程有较深入的了解,具备较强的Java/PHP代码审计能力,有丰富实战能力;
2、熟悉JAVA/PHP主流框架,具备有一定的编程能力;
3、深入理解常见安全漏洞产生原理及防范方法;
4、熟练掌握源代码测试工具及测试流程,有CNVD、CNNVD等漏洞证书、CVE或CTF比赛获奖者者优先。
5、熟悉主流的源代码审计工具;
6、思路清晰,具有优秀的分析、解决问题的能力,有良好的学习能力及团队协作能力;
7、具备较强的沟通能力、抗压能力,团队合作精神及钻研精神。


简历投递可扫描本文末二维码添加小编微信,或直接发送至邮箱[email protected]



往期回顾

九维团队-绿队(改进)| Android Root测试环境实践

九维团队-绿队(改进)| Android Root测试环境实践

九维团队-绿队(改进)| Android Root测试环境实践

九维团队-绿队(改进)| Android Root测试环境实践

九维团队-绿队(改进)| Android Root测试环境实践

九维团队-绿队(改进)| Android Root测试环境实践


关于安恒信息安全服务团队
安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。

九维团队-绿队(改进)| Android Root测试环境实践

九维团队-绿队(改进)| Android Root测试环境实践

九维团队-绿队(改进)| Android Root测试环境实践

原文始发于微信公众号(安恒信息安全服务):九维团队-绿队(改进)| Android Root测试环境实践

版权声明:admin 发表于 2023年9月6日 下午4:28。
转载请注明:九维团队-绿队(改进)| Android Root测试环境实践 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...