mitmproxy捕获手机ssl流量

一. 安装mitmproxy
1. 安装python3-venv

apt install python3-venv

2. 获取源代码

git clone https://github.com/mitmproxy/mitmproxy.git
cd mitmproxy
./dev.sh 

3. 激活python3虚拟环境,并执行

. venv/bin/activate  
mitmdump 

二. 上传证书到 手机
1. 运行mitmproxy后,会自动在 ~/.mitmproxy 目录下生成证书:
mitmproxy-ca.pem  证书和私钥
mitmproxy-ca-cert.pem  PEM格式的证书
mitmproxy-ca-cert.cer  跟PEM格式的证书完全一样,只是扩展名不同

2.制作一个Android兼容的证书
2.1 获得mitmproxy证书的hash值

openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem | head -1

会显示 hash值为 c8750f0d

注意,要用 -subject_hash_old 选项,而不是 -subject_hash 这样才会得到 openssl 0.9 兼容的hash值

2.2 android证书文件名 以.0结尾

cat mitmproxy-ca-cert.pem > c8750f0d.0
openssl x509 -inform PEM -text -in mitmproxy-ca-cert.pem -noout >>  c8750f0d.0

一步到位

hashed_name=`openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1` && cp mitmproxy-ca-cert.cer $hashed_name.0

3. 将证书放入 /system/etc/security/cacerts/

adb push c8750f0d.0 /data/local/tmp/
adb shell
su 
# mount -o remount,rw /system
# setenforce 0
#  mv /data/local/tmp/c8750f0d.0 /system/etc/security/cacerts/ 
# chmod 644 /system/etc/security/cacerts/c8750f0d.0
# chown root:root /system/etc/security/cacerts/c8750f0d.0
#  setenforce 1
# mount -o remount,ro /system

如果是用Magisk来root的,上述命令中有些应该适当修改

mount -o remount,rw /sbin/.magisk/mirror/system_root

三.让手机通过usb上网
1. 手机开启无线数据,或者开启wifi

2. 手机开启usb共享,PC上启用usb网卡

3. PC上启用有线连接

ip addr add 192.168.1.158/24 dev eno1
ip route add default via 192.168.1.1 dev eno1
ip route  del default via 192.168.42.129

4. 在手机上给usb网卡重新分配ip

ip addr del 192.168.42.129/24 dev rndis0 
ip addr add 10.42.0.2/24 dev rndis0

5. 手机上 修改路由表 (rmnet_data3根据实际情况修改)

ip route add 10.42.0.0/24 dev rndis0 table rmnet_data3
ip route delete default table rmnet_data3
ip route add default via 10.42.0.1 table rmnet_data3

ip -6 route  del default  table rmnet_data3

6. PC上开启转发

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -n -L

7. PC上给usb网卡重新分配地址

ip addr del 192.168.42.140/24 dev usb0
ip addr add 10.42.0.1/24 dev usb0

8. 在手机上检测

ping 10.42.0.1

9. 手机上设置私人DNS

四. PC上配置mitmproxy环境
1. 将80和443端口的流量都重定向给 mitmproxy

iptables -t nat -A PREROUTING  -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING  -p tcp --dport 443 -j REDIRECT --to-port 8080

2.透明模式启动mitmproxy

mitmproxy --mode transparent --showhost

五. 用frida解除 ssl pinning

frida -U -f com.sinovatech.unicom.ui -l ../ssl.js --no-pause

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注