引子

学习安卓app渗透测试时,网上大部分教程对于linux用户不太友好。

本文会通过常见的抓包场景介绍一些linux下的软件和一些小技巧。

基础知识

root:获取安卓系统最高权限

xposed、LSPosed、LSPatch:一类安卓系统的hook框架

准备工作

adb

shizuku

GitHub RikkaApps/Shizuku: Using system APIs directly with adb/root privileges from normal apps through a Java process started with app_process.

LSPatch

GitHub LSPosed/LSPatch: LSPatch: A non-root Xposed framework extending from LSPosed

Genymotion虚拟机+证书(附带脚本)

Genymotion是一款跨平台的安卓虚拟机。功能强大

注意,Genymotion并非自由软件

镜像选择

每个镜像后都标注了cpu、内存、硬盘参数,我们根据自己的宿主机性能进行选择。

我们在渗透测试中有root需求,Genymotion官方提供了带有root的镜像请参考Root access Device image User Guide选择合适的安卓版本

结合以上两点,我们选择Pixel2安卓9

创建虚拟机

image.png

这里直接无脑下一步下一步即可。

虚拟机的配置

arm转义GitHub m9rco/Genymotion_ARM_Translation: 👾👾 Genymotion_ARM_Translation Please enjoy!

下载对应版本的arm转义包

运行以下命令

1
2
3
4
5
# 改为你下载的文件名
fileName=arm_translation.zip
adb push $fileName /sdcard/Download/$fileName
adb shell "sh /system/bin/flash-archive.sh /sdcard/Download/$fileName"
adb reboot

shizuku+LSPatch

我们有root,直接使用shizuku的root模式即可。LSPatch授权后即可使用

burp证书导入

这里我们导入系统证书,系统证书需要将证书改名为hash.0

运行以下命令

1
2
3
4
5
6
7
8
9
# 转换证书并推送
# burp.der为从burp中生成的证书
openssl x509 -inform DER -in burp.der -out burp.pem
hash=$(openssl x509 -inform PEM -subject_hash_old -in burp.pem | head -1)
mv burp.pem ${hash}.0
adb remount
adb push ${hash}.0 /system/etc/security/cacerts/
adb shell chmod 644 /system/etc/security/cacerts/${hash}.0
adb reboot

使用代理

直接在wifi中配置代理即可

image.png

实体机+证书

实际上linux下的虚拟机体验并不好,很多时候还是使用实体机比较友好

证书配置

可root的机器

这里请参考上面Genymotion导入证书的方法

不可root的机器

写在前面:

理论上在安卓7.0以后非系统证书是不可用做中间人攻击的。不过这是前半句,实际上”安卓7.0后引入了网络安全配置,默认情况下应用不再信任用户添加的CA证书,除非应用明确配置为信任它们。”

所以用户添加的证书在一定程度上是可用的。

通过设置中的添加用户级别证书即可配置证书。

burp导出证书时后缀需要改为cer,这样用户才可在手动添加时选中。

具体操作步骤请参考百度。

shizuku+LSPatch

可root的机器

参考Genymotion

不可root的机器

通过adb激活shizuku

安装shizuku后运行

1
adb shell sh /sdcard/Android/data/moe.shizuku.privileged.api/start.sh

参考

Root access Device image User Guide

User manual | Shizuku

GitHub m9rco/Genymotion_ARM_Translation: 👾👾 Genymotion_ARM_Translation Please enjoy!