赞
踩
如果有些https,在之前设置了好各种证书和配置后,看到的:
unknown
而无法看到我们希望的明文数据,则:
最大可能是,对方用了https的SSL pinning
SSL pinning
=证书绑定
=SSL证书绑定
对方的app内部,只允许,承认其自己的,特定的证书
导致此处Charles的证书不识别,不允许
导致Charles无法解密看到https的明文数据
尤其是:
对于Android 7.0 (API 24) 之后,做了些改动,使得系统安全性增加了,导致:
受信任的凭据 -> 用户
就没用了,因为不受信任了导致无法抓包https,抓出来的https的请求,都是加了密的,无法看到原文了。
对此,总结出相关解决思路和方案:
下面详细介绍每一种方案和具体如何操作:
通过修改app的配置,使得允许https抓包
而修改app的配置,又分两种:
下面详细介绍如何操作:
通过修改app源码去增加配置允许htts抓包
前提:
如果具备修改app的源码,则具体操作过程是:
修改AndroidManifest.xml
,增加如下配置:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest ... >
- <application android:networkSecurityConfig="@xml/network_security_config"
- ... >
- ...
- </application>
- </manifest>
Copy
在res
目录下新建一个xml
文件夹,再新建文件:
res/xml/network_security_config.xml
内容为:
手机中已正确安装Charles证书
- <?xml version="1.0" encoding="utf-8"?>
- <network-security-config>
- <domain-config>
- <domain includeSubdomains="true">你要抓取的域名</domain>
- <trust-anchors>
- <certificates src="user"/>
- </trust-anchors>
- </domain-config>
- </network-security-config>
Copy
其中:
<certificates src="user"/>
:信任用户自己安装的证书手机中没安装Charles证书,但是已有Charles证书文件
- <?xml version="1.0" encoding="utf-8"?>
- <network-security-config>
- <domain-config>
- <domain includeSubdomains="true">你要抓取的域名</domain>
- <trust-anchors>
- <certificates src="@raw/证书文件名"/>
- </trust-anchors>
- </domain-config>
- </network-security-config>
Copy
然后再去:
res
目录下新建一个raw
文件夹
res/raw/
目录下
pem
,ca
用工具修改apk增加配置允许https抓包
比如借助第三方工具:
levyitay/AddSecurityExceptionAndroid
去下载源码,再去:
- cd AddSecurityExceptionAndroid
- ./addSecurityExceptions.sh ../xxx.apk
Copy
即可给apk增加允许https抓包的配置了,然后就可以继续用Charles抓包https了。
受信任的凭据 -> 系统
/system/etc/security/cacerts/
openssl x509 -subject_hash_old -in charles-ssl-proxying-certificate_saved.pem
3a1074b3
charles-ssl-proxying-certificate_saved.pem
改名为3a1074b3.0
/system/etc/security/cacerts/
/system/etc/security/cacerts/,因为证书文件可能失效
charles是否打开ssl proxy 代理
Cydia
等工具SSL pinning
的插件
Android
Xposed
的JustTrustMe
Android 7.0
之前的安卓
Android 7.0
就不工作了Cydia
的Android-SSL-TrustKilleriOS
即可绕开ssl的验证,抓包到https被解密变成明文的数据。
下面详细解释,如何在已root的安卓中,借助XPosed和JustTrustMe去实现,绕开https证书校验,实现抓包https得到明文数据。
参考文章:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。