随着物理网的普及,其安全性尤其重要,近日有国外黑客破解一台智能咖啡机,下面就一起来看一下吧。
故事起因
最近一名意大利黑客Simone Margaritelli破解了一台智能咖啡机,Simone是一名移动安全研究员,同时从事高级汇编、C、C++语言开发软件工作,并在Zimperium公司任职,曾开发一款软件工具bettercap,利用这款工具可完成中间人攻击测试。平时Simone很喜欢喝咖啡,于是在几天前他购买了一款咖啡机,并可通过APP来控制咖啡机。于是他就尝试利用逆向工程来控制咖啡机,并达成自己的目的。这款咖啡机使用者可以利用家庭的无线网络,然后使用手机上APP,来冲调咖啡,但Simone平时的工作都是在电脑上完成的,于是他考虑是不是可以在电脑上直接利用终端输入命令,来控制这台智能咖啡机。于是他开始从Android应用程序的通讯协议入手来开始逆向之旅。
首先从网上下载APK安装包,然后打开反编译工具Jadx,然后在CTAGS(代码阅读工具)的帮助下开始对输出的源代码进行分析,当然也可以利用VIM(文本编辑器)查看源码。几个小时后,在源码里面发现了很有趣的几个部分(am.smarter.smarterandroid.models.a clas(类)),在这里面又有几个地方引起我的注意。
破解经过
这些数据包会发送到咖啡机TCP端口2081,当然通讯协议也很简单:第一个字节,命令数,第二个字节至N、可选数据,同时取决于命令代码,最后一个字节,固定为0x7e,代表最后发送的数据包。根据指令的不同回应的信息也不会相同,但对于大多数指令,响应信息如下:
第一个字节:响应信息情况
第二个字节:状态码(0-成功,其余为错误代码)
最后一个字节:如上为0x7e
这个控制命令可以让咖啡保温五分钟,如下:
指令:0x3e 0×05 0x7e
响应信息:0×03 0×00 0x7e
为了验证指令对于咖啡机工作确实有效,再此专门制作一个视频如下:
如果你感兴趣,在这里我分享了源码(点击我),在第一次使用时,需要固定本机的IP地址,而你的配置信息将会保存在~/.smartercoffee目录下,当你以后再次测试时就不需要这么做了。
coffee make -A 192.168.1.50
下面就是一些简单的指令:
冲一杯咖啡
coffee make
冲两杯咖啡,并且使用内置过滤器过滤掉研磨机中的咖啡渣滓
coffee make --filter
保温十分钟
coffee warm --keep-warm=10
完整参数信息
☕ ☕ ☕ SmarterCoffee Client ☕ ☕ ☕
by Simone ‘evilsocket’ MargaritelliUsage: coffee [options] (make|warm)
Options:
-h, –help 帮助
-A ADDRESS, –address=ADDRESS
-M, –make 冲调
-W, –warm 保温
-C CUPS, –cups=CUPS 设置冲调咖啡杯数
-S STRENGTH, –strength=STRENGTH
设置咖啡浓度
-G, –grind 研磨
-F, –filter 过滤
-K TIME, –keep-warm=TIME 设置咖啡保温时间
在使用中发现,需要注册一个账户,但后来发现这个仅仅被用来做数据统计,而且2081端口的访问完全没有受到任何的限制,而身在同一局域网的人都可以访问你的咖啡机,还有更新咖啡机固件信息时,也不需要身份验证。而在这背后,安全问题实际上才是重要的东西。