前言

在我们简化Android应用时,有时候不得不调用官方API(比如登录验证等)
在撰写此文章之前,我尝试的许多方案与抓包软件,它们都可以正常抓取HTTP/DNS请求,但如果想要抓取并解密HTTPS/TLS,通常都无法成功————一是大多数A只信任系统级CA证书,不信任用户级CA证书 二是SSLPinning(证书锁定)
这篇文章主要解决第一个问题
本文将使用KernelSU管理器 + PCAPdroidv2.4 + MitmProxy12.2.3bin演示
后面将会把MitmProxy称为Mitm

准备工作

你需要确保以下环境

  1. 一台电脑
  2. 设备已Root
  3. 手机已安装PCAPdroid
  4. 手机已刷入TrustAnyCert-reviewed2模块(密码608d)
  5. 电脑已安装MitmProxy

这里重点讲一下TrustAnyCert-reviewed2模块
此模块改自https://github.com/gorkemgun/TrustAnyCert

感谢原项目作者提供的模块和源码

修改后的模块主要添加了目标App注入
保证:无混淆、无加密、无后门
担心的话可以自行使用AI审计zip压缩包内的文件

对于KernelSU类管理器,需要安装元模块来实现system挂载功能,我这里用的是Hybrid Mount

应先刷入Hybrid Mount,再刷入TrustAnyCert-reviewed2

环境搭建

现在开始配置环境
确保手机和电脑在同一局域网

电脑

先搭建电脑Mitm环境
先看当前局域网ip

ipconfig

我这里的是192.168.88.101

现在启动mitmweb SOCKS5

mitmweb --mode socks5 --listen-host 192.168.88.101 --listen-port 8050 --web-host 127.0.0.1 --web-port 8081

下面是选项及作用

项目作用
--mode socks5mitm将作为SOCKS5服务端运行
--listen-host 192.168.88.101填入手机端PCAPdroid的SOCKS5主机(就是当前局域网的IPv4地址)
--listen-port 8050填入手机端PCAPdroid的SOCKS5端口
--web-host 127.0.0.1在本机(127.0.0.1)启动mitmweb服务端
--web-port 8081指定启动mitmweb的端口

将会打开浏览器显示mitmweb主界面并在当前文件夹下创建CA证书

现在需要将CA导入到手机用来解密HTTPS/TLS流量
CA证书在运行mitmweb命令的文件夹下:.mitmproxy\mitmproxy-ca-cert.cer(注意是mitmproxy-ca-cert.cer)
将此证书文件传输到手机内,这里我使用adb

adb push C:\Users\ChariTY\.mitmproxy\mitmproxy-ca-cert.cer /sdcard/ #/sdcard即/storage/emulated/0/

至此电脑端环境准备完成

Android

来到Android

先打开TrustAnyCertWebUI
点击Tap to select a certificate file
图片.png
选择之前传输到Android的CA证书(mitmproxy-ca-cert.cer)
往下翻,直接输入目标应用包名 或者 点击Select Installed Apps(仅显示包名)并勾选需要解密HTTPS/TLS流量的App
点击Save Target Apps
往下翻,点击Re-inject into APEX
做好后往上翻,三个状态应为绿色
图片.png
退出WebUI

打开PCAPdroid 找到右上角设置 下拉 找到并关闭TLS解密 拦截QUIC改为始终
图片.png
然后在下方找到启用SOCKS5代理并进入
在显示的界面中打开SOCKS5重定向 代理主机填入你电脑Mitm设置的host,我这里是192.168.88.101
下方端口填入Mith设置的端口,我这里是8050
图片.png
填入完成后返回
至此Android环境准备完成

开始抓包

打开PCAPdroid
在主界面点击并选择目标应用,勾选你要抓包的App后返回,点击就绪按钮/右上角开始按钮来开始抓包
PCAProid将创建VPN来进行流量捕获,所以需要同意VPN创建请求
图片.png
打开目标App,进行网络相关操作,然后观察电脑上的mitmweb是否已有记录(转到Flow选项卡)
如果HTTPS/TLS解密成功,那么它最右边的“列”应该显示为绿色:
图片.png
此时点击任意已解密的HTTPS/TLS流量就可以看到明文:
图片.png
当然响应也是
图片.png