漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-099268
漏洞标题:WIFI万能钥匙密码查询接口算法破解(可无限查询用户AP明文密码)
相关厂商:WiFi万能钥匙
漏洞作者: 路人甲
提交时间:2015-03-03 16:59
修复时间:2015-06-04 12:58
公开时间:2015-06-04 12:58
漏洞类型:敏感信息泄露
危害等级:高
自评Rank:18
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-03-03: 细节已通知厂商并且等待厂商处理中
2015-03-06: 厂商已经确认,细节仅向厂商公开
2015-03-09: 细节向第三方安全合作伙伴开放
2015-04-30: 细节向核心白帽子及相关领域专家公开
2015-05-10: 细节向普通白帽子公开
2015-05-20: 细节向实习白帽子公开
2015-06-04: 细节向公众公开
简要描述:
http://zone.wooyun.org/content/18815,我是看到这篇帖子后萌生的想法。。。
现在不用装APP,也能查询你家的WIFI明文密码了。
详细说明:
凡是APP就涉及到通信接口,看了下万能钥匙的APP,走的明文HTTP协议这就简单了。
分析Android程序有个杀手锏,就是程序在更新迭代的时候新版本做了API改动,但为了兼容考虑,老版本存在问题的API不会下线,一直存在线上。。。
从GooglePlay下载了1.X版本的WIFI万能钥匙,确实还能用,通过程序包分析算法(说一下在,各种key,salt明文存储,连混淆哪怕是字符拼接都没有。。。)
这个是查询密码用到的数据包,以及参数中sign(签名)的算法,其实就是这些数据进行排序后用salt算个md5。新版本的万能钥匙还有个retSn,实现链式认证,也能突破,但这个报告只说1.x版本的API问题(1.x时代很多细节明显没有考虑完善,基本只靠sign做安全)。
用JAVA实现查询密码请求的签名
为了验证真实性,我给附近的一台OpenWrt SSID前加了个“1OpenWrt”,在计算签名查询,bingo!
第一部分完成了,但发现返回的密码竟然好长一串似乎还真没泄漏用户明文密码哎,但没明文客户端怎么连接呢。。。通过apk分析发现是用了AES加密,当然key和iv也泄漏了。
继续用JAVA程序实现
嘿嘿,原来你家密码是这个(跟这个朋友的分析一致 http://drops.wooyun.org/papers/4976)
另外测试的过程中突然提示
经过分析原来是dhid每日有查询限额,继续分析dhid算法,是通过服务器返回的,具体伪造不在说了,基本还是分析包,打包sign,发包了。
漏洞证明:
这样,就实现了通过SSID,和BSSID查询任意AP明文密码了,本地写了个自用的玩玩。为了证明真实并且避免被恶意利用,我只放出部分POC代码,厂商一看就懂。
查询密码的
AES解密的
整个过程感觉自己又学到不少啊。。。
PS:旧版本是默认分享用户WIFI的,1.0.8这个版本,厂商还记得吧?确实是用户同意的前提,不知情的同意?
修复方案:
解决方案引用官方的话:问问你身边的Android程序员。
版权声明:转载请注明来源 路人甲@乌云
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:5
确认时间:2015-03-06 12:56
厂商回复:
感谢您的关注,已将问题转交至相关团队。
最新状态:
暂无