深度剖析智能插座的破解过程2014-12-23 16:31:34 来源:刘健皓@360安全播报 阅读:23195次 点赞(0) 收藏(0) 破解智能插座已经是往事云烟了,在Geekpwn活动中已经有人破解智能插座。但是没有公布破解智能插座的细节。这让我这好奇心重的人寝食难安,终于有一天买了几个插座来玩。于是乎就带着大家对小K进行Fuzzing之旅。 配置小K非常简单, wifi名会自动从手机正在使用的基站名中提取出来,如果有多个wifi,用户可以自已修改;在应用软件上输入无线网络的密码,在小K蓝灯闪烁进入配对时按下开始配置,很快就可以让小K与家里无线路由建立连接。 但是在完成将小K加入网络的配置.但是在未配置无线之前,小K插座会有一个自己的SSID:OK_SP3,连接到无线网络后,用nmap扫一下网关地址,发现开放了telnet。结果就手贱的尝试了一下。 结果发现小K是没有设置密码的,这样就直接进入了openwrt系统。 翻来翻去发现的结果不多。只有kkeps_*这些命令可以玩。但是基本上没有什么用,看来得换个姿势了。 放弃openwrt系统的弱口令的诱惑,这只是整个过程的一个插曲,不过这个问题也很严重了,如果没有密码的话,小K是可以被利用当做BOT做拒绝服务攻击。建议用户使用passwd 命令设置一道强密码。 先拿手机应用来正常的使用一下智能插座。开关了一下,同时在网络中进行抓包分析,通过分析发现智能插座执行一个指令时需要8个包构成,而且都是基于UDP协议,由于UDP是可以任意伪源的,是不可靠的。这样的话我们很容易伪造或者重放攻击。 但是智能插座厂家对传输数据进行了加密。这里需要分析一下它的APK看一下使用什么样的加密方式。 逆向了一遍APK,看起来很舒服,对加密的算法的部分没有写在APK里,封装在lib下面。于是果断打开IDA,分析smartplugcronus.so这个库文件。 在这里终于找到了跟加密相关的东西。使用的是AES的加密方法,AES是对称性秘钥,只要翻到秘钥就可以解开数据内容了。 在AES_set_key下面非常容易就找到了AES的秘钥,这下好了。有了秘钥就可以还原消息内容,分析通信方式。 在这里使用python来运算一下AES算法把内容解密出来。这样就看到了真正的消息格式体。 下面对破解出来的数据消息结合小K的使用流程进行分析,消息体格式里面包含。消息类型,发送者MAC,请求状态,随机码等。 wan_server%00:15:61:dd:54:29%nopassword%confirm#69961%request 通过分析会话消息得出,智能插座整个执行命令的过程分为两个步骤,验证和执行。而验证的唯一标识是智能插座的MAC地址。第一个步骤是通过云端返回的随机码做验证。 第二步是执行命令的过程,通过负载云端下发的随机码+控制指令+确认消息就实现了验证+执行指令的过程。插座执行动作后会返回状态给手机。手机就可以看到执行结果了。 具体消息会话内容如下: 执行结果如下: 视频 小编我记得有那么一个段子:天将降大任于斯人也,必先灭其微信,封其微博,收其电脑,夺其手机,摔其ipad,断其wifi,剪其网线,砸其电视,抢其酒瓶……使其百无聊赖,然后发愿、静坐、思过、读书、明智、闻香、品茗、精进、禅定、开悟…… 其实这都没必要,只需轻轻黑其智能智能插座,断其电即可! 效果嘎嘎的!
本文由 360安全播报 原创发布,如需转载请注明来源及本文地址。 |
|