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

866697029909260201603241008185gye5tKk6EPB4iliO722011944.3.82Android_21-1794*1080-HUAWEI GRA_UL1020093CAS000169918666970299092601050:a7:2b:c5:e2:d8

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

0X04 安全建议

1) 建议自定义实现X509TrustManager时,在checkServerTrusted中对服务器信息进行严格校验

2) 在重写WebViewClient的onReceivedSslError方法时,避免调用proceed忽略证书验证错误信息继续加载页面

3) 在自定义实现HostnameVerifier时,在verify中对Hostname进行严格校验

4) 建议setHostnameVerifier方法中使用STRICT_HOSTNAME_VERIFIER进行严格证书校验,避免使用ALLOW_ALL_HOSTNAME_VERIFIER


作者:佚名

来源:51CTO

相关文章
|
3天前
|
安全 网络协议 网络安全
HTTPS:保护你的网站免受中间人攻击的关键技术
【6月更文挑战第13天】HTTPS是抵御中间人攻击的关键技术,通过数据加密、身份验证和完整性保护保障网络安全。它基于SSL/TLS协议加密通信,防止数据被窃取或篡改,并使用数字证书确认服务器身份,避免伪造。要确保HTTPS安全,需使用有效数字证书,启用强制HTTPS,定期更新维护并限制访问范围。
|
1月前
|
安全 Android开发
Android之OKHttp基本使用和OKHttp发送https请求安全认证
Android之OKHttp基本使用和OKHttp发送https请求安全认证
57 0
|
16天前
|
安全 网络安全 量子技术
网络安全与信息安全:漏洞、加密技术与安全意识的探索安卓应用开发中的内存管理策略
【5月更文挑战第31天】随着互联网的普及,网络安全问题日益严重。本文将深入探讨网络安全漏洞、加密技术以及安全意识等方面的问题,以期提高公众对网络安全的认识和防范能力。
|
18天前
|
缓存 安全 应用服务中间件
蓝易云 - Nginx的HTTPS部署与安全性能优化教程
以上就是在Nginx上部署HTTPS并进行安全性能优化的基本步骤。需要注意的是,这些步骤可能会根据您的具体需求和环境有所不同。
27 0
|
21天前
|
域名解析 网络协议 安全
【域名解析DNS专栏】DNS-over-TLS与DNS-over-HTTPS:安全升级新标准
【5月更文挑战第26天】随着网络技术的发展,DNS协议面临安全挑战,DNS-over-TLS (DoT) 和 DNS-over-HTTPS (DoH) 作为解决方案出现,旨在通过加密增强隐私和安全。DoT使用TLS封装DNS查询,防止流量被窥探或篡改;DoH则利用HTTPS隐藏DNS查询。实施DoT需在客户端和服务器间建立TLS连接,DoH需DNS服务器支持HTTPS接口。这两种技术为网络安全提供支持,未来有望更广泛部署,提升网络环境的安全性。
|
1月前
|
Web App开发 缓存 前端开发
《手把手教你》系列技巧篇(四十四)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-下篇(详解教程)
【5月更文挑战第8天】这篇文档介绍了如何在IE、Chrome和Firefox浏览器中处理不信任证书的问题。作者北京-宏哥分享了如何通过编程方式跳过浏览器的证书警告,直接访问不受信任的HTTPS网站。文章分为几个部分,首先简要介绍了问题背景,然后详细讲解了在Chrome浏览器中的两种方法,包括代码设计和运行效果,并给出了其他浏览器的相关信息和参考资料。最后,作者总结了处理此类问题的一些通用技巧。
30 2
|
1月前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(四十三)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-上篇(详解教程)
【5月更文挑战第7天】本文介绍了如何在Java+Selenium自动化测试中处理浏览器对不信任证书的处理方法,特别是针对IE、Chrome和Firefox浏览器。在某些情况下,访问HTTPS网站时会遇到证书不可信的警告,但可以通过编程方式跳过这些警告。
23 1
|
1月前
|
安全 算法 网络协议
HTTPS:如何确保您的网站数据传输安全?
HTTPS:如何确保您的网站数据传输安全?
|
1月前
|
移动开发 安全 网络安全
Https中间人攻击
Https中间人攻击
27 0
|
1月前
|
Android开发
Android中Glide加载Https图片失败的解决方案
Android中Glide加载Https图片失败的解决方案
29 1