Android HTTPS中间人劫持漏洞浅析

作者:行里

1. Android HTTPS中间人劫持漏洞描述

在密码学和计算机安全领域中,中间人攻击 ( Man-in-the-middle attack,通常缩写为MITM )是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容[1]。
Android HTTPS中间人攻击漏洞源于:1没有对SSL证书进行校验;2没有对域名进行校验;3. 证书颁发机构(Certification Authority)被攻击导致私钥泄露等。攻击者可通过中间人攻击,盗取账户密码明文、聊天内容、通讯地址、电话号码以及信用卡支付信息等敏感信息,甚至通过中间人劫持将原有信息替换成恶意链接或恶意代码程序,以达到远程控制、恶意扣费等攻击意图。
在乌云漏洞平台上,有大量存在HTTPS证书不校验漏洞,例如国内绝大部分Android APP存在信任所有证书漏洞[2]、亚马逊最新官方android版存在一处信任所有证书漏洞[3]、Yahoo雅虎在国内访问遭遇SSL中间人攻击[4]、携程旅游网最新android客户端https未校验证书导致https通信内容完全被捕获[5]。

2. Android HTTPS中间人攻击漏洞影响范围

Android系统

3. Android HTTPS中间人攻击漏洞详情

1) 中间人攻击漏洞位置:

  • X509TrustManager
  • HostnameVerifier
  • setHostnameVerifier (X509HostnameVerifier hostnameVerifier)

2) 漏洞触发前提条件:

  • 自定义的X509TrustManager不校验证书;
  • 或实现的自定义HostnameVerifier不校验域名接受任意域名;
  • 或使用setHostnameVerifier (ALLOW_ALL_HOSTNAME_VERIFIER);

3) 漏洞原理:

由于客户端没有校验服务端的证书,因此攻击者就能与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容[1]。

4. Android HTTPS中间人攻击漏洞证明

1) 客户端不校验SSL证书(包含签名CA是否合法、域名是否匹配、是否自签名证书、证书是否过期)包含以下几种编码错误情况:

a. 自实现的不校验证书的X509TrustManager接口的Java代码片段 (其中的checkServerTrusted()方法实现为空,即不检查服务器是否可信):
这里写图片描述

b. 不检查站点域名与站点证书的域名是否匹配的Java代码片段:
这里写图片描述
c. 接受任意域名的Java代码片段:

SSLSocketFactory sf;
……
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

2)针对某个不校验SSL证书的客户端进行中间人攻击演示如下图所示,可通过中间人劫持获取到登录用户名和密码(该密码参数只是对明文密码进行了一次MD5):

这里写图片描述

5. Android HTTPS中间人攻击漏洞修复建议

1. 对SSL证书进行强校验

出于安全考虑,阿里聚安全建议对SSL证书进行强校验(签名CA是否合法、证书是否是自签名、主机域名是否匹配、证书是否过期等),详细修复方案请参照Google官方关于SSL的安全建议[6];

更多解决方案可以查看:
http://blog.csdn.net/xundh/article/details/53212312

引用

[1] http://zh.wikipedia.org/wiki/%E4%B8%AD%E9%97%B4%E4%BA%BA%E6%94%BB%E5%87%BB
[2] http://www.wooyun.org/bugs/wooyun-2010-079358
[3] http://www.wooyun.org/bugs/wooyun-2010-079350
[4] http://www.wooyun.org/bugs/wooyun-2010-080117
[5] http://www.wooyun.org/bugs/wooyun-2010-081966
[6] https://developer.android.com/training/articles/security-ssl.html

转载自阿里聚安全 :
http://jaq.alibaba.com/community/art/show?spm=a313e.7975615.40002100.9.3J8hVf&articleid=60

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值