app 杂项笔记
This_is_Y Lv6

记录一下折腾app的一些过程与奇奇怪怪的问题

环境:

  • 小米6一台(已root)

    • termux(0.118.0)
  • adb(1.0.36(nox夜神模拟器里的))

  • magisk 版本25.2(25200)

    • 模块(启动Zygisk):
      • Shamiko(root隐藏)
      • Zygisk-LSPosed(LSPosed)
  • LSPosed(1.8.6(6712)-Zygisk,API版本93)

    • 模块
      • 隐藏应用列表(3.1.1 root隐藏)
      • JustTrustMe(.2)
      • SSLUnpinning(1.0.0)
  • Frida (16.0.11)

  • Objection (1.11.0)

  • HttpCanary (v3.3.5)

各种安装过程

root

咕咕

termux

安卓下的shell终端。具体可以参考:

https://www.sqlsec.com/2018/05/termux.html

面具Magisk

咕咕

Shamiko

Shamiko的github地址

https://github.com/LSPosed/LSPosed.github.io/releases

下载zip,在magisk中导入即可刷入Shamiko模块,重启手机,打开面具右上角设置,打开遵循排除列表选项,再点击配置排除列表。打开排除配置列表后,勾选要隐藏root的应用,然后关闭排除列表选项。如果不关闭排除列表选项,那么Shamiko模块就会不工作,隐藏root就会不生效,所以是必须关闭的,首次配置建议重启一次手机,已达到最佳的隐藏效果。

关于新版本magisk隐藏root,可以看:https://zhuanlan.zhihu.com/p/506203078

Zygisk-LSPosed

在magisk设置中直接打开即可

LSPosed

咕咕

隐藏应用列表(3.1.1 root隐藏)

直接在LSPosed里面搜索下载就行,需要先加载一下(时间可能比较久)

image-20230409204941305

JustTrustMe(.2)

JustTrustMe需要在github中下载:https://github.com/Fuzion24/JustTrustMe

安装apk即可

SSLUnpinning(1.0.0)

同样直接搜索即可

image-20230409205004795

Frida

安装客户端(win10电脑上的)

1
2
pip install frida
pip install frida-tools

然后 pip list|findstr frida 找到安装的frida版本.

image-20230409213449135

比如我这里是16.0.11。然后就去https://github.com/frida/frida/releases找到对应的服务端版本下载即可

image-20230409213749429

image-20230409213819759

可以使用 adb shell getprop ro.product.cpu.abi 确定手机系统架构

image-20230409213933394

下载解压后,使用adb将frida-server放到手机目录/data/local/,然后修改属性为可执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#查看设备连接状态
adb devices -l

#把服务端推送到手机的指定目录(记得先解压再推送)
adb push Downloads\frida-server-16.0.11-android-arm64 /sdcard/

#进入手机终端,修改文件权限并运行
adb shell

# 获取root权限,移动frida服务端到/data/local/目录下
su
cp /sdcard/frida-server-16.0.11-android-arm64 /data/local/
cd /data/local

# 修改权限
chmod 777 frida-server-16.0.11-android-arm64

# 后台启动(方便退出shell)
./frida-server-16.0.11-android-arm64 &

image-20230409214543417

随后usb连接电脑与手机输入 frida-ps -Ua

有类似返回即可

image-20230409214633967

Objection

pip install objection即可

Fiddler classic

下载:https://www.telerik.com

image-20230409210332490

Fiddler Classic(经典版),这个版本是免费的,不过只能在Windows上使用。

Fiddler Everywhere可以在所有平台使用,并且相当于Fiddler Classic+postman,但是是收费的。

如果只作为抓包工具经典版就够用了,可以直接点击下方链接前往下载页面。

邮箱和地址随便填就行了

fiddler使用教程可以看:

https://juejin.cn/post/7021763777460699150

https://www.cnblogs.com/hong-fithing/p/7582947.html

证书

burp证书

  1. 获取证书
1
挂上代理后,访问 https://burp 下载证书,即 cacert.der。
  1. 将证书转换为移动设备用户凭据文件(Ubuntu 16.04)
1
2
3
4
5
6
7
# 转换为 *.pem 文件
root@cj:~# openssl x509 -inform DER -in cacert.der -out cacert.pem
# 回显某一 hash 值
root@cj:~# openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1
9a5ba575
# 将 *.pem 重命名为 <hash>.0
root@cj:~# mv cacert.pem 9a5ba575.0
  1. 安装证书(手机已Root)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 将 <hash>.0 传到手机
adb push 9a5ba575.0 /sdcard/
# adb连接至设备
adb shell
# shell获取root权限
su
# 系统重新挂载
mount -o rw,remount /
mount -o rw,remount /system
# 复制 <hash>.0
cp /sdcard/9a5ba575.0 /system/etc/security/cacerts/
# 授权,644 rw-r--r--,本用户有可读可写权限,群组有只读权限,其他用户为只读权限。
chmod 644 /system/etc/security/cacerts/9a5ba575.0
# 重启手机
reboot

image-20230409205716080

  1. 验证
1
设置->安全性和位置信息->加密与凭据->信任的凭据(显示信任的CA证书)->系统->PortSwigger

image-20230409205900977

Fillder证书

  1. 获取证书
1
2
3
4
5
两种方式:
1) 挂上代理 http://<本机ip>:8888 下载证书,点击 FiddlerRoot certificate 进行下载,即 FiddlerRoot.cer。

2)Fiddler->Tools->Options->HTTPS->Actions->Export Root Certificate to Desktop,将 FiddlerRoot.cer证书导出至桌面。
(如果Export Root Certificate to Desktop按钮是灰色的,需要点击下面的Decrypt HTTPS traffic)
  1. 将证书转换为移动设备用户凭据文件(Ubuntu 16.04)
1
2
3
4
root@cj:~# openssl x509 -inform DER -in FiddlerRoot.cer -out F.pem
root@cj:~# openssl x509 -inform PEM -subject_hash_old -in F.pem |head -1
269953fb
root@cj:~# mv F.pem 269953fb.0
  1. 安装证书(手机已Root)
1
2
3
4
5
6
7
8
9
adb push 269953fb.0 /sdcard/
adb shell
su
mount -o rw,remount /
mount -o rw,remount /system
cp /sdcard/269953fb.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/269953fb.0
reboot

image-20230409211627886

  1. 验证
1
设置->安全性和位置信息->加密与凭据->信任的凭据(显示信任的CA证书)->系统->DO_NOT_TRUST_FiddlerRoot

image-20230409211803361

  1. 抓包配置
1
Fiddler->Tools->Connecttions->Allow remote computers to conect

img

问题1:本地转发抓包

把burp设置成系统代理后,抓到一个app的包,但是host地址是127.0.0.1:30000,很显然这不是我电脑上的,也不是一个远程地址,那就只能是手机上某个app开放的端口了

image-20230409224824561

查看发现是app启动的端口:

image-20230409224929423

但是我在电脑上是访问不到这个端口的

image-20230409225039386

经过学长指导,决定用ssh转发获取返回包

termux安装ssh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 换源
sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list

sed -i 's@^\(deb.*games stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable@' $PREFIX/etc/apt/sources.list.d/game.list

sed -i 's@^\(deb.*science stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable@' $PREFIX/etc/apt/sources.list.d/science.list

# 更新
pkg update

# 安装ssh
pkg install openssh

# 打开ssh
sshd

# 创建密码
passwd

手机上的ssh默认端口是8022,需要注意下,下图就是登录成功的界面

image-20230409225627594

在测试可以登录后,就可以开始监听了

1
ssh -L 30000:127.0.0.1:30000 root@192.168.0.3 -p 8022

其中192.168.0.3是手机的ip地址,127.0.0.1:30000是转发的目的地址机器端口,30000是本地一个闲置端口(这个可以任意取,但是我为了方便,即让抓来的包不做任何修改就可以直接发送并获取返回包,就改成了这个)。

image-20230409230215711

现在我在burp上抓到包后,直接send,就可以有返回包了

image-20230409231834652

问题2:wsl2使用adb

在wsl2中连接不到手机,需要用到ip连接(需要在同一个局域网下),具体为以下几步

  1. 物理机中先插上数据线,adb连接好,然后输入 adb tcpip 5555

image-20230411235125638

  1. 拔下数据线,来到wsl2中,确保可以ping通手机,输入 adb connect 192.168.0.3 。(后面的ip是手机ip)

image-20230412000125984

image-20230412000143124

fine

参考:

app抓包:https://mp.weixin.qq.com/s/xDvxKJPdqf7AfJSfuWHZ0g
新版magisk隐藏root:https://zhuanlan.zhihu.com/p/506203078
Android 8.1 导入Burp、Fiddler证书: https://www.cnblogs.com/cijian9000/p/13431754.html
frida(hook工具)的环境搭建:https://www.cnblogs.com/tjp40922/p/11353808.html
Fiddler抓包(下载安装及使用):https://juejin.cn/post/7021763777460699150
Termux 高级终端安装使用配置教程:https://www.sqlsec.com/2018/05/termux.html
彻底搞懂SSH端口转发命令:https://zhuanlan.zhihu.com/p/148825449

 Comments