Android安全之Https中间人攻击漏洞

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 2.8.0由于证书校验有缺陷,导致https中间人攻击,攻击者直接可以获取到会话中敏感数据的加密秘钥,另外由于APP没有做应用加固或混淆,因此可以轻松分析出解密算法,利用获取到的key解密敏感数据。
御安全扫描结果:

图片描述

如下是登陆过程中捕获到的数据:
图片描述
图片描述

其中的secretkey用于加密后期通信过程中的敏感数据,由于APP中使用的是对称加密,攻击者可以还原所有的通信数据。
 
案例二:中国移动和包任意消费漏洞
HTTPS证书校验不严格,可被MITM;
加密算法不安全,可被破解;
关键数据保存在sdcard卡上,可被任意访问;
代码混淆度低,业务逻辑,关键数据泄漏;
消息签名算法比较简单,数据可被修改;
通信数据如下:

POST https://mca.cmpay.com:28710/ccaweb/CCLIMCA4/2201194.dor HTTP/1.1
Cookie: JSESSIONID=CHGmYSZLTMRAx_1sSEuUP6Q4vmRI9gWiRPM6ANGnH7eZWv0NhErE!221531807
.......
Content-Length: 521
Host: mca.cmpay.com:28710
Connection: Keep-Alive
Cookie: JSESSIONID=CHGmYSZLTMRAx_1sSEuUP6Q4vmRI9gWiRPM6ANGnH7eZWv0NhErE!221531807
Cookie2: $Version=1
<?xml version="1.0" encoding="UTF-8" ?><ROOT><HEAD><IMEI>866697029909260</IMEI><MCID>201603241008185gye5tKk6EPB4iliO7</MCID><TXNCD>2201194</TXNCD><VERSION >4.3.82</VERSION ><UA>Android_21-1794*1080-HUAWEI GRA_UL10</UA><SOURCE>2009</SOURCE><PLAT>3</PLAT><DEVID>CAS00016</DEVID><SERLNO>991</SERLNO></HEAD><BODY><IMEI>866697029909260</IMEI><ENTRY>10</ENTRY><MAC>50:a7:2b:c5:e2:d8</MA

在用户开启免密支付的前提下,结合以上安全问题,可以实现本地或远程攻击,直接盗取和包用户资金,如给任意账号充值等,给用户带来直接经济损失。
 
图片描述

  • 0X04 安全建议

 
1) 建议自定义实现X509TrustManager时,在checkServerTrusted中对服务器信息进行严格校验
2)在重写WebViewClient的onReceivedSslError方法时,避免调用proceed忽略证书验证错误信息继续加载页面
3)在自定义实现HostnameVerifier时,在verify中对Hostname进行严格校验
4)建议setHostnameVerifier方法中使用STRICT_HOSTNAME_VERIFIER进行严格证书校验,避免使用ALLOW_ALL_HOSTNAME_VERIFIER
 
 

  • 0X05 参考

https://en.wikipedia.org/wiki...
https://en.wikipedia.org/wiki...
http://drops.wooyun.org/tips/...
 
(腾讯御安全技术博客)


移动安全防护技术
关注移动移动安全防护技术,共分享相关技术干货

腾讯御安全 — 是由腾讯手机管家为服务广大移动应用开发者推出的专业App安全防护平台。APP漏洞扫描、APP...

31 声望
11 粉丝
0 条评论
推荐阅读
腾讯御安全深度解析暗云Ⅲ
前面对暗云的分析报告中,腾讯电脑管家安全团队和腾讯御安全基本摸清暗云Ⅲ的感染方式和传播方式,也定位到被感染暗云Ⅲ的机器会在启动时从服务端下载任务脚本包——ndn.db文件,且该文件会常进行更换。此外,撰写本文...

YAQ御安全阅读 3.4k

网易云音乐开源全链路埋点方案-曙光埋点(dawn)
网易云音乐开源了曙光埋点 dawn,一个跨多端的全链路埋点解决方案,旨在构造一个完美的数据理想国。曙光埋点创造性的提出了埋点虚拟树(VTree),并在此基础上实现了诸多能力,解决大前端侧埋点困难、精度差、不...

云音乐技术团队3阅读 2.4k

封面图
http 和 https 的通信过程及区别
🎈 两者的区别端口: http 端口号是80, https 端口号是443传输协议: http 是超文本传输协议,属于明文传输; https 是安全的超文本传输协议,是经过 SSL 加密后的传输协议安全性: https 使用了 TLS/SSL 加密,...

tiny极客2阅读 3k评论 2

封面图
直播回顾 | 点击率提升400%,Ta是怎么做到的?
Discovery第18期直播已于3月30日圆满结束,本期直播邀请天眼查做客直播间,从天眼查与华为Push用户增长服务合作历程切入,聚焦用户增长,分享提升应用活跃度和渠道ROI的经验与见解。一起来回顾本期精彩内容吧!

HMSCore阅读 6.4k

国产操作系统新进展:OpenCloudOS 社区推出首个全自研发行版
3 月 31 日,国产操作系统开源社区 OpenCloudOS 正式发布首个全自研社区 9.0 版本(以下简称“OC9.0”)。据了解,该版本由腾讯等十余家企业共同开发并长期维护,其内核及用户态软件均为自主选型、独立演进,在操作...

Yan阅读 6.1k

Android Crash 前的最后抢救
众所周知,当 Andoird 程序发生未捕获的异常的时候,程序会直接 Crash 退出。而所谓安全气囊,是指在 Crash 发生时捕获异常,然后触发兜底逻辑,在程序退出前做最后的抢救。

xiangzhihong1阅读 1.3k

教你如何在 Andorid 上使用OpenAI API 调用ChatGpt
现在Chat GPT功能越来越强了,几乎你想问实际问题它都能给你回答。正好,小组结课的 Android项目 有一个解梦的功能。正好调用chatGpt的Api来实现。下面就来简单实现在Andorid项目中打造一个简易的聊天机器人。

weiweiyi1阅读 987

腾讯御安全 — 是由腾讯手机管家为服务广大移动应用开发者推出的专业App安全防护平台。APP漏洞扫描、APP...

31 声望
11 粉丝
宣传栏