如何破解一台智能咖啡机

发表于:2016-10-23 09:42:11 来源:  黑客与极客 阅读数(0人)



随着物理网的普及,其安全性尤其重要,近日有国外黑客破解一台智能咖啡机,下面就一起来看一下吧。


故事起因


最近一名意大利黑客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' Margaritelli

Usage: 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端口的访问完全没有受到任何的限制,而身在同一局域网的人都可以访问你的咖啡机,还有更新咖啡机固件信息时,也不需要身份验证。而在这背后,安全问题实际上才是重要的东西。


相关新闻

大家都在学

课程详情

网络安全实践

课程详情

Android安全基础

课程详情

分析Android