文档介绍:Android 安全之 Https 中间人攻击漏洞
0X01 概述
 
HTTPS,是一种网络安全传输协议,利用 SSL/TLS 来对数据包进行加密,以提供对网络服
务器的身份认证,保护交换数据的隐私与完整性。 
中间人攻击,Man-in-the-middle attack,缩写:MITM,是指攻击者与通讯的两端分别
创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连
接与对方直接对话,但事实上整个会话都被攻击者完全控制。 
https 在理论上是可以抵御 MITM,但是由于开发过程中的编码不规范,导致 https 可能
存在 MITM 攻击风险,攻击者可以解密、篡改 https 数据。 
 
0X02 https 漏洞 
 
Android https 的开发过程中常见的安全缺陷: 
1)在自定义实现X509TrustManager 时,checkServerTrusted 中没有检查证书是否可信,
导致通信过程中可能存在中间人攻击,造成敏感数据劫持危害。 
2)在重写 WebViewClient 的 onReceivedSslError方法时,调用 proceed 忽略证书验证
错误信息继续加载页面,导致通信过程中可能存在中间人攻击,造成敏感数据劫持危害。 
3)在自定义实现HostnameVerifier 时,没有在 verify 中进行严格证书校验,导致通信过
程中可能存在中间人攻击,造成敏感数据劫持危害。
4)在 setHostnameVerifier 方法中使用 ALLOW_ALL_HOSTNAME_VERIFIER,信任所有
Hostname,导致通信过程中可能存在中间人攻击,造成敏感数据劫持危害。 
 
 
0X03 漏洞案例 
 
案例一:京东金融 MITM 漏洞 
京东金融 Ver 由于证书校验有缺陷,导致 https 中间人攻击,攻击者直接可以获取
到会话中敏感数据的加密秘钥,另外由于 APP 没有做加固或混淆,因此可以轻松分析出
解密算法,利用获取到的key解密敏感数据。 
御安全扫描结果: 
 
如下是登陆过程中捕获到的数据:
其中的secretkey 用于加密后期通信过程中的敏感数据,由于APP中使用的是对称加密,
攻击者可以还原所有的通信数据。 
 
案例二:中国移动和包任意消费漏洞 
HTTPS 证书校验不严格,可被