[align=center][b]Android安全之Https中间人攻击漏洞[/b][/align][align=center]Android安全 Https 攻击漏洞[b] [/b]应用加固 御安全 MITM[/align][align=left][b]0X01 概述[/b][/align][align=left][b] [/b][/align][align=center][attach]466103[/attach][/align][align=left][b]HTTPS[/b],是一种[url=https://zh.wikipedia.org/wiki/%E7%B6%B2%E7%B5%A1%E5%AE%89%E5%85%A8]网络安全[/url]传输协议,利用[url=https://zh.wikipedia.org/wiki/%E4%BC%A0%E8%BE%93%E5%B1%82%E5%AE%89%E5%85%A8]SSL/TLS[/url]来对数据包进行加密,以提供对[url=https://zh.wikipedia.org/wiki/%E7%B6%B2%E8%B7%AF]网络[/url]服务器的[url=https://zh.wikipedia.org/wiki/%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81]身份认证[/url],保护交换数据的隐私与[url=https://zh.wikipedia.org/wiki/%E5%AE%8C%E6%95%B4%E6%80%A7]完整性[/url]。[/align][align=left][b]中间人攻击[/b],Man-in-the-middle attack,[url=https://zh.wikipedia.org/wiki/%E7%B8%AE%E5%AF%AB]缩写[/url]:MITM,是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。[/align][align=left]https在理论上是可以抵御MITM,但是由于开发过程中的编码不规范,导致https可能存在MITM攻击风险,攻击者可以解密、篡改https数据。[/align][align=left] [/align][align=left][b]0X02 https漏洞[/b][/align][align=left] [/align][align=left]Android https的开发过程中常见的安全缺陷:[/align][align=left]1)在自定义实现X509TrustManager时,checkServerTrusted中没有检查证书是否可信,导致通信过程中可能存在中间人攻击,造成敏感数据劫持危害。[/align][align=left]2)在重写WebViewClient的onReceivedSslError方法时,调用proceed忽略证书验证错误信息继续加载页面,导致通信过程中可能存在中间人攻击,造成敏感数据劫持危害。[/align][align=left]3)在自定义实现HostnameVerifier时,没有在verify中进行严格证书校验,导致通信过程中可能存在中间人攻击,造成敏感数据劫持危害。[/align][align=left]4)在setHostnameVerifier方法中使用ALLOW_ALL_HOSTNAME_VERIFIER,信任所有Hostname,导致通信过程中可能存在中间人攻击,造成敏感数据劫持危害。[/align][align=left] [/align][align=left] [/align][align=left][b]0X03 漏洞案例[/b][/align][align=left] [/align][align=left][b]案例一:京东金融MITM漏洞[/b][/align][align=left]京东金融Ver 2.8.0由于证书校验有缺陷,导致https中间人攻击,攻击者直接可以获取到会话中敏感数据的加密秘钥,另外由于APP没有做应用加固或混淆,因此可以轻松分析出解密算法,利用获取到的key解密敏感数据。[/align][align=left]御安全扫描结果:[/align][align=center][attach]466104[/attach][/align][align=left]如下是登陆过程中捕获到的数据:[/align][align=center][attach]466105[/attach][/align][align=left]其中的secretkey用于加密后期通信过程中的敏感数据,由于APP中使用的是对称加密,攻击者可以还原所有的通信数据。[/align][align=left] [/align][align=left][b]案例二:中国移动和包任意消费漏洞[/b][/align][align=left]HTTPS证书校验不严格,可被MITM;[/align][align=left]加密算法不安全,可被破解;[/align][align=left]关键数据保存在sdcard卡上,可被任意访问;[/align][align=left]代码混淆度低,业务逻辑,关键数据泄漏;[/align][align=left]消息签名算法比较简单,数据可被修改;[/align][align=left]通信数据如下:[/align][align=left]POST [url]https://mca.cmpay.com:28710/ccaweb/CCLIMCA4/2201194.dor[/url] HTTP/1.1[/align][align=left]Cookie: JSESSIONID=CHGmYSZLTMRAx_1sSEuUP6Q4vmRI9gWiRPM6ANGnH7eZWv0NhErE!221531807[/align][align=left].......[/align][align=left]Content-Length: 521[/align][align=left]Host: mca.cmpay.com:28710[/align][align=left]Connection: Keep-Alive[/align][align=left]Cookie: JSESSIONID=CHGmYSZLTMRAx_1sSEuUP6Q4vmRI9gWiRPM6ANGnH7eZWv0NhErE!221531807[/align][align=left]Cookie2: $Version=1[/align][align=left]