小米IoT安全峰会—Dennis Giese《IoT Reverse Engineering》

2018 年 12 月 7 日 小米安全中心

我们带来的第六个重磅内容,来自美国东北大学安全研究员Dennis Giese带来的——《IoT Reverse Engineering》

大家好,我叫Dennis Giese,我很喜欢 IoT 设备逆向分析这个技术方向,目前是美国东北大学安全研究员。大家一定很奇怪,为什么我会在这里演讲?这个缘分来自2017年的4月小米发布了一款扫地机器人,在查看他的配置时我惊奇的发现他竟然有三个处理器,而且价格非常便宜,于是我对这家公司产生了兴趣。研究后我发现小米的产品设计都很好看,最重要的就是便宜(因为我还是学生,没有太多的资金投入在设备研究上),另外就是我在这些设备上看到了一个成熟标准化的IoT生态平台。也就是从这时候开始,我深深的陷入了小米无法自拔。这两年我总共投入了 $9000 总共买了 140 件小米的智能设备,玩IoT安全绝对是一个烧钱的爱好(我曾经为了研究小米扫地机器人一口气买了15台),这张图就是米粉的证据:)


2018年小米与我取得了联系,我们在技术上非常聊得来,所以我就成为了小米安全中心外聘安全顾问,他们也开始免费给我提供大量的测试设备,不得不说我非常喜欢这一点,这是一家有趣的公司。

OK,我为什么喜欢逆向 IoT 设备?因为可以发现漏洞去控制别人的设备,或者把企业的云控制服务断开自己实现私有云操控,再或者我可以对一些功能进行增强(新的特性、本地化语言等),并且能够给其他研究者分享一些思路。


这张图是 IoT 设计架构,这里有三个重点,调试接口、固件与存储,都是容易出问题的地方。那比较常见的防护措施有哪些呢?

  • 固件来讲就是加密与验签

  • 硬件上会有一种叫做一次性存储芯片和eFuses熔断的产品

  • 调试口常见的方式就是禁用

  • SecureBoot 和Flash整体加密比较少使用,可能开发者觉得比较麻烦或需要额外的成本


初期在做研究时我的分析设备很少,主要就是树莓派、脱焊烙铁和万用表,但有条件的话最好有回流焊和显微镜,最厉害的就是电子显微镜,能看清电路板上更多细节(但这个也最贵)。


树莓派是很给力的设备,它上面有很多开源的工具,让树莓派变成瑞士军刀,比如JTAG可以用OpenOCD链接调试,SPI Flash可以用Flashrom链接,还可以挂载flash的镜像文件等,最关键的是它自身架构就跟很多IoT设备相似。

如果我们成功的发现了设备上存在的调试接口,能做些什么呢?

  • 如果是UART,那我可以利用它导出固件做分析,或者操作bootloader

  • 如果是JTAG/SWD那就更强大了,我可以对寄存器、内存和MCU指令进行调试,比如分析内存结构或提取密钥


这里有个有趣的案例,这台路由器底部提供了很多散热口,而且比较大,通过这些散热孔我可以直接把金属丝钩在PCB的孔洞上,这样我不用破坏保修封条的情况下串口调试设备了。

这里大家可能会有个疑问,如果调试接口没有明确标记的情况下我们怎么找到他,接对引线呢?我有一些方法,但需要一定的经验。比如好好的阅读数据手册,它能帮你的大忙,把调试引脚明确的标记出来;擅用信号分析器,比如JTAGulator等。下面就是我对一款Zigbee网关进行的分析,找出了没有标记的JTAG接口。


找到调试口之后我们可以先获取固件,方法比较多,常用的比如直接抓OTA包,如果OTA是HTTP协议就可以直接下载了(同时还有篡改的可能性)。如果你有UART口,那可以进入系统后通过nc把核心程序发出来。如果是JTAG,可以直接尝试 memdump 读取内存中映射的Flash内容。但是!如果所有的办法都不好使怎么办?那我们就直接从存储芯片去读。这种8Pin的Flash最方便,可以用编程器的夹子夹住在线编程,如果在线编程不行就做脱焊处理离线编程。如果是BGA芯片就比较麻烦了,但也可以脱焊离线编程,但回焊操作不当的话很容易变砖。


这里还要给大家分享一个错误注入的技巧,大多数SoC都有fallback机制,在发生系统载入错误,Flash丢失等问题时会fallback到编程模式,或者允许用户修改外部启动媒体。这个机制在软件中也有可能出现。看一个BGA错误注入的例子。我们只需要一块能导电的小锡纸儿,小心点插入BGA底部,将MMC的数据针脚短接制造出错误,设备fallback到FEL模式,这时我就可以做一些事情了,比如dump flash,修改 flash ROOT设备,重刷固件等。


开发者在整个IoT中扮演了重要的角色,很多设备的安全高度与开发者能力意识成正比。比如某款产品开发时间很短,开发人员又很懒,那怎么办呢?很有可能就是搞套模块的SDK和工具链,用样例代码改改,可以跑起来了当成正式产品固件发布了,有问题就后面再说(或者永远都不管了)。

消费者也是个重要角色,如果你对安全很无知也会造成严重的安全后果,不仅仅影响你自身。比如错误的将摄像头设置在公网,没有防火墙,密码123456,那就惨了。比较实际的案例就是mirai,竟然会有这么多的感染量,绝大部分都来自于默认的登陆方式。对于蠕虫来讲小米有个坏消息给他,那就是小米的设备因为依赖云端,所以此类攻击面很少。


还有一种情况,一些硬件平台的固件无法直接用IDA分析,因为固件被压缩或没有调试符号,这种情况下我们怎么办?我在 Cortex-M 平台的固件上找到了一种方法:

  1. 首先我找到了对应的SDK

  2. 然后我编译一个超多函数,超多功能与debug符号的测试程序

  3. 对测试的程序建立一个IDA数据库,用这个数据库加载目标固件

  4. 用bindiff识别出相同的函数,这样目标固件的函数基本都可以识别了,逻辑也变的清晰起来


最后我再给大家分享一些我的个人技巧:

  1. 首先每个型号的设备多买几台,我就买了15台扫地机器人,每台设备做不同的目标分析,保证未配置和已配置的设备差异都能够得到,一个用来做初始参考,一个用来逆向和root,互不影响

  2. 做好准备工作,FCC文档和现成的拆解图找全做参考;在第一次开机前就做脱焊flash、dump固件的操作,对最原始的固件进行分析,最后在对固件打补丁

OK,我的分享就到这里,感谢在座的各位,感谢我的导师们,感谢Secure Mobile Networking (SEEMOO) Labs and CROSSING S1,感谢Andrew Sellars and Team,感谢小米,我是米粉,再见!

点击文末阅读原文,即可下载议题pdf~

前期回顾:

小米IoT安全峰会—陈洋《小米 IoT 安全思考与实践》

小米IoT安全峰会—朱玲凤《小米 IoT 隐私数据合规实践》

小米IoT安全峰会—胡珀《IoT + AI + 安全 =?》

小米IoT安全峰会—孟卓《IoT 安全战地笔记》

小米IoT安全峰会—叶云《智能门锁,让居住更安全》

登录查看更多
0

相关内容

《工程》是中国工程院(CAE)于2015年推出的国际开放存取期刊。其目的是提供一个高水平的平台,传播和分享工程研发的前沿进展、当前主要研究成果和关键成果;报告工程科学的进展,讨论工程发展的热点、兴趣领域、挑战和前景,在工程中考虑人与环境的福祉和伦理道德,鼓励具有深远经济和社会意义的工程突破和创新,使之达到国际先进水平,成为新的生产力,从而改变世界,造福人类,创造新的未来。 期刊链接:https://www.sciencedirect.com/journal/engineering
【复旦大学-SP2020】NLP语言模型隐私泄漏风险
专知会员服务
24+阅读 · 2020年4月20日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
28+阅读 · 2020年3月5日
安全和健壮的医疗机器学习综述,附22页pdf
专知会员服务
46+阅读 · 2020年1月25日
DARPA | 世界上最大的“5G+AI+仿真”探索项目
走向智能论坛
30+阅读 · 2019年7月29日
ZigBee 网络安全攻防
计算机与网络安全
13+阅读 · 2019年4月15日
蚂蚁金服微服务实践(附演讲PPT)
开源中国
17+阅读 · 2018年12月21日
小米Note3 ‖ 国产首款支持人脸解锁手机
机械鸡
4+阅读 · 2017年9月12日
一个人的企业安全建设之路
FreeBuf
5+阅读 · 2017年7月7日
Graph Analysis and Graph Pooling in the Spatial Domain
Revealing the Dark Secrets of BERT
Arxiv
4+阅读 · 2019年9月11日
Arxiv
12+阅读 · 2018年9月5日
Arxiv
3+阅读 · 2018年2月24日
VIP会员
相关VIP内容
相关资讯
DARPA | 世界上最大的“5G+AI+仿真”探索项目
走向智能论坛
30+阅读 · 2019年7月29日
ZigBee 网络安全攻防
计算机与网络安全
13+阅读 · 2019年4月15日
蚂蚁金服微服务实践(附演讲PPT)
开源中国
17+阅读 · 2018年12月21日
小米Note3 ‖ 国产首款支持人脸解锁手机
机械鸡
4+阅读 · 2017年9月12日
一个人的企业安全建设之路
FreeBuf
5+阅读 · 2017年7月7日
Top
微信扫码咨询专知VIP会员