查看原文
其他

Android系统证书或定制系统解放https抓包

云天实验室 哆啦安全 2022-05-24
前言
1.Android系统在线源码 ​http://androidxref.com http://aospxref.com/ 2.Android系统证书的生成和使用方法 3.定制Android系统,解放Https抓包 (1).Android7.1.2定制方法 (2).Android8.1定制方法 (3).Android9.0定制方法 (4).Android10定制方法 (5).Android11定制方法

1.App为什么https不能抓包

Google在Android 7.0以后的版本中,添加了"网络安全配置(Network security configuration)"的相关配置项。其旨在增强App的安全性,可以避免TargetSDK版本>=N的App内部网络请求在非测试环境下被恶意抓包。


Network Sercurity Configuration对安全性的保证,主要是通过以下几个途径:

是否允许明文http请求(非https)、https证书(区分系统、用户)信任设置、域名以及App的Debug或Release配置,只有符合Manifest中配置的NetworkConfig字段内容下的条件,才可以进行正常的http请求,如果需要使用Charles、Fiddler等工具进行抓包,也需要利用NetworkConfig来配置可以信任的证书,否则https请求在CONNECT阶段,就会返回错误,同时LogCat会打印出类似以下的错误信息:

Caused by: java.security.cert.CertificateException: xxx. at com.android.org.conscrypt.TrustManagerImpl.verifyChain(TrustManagerImpl.java:661) at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:539) at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:605) at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:495) at com.android.org.conscrypt.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:321) at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:113) at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:87) at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:116) at com.huawei.secure.android.common.ssl.SecureX509TrustManager.checkServerTrusted(:105) at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:212) at com.android.org.conscrypt.ConscryptFileDescriptorSocket.verifyCertificateChain(ConscryptFileDescriptorSocket.java:404) at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:375)


基本的几个思路

(1).反编译apk,修改NetworkConfig相关的xml文件,让App可以信任用户配置的证书

这个方案局限性比较大,现在很多App都对反编译技术(主要是apktool、jeb、jadx、GDA等常用的反编译工具)进行了防御,有的App使用apktool解包以后,就无法成功打包了,还有的用上了各加固厂商(爱加密、梆梆、腾讯、360、几维等加固厂商)加固加壳等防御/反作弊技术,通用的反编译工具是无法直接获取真正Apk内部的文件。不过如果能够使用apktool成功获得解码后的xml文件,且进行修改后能够重新打包成可以运行的Apk,这样做也是可行的。


(2).使用Hook

使用Xposed、frida等Hook框架在App请求过程中进行Hook,依赖的基础仍然是反编译,且Xposed、frida等Hook框架需要建立在Root后的基础上,成功率比较低,且成本还比较高。


(3).修改Android源码


2.Android系统证书的生成和使用方法

微信扫一扫付费阅读本文

可试读15%

微信扫一扫付费阅读本文

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存