抓包工具:
Charles,fiddler,wireshark
其中,前两个用于抓取https请求,wireshark则是包含tcp/udp在内的所有请求,本文中以Charles为例
或者移动端(Android)安装:packet capture
packet capture 安装使用教程:
https://mp.weixin.qq.com/s/JxJWZk-uMMjLcLQFTQ7thA?
Charles安装配置教程(flddler与之大同小异,毕竟原理是一样的):
https://blog.csdn.net/Yunwubanjian/article/details/91869895
配置Xposed+JustTrustMe:
但上面的教程配置完成后,依然有部分app的请求抓不到,那就是使用了SSL Pinning双向证书验证的app,针对此类app,比较简单的方案是在安卓模拟器上配置Xposed+JustTrustMe以达成抓包目的,而模拟器最好使用安卓5.0以下的版本,否则配置Xposed十分麻烦.
ssl pinning原理:
https://www.jianshu.com/p/22b56d977825
mumu模拟器各版本下载:
https://blog.csdn.net/xingyunqi7/article/details/84783387
夜神模拟器下载(可在安装后添加不同安卓版本的模拟器,比较推荐):
https://www.yeshen.com/
Xposed_installer下载:
https://repo.xposed.info/module/de.robv.android.xposed.installer
JustTrustMe下载:
https://github.com/Fuzion24/JustTrustMe
安装安卓模拟器后,按照配置手机代理的方式配置好Charles代理,再安装配置Xposed+JustTrustMe框架,教程:
https://bbs.pediy.com/thread-226435.htm (只看其中配置Xposed+JustTrustMe的部分即可)
https://www.jianshu.com/p/310d930dd62f
安装charles证书为模拟器系统证书:
有些情况下,仅仅将charles证书安装为用户证书是不能完全解决问题的,这时,就需要把它安装成系统证书
准备工作:安装配置adb工具,openssl工具
adb工具:下载安装即可:https://download.csdn.net/download/yunwubanjian/11249913
openssl安装配置:
下载:http://slproweb.com/products/Win32OpenSSL.html 第一个
安装后将安装目录\bin添加至环境变量,即可在任意cmd窗口调用
1.adb连接模拟器(以夜神模拟器为例)
进入安装目录:Nox\bin
执行命令查看端口:
D:\installPakge\yeshen\Nox\bin>nox_adb devices
List of devices attached
127.0.0.1:62025 device
连接:
D:\installPakge\yeshen\Nox\bin>adb connect 127.0.0.1:62025
already connected to 127.0.0.1:62025
D:\installPakge\yeshen\Nox\bin>adb devices
List of devices attached
127.0.0.1:62025 device
D:\installPakge\yeshen\Nox\bin>adb remount
remount succeeded
因为安卓模拟器是有root权限的,如果使用手机,则需要先root手机,或者,可以使用VirtualXposed+justtrustme,即一个虚拟的环境,具体操作方法:
在手机上下载安装VirtualXposed 和 JustTrustMe ,然后启用justtrustme,将要抓包的app在VirtualXposed 内克隆一份,即可开始抓包.
VirtualXposed下载:
https://vxposed.com/
2.使用openssl将证书名更换为安卓系统需要的格式
C:\Users\Administrator\Desktop>openssl x509 -subject_hash_old -in C:\Users\Administrator\Desktop\char.pem
a79a2868
3.将安全证书传入模拟器根证书目录:
D:\installPakge\yeshen\Nox\bin>adb push C:\Users\Administrator\Desktop\a79a2868.0 /system/etc/security/cacerts/
[100%] /system/etc/security/cacerts/a79a2868.0
此时模拟器端已经可以查看/system/etc/security/cacerts 目录,在此目录下可以找到证书
在受信任的凭据栏也可以查看到该证书:
普通用户证书:
一般来说,到这一步后,便可以关闭ssl证书验证并成功抓包了
另:
还可以通过逆向的方式修改app内的证书为Charles的证书,应该比较适合专业的测试人员或有安卓开发经验的人
仅做参考
https://www.freebuf.com/articles/terminal/161472.html
https://github.com/nabla-c0d3/ssl-kill-switch2
https://github.com/WooyunDota/DroidSSLUnpinning