手把手DIY,教你强攻嵌入式设备那些黑科技 - 全文

Dick 发表于 2017-08-04 09:49 | 分类标签:智能硬件嵌入式系统嵌入式

为助力中国电子工程师更好将创新创意落地,

由华强芯城、电子发烧友网携手ARM联合举办

华强芯城2017工程师创新设计大赛[点击报名]

为什么要举办这个大赛?

简单来说,就是一个给工程师创意创新造梦的舞台;

没有参赛利器?送你mbed相关开发套件;

如果你是一枚科技极客侠,

拥有无数天马行空的想法;

如果你是智造DIY达人,

用有众多令人钦羡的技能;

如果你想亲自参与改变未来智能电子产品,

而且创意爆表;

NB了,Word天!你还在犹豫什么?

Come on!“华强芯城2017工程师创新设计大赛”并且期待你组队来迎战!

未来的创新设计舞台就在这里

快来尽情挥洒你的灵感吧~


 



嵌入式产品Hacking 一直都是备受关注的议题,而越来越多的攻击者也瞄上了物联网嵌入式设备。跟以往纯软件安全研究不同的是,这类研究往往需要结合相应的硬件知识和设备。如何能快速入门嵌入式系统?本文分享针对I2C协议的实战案例和相应的工具使用。希望可以一起来Hacking all the Things。

I2C协议基础

凡是接触过嵌入式系统的朋友,对I2C协议一定不会陌生。其与UART,SPI和JTAG等并列为最常见调试协议。I2C 全称为Inter-Integrated Circuit,是由飞利浦公司设计的一种多主从架构的串口通讯协议。

手把手DIY,教你强攻嵌入式设备那些黑科技

I2C协议非常简单,仅有Clock 和 Data 两条数据总线,外加 Ground. 通常是1个主设备和多个从设备的架构。在通讯速度上分别为100khz,400khz,1Mhz,3.2Mhz。在运用方面对速度没有高要求的,都可以使用I2C进行通讯。比如PC风扇的温度和电池的电压数据采集等,每个I2C设备都各有一个读和写地址,只有知道了这个读写地址才能跟其通讯。

手把手DIY,教你强攻嵌入式设备那些黑科技

除此之外许多用来存储系统配置和参数的EEPROM芯片自身也支持I2C协议,比如IBM Thinkpad 系列用来存储BIOS 密码的EEPROM,就是通过I2C协议在MCU与EEPROM 之间进行交互。

手把手DIY,教你强攻嵌入式设备那些黑科技

手把手DIY,教你强攻嵌入式设备那些黑科技

神器BusPirate

工欲善其事必先利其器,拥有一款神器对嵌入式设备Hacking将起到事半功倍的作用。BusPirate 是由Dangerous prototypes 设计出品的一款硬件hacking 瑞士军刀,支持多项常见协议并可跨平台Windows/Linux/MAC,并拥有丰富的帮助文档。

BusPirate可以Sniffing 和读写 I2C等协议,同时还可对AVR 等芯片进行编程操作,在操作上也是非常简单,只需用minicom 以115200 波特率跟BusPirate连接便可。

手把手DIY,教你强攻嵌入式设备那些黑科技

BusPirate支持协议如下:

手把手DIY,教你强攻嵌入式设备那些黑科技

BusPirate 接口连接示意图:

手把手DIY,教你强攻嵌入式设备那些黑科技

BusPirate 命令列表:

手把手DIY,教你强攻嵌入式设备那些黑科技

攻击案例 -- 数字密码锁

接下来我们来看一个通过分析I2C 协议,从而破解门锁密码的实战案例,我们的目标是这款 型号为YL99 的数字密码锁。这款密码锁完全依赖于用户设置的数字密码,也许对某些人来说不需要带一堆钥匙的确方便了很多。

因为YL99 是完全电子化的的门锁,所以提供了普通机械锁没有的功能。比如YL99 拥有多 个功能不同的账户,Master 账户:可用于设置管理用户密码(默认0123#)。普通账户:用于存储普通用户密码。YL99 同时还提供了贴心的防密码泄漏功能,操作方法:键入起始码(0) + 跟随用于掩盖的任意几位数字+ 跟随正确密码 + # (确认结束)。 通过这样的方式就算边上有人,也不怕被看到正确密码了。

手把手DIY,教你强攻嵌入式设备那些黑科技

但是千里之堤,溃于蚁穴。YL99 的设计缺陷,竟能让人从外部将锁的键盘部分分离,从而访问到内部PCB 主板。而玩过硬件Hacking 的朋友都知道,被人轻易访问到内部PCB 主板部分是大忌。

手把手DIY,教你强攻嵌入式设备那些黑科技

在YL99被打开后主板结构便展现眼前。除了YL99 使用的元器件外,我们还可以清晰看到主板上还标有一个Reset 复位触点。那么这个时候我们便可以通过短接复位触点和Ground 的方式将密码恢复到出厂设置,从而得到bypass 的目的。但这方法的短处也非常明显,在bypass 的时候每次都需要卸螺丝,而且如果恢复到出厂值,很容易就被人发现了。

手把手DIY,教你强攻嵌入式设备那些黑科技

不过好戏才刚开始。我们在主板上还发现了YL99使用的MCU em78p156e 和用来存储密码信息的EEPROM 24C02。通过阅读24C02 的datasheet 我们得知其使用I2C 协议和MCU 通讯,同时datasheet 也清晰的标出了芯片管脚的用途,比如I2C 使用的SCL(时钟频率) 和SDA(数据总线)。

手把手DIY,教你强攻嵌入式设备那些黑科技

手把手DIY,教你强攻嵌入式设备那些黑科技

终于我们的神器BusPirate要派上用场了。我们首先用数据线将24C02的I2C 管脚和BusPirate的对应接口连接起来。

手把手DIY,教你强攻嵌入式设备那些黑科技

手把手DIY,教你强攻嵌入式设备那些黑科技

随后通过minicom 或其他serial tools 进入Buspirate的I2C调试模式。

手把手DIY,教你强攻嵌入式设备那些黑科技

在I2C 的调试模式中,有个非常有用的功能I2C sniffer。通过它我们可以监控I2C 的数据,用过WIRESHARK 的朋友一定不会陌生。

手把手DIY,教你强攻嵌入式设备那些黑科技

开启了I2C Sniffer 模式后,我们便可开始观察MCU 和 EEPROM之间的密码交互。比如YL99 的密码输入过程为起始码(0) + 正确密码 + 结束确认(#)。

通过观察发现在按下结束确认(#) 后,MCU 便向24C02 发送密码验证请求。但随后致命的设计错误出现,EPPROM 24C02 将正确的密码以明文的方式发回给MCU 以求完成密码验证过程,而这过程我们通过BusPirate 的I2C sniffer一览无遗。

手把手DIY,教你强攻嵌入式设备那些黑科技

▲如图:因为使用的little endian 所以密码 123 和456 会反着显示

总结

通过本文的介绍和实践案例,相信大家对I2C 协议和利用方式有了一定的了解。剑走偏锋,反其道行之。攻击者往往将系统的短板作为攻击点,倘若某款嵌入式系统的设计者仅仅考虑到软件层面的安全,而攻击者又能得到物理访问的话,那些防御方式便形同虚设。同时嵌入式产品往往面临上市后便难以升级的困难,一旦攻击方式曝光由此给产品带来的损失是巨大的,因此安全产品在设计之初即应将安全考虑进去。

上一页12345全文

除非注明,本站均为原创或编译,转载请注明:文字来自39度

分享给朋友:
条评论

评 论

提 交

请勿进行人身攻击,谩骂以及任何违法国家相关法律法规的言论。

正在加载评论...