广告

教你如何能快速入门嵌入式系统?

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

0x01 I2C协议基础

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

013ednc20170803rfKednc

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

014ednc20170803rfKednc

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

015ednc20170803rfKednc

016ednc20170803rfKednc

0x02 神器BusPirate

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

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

017ednc20170803rfKednc

BusPirate支持协议如下:rfKednc

018ednc20170803rfKednc

BusPirate 接口连接示意图:rfKednc

019ednc20170803rfKednc

BusPirate 命令列表:rfKednc

020ednc20170803rfKednc

0x03 攻击案例 -- 数字密码锁

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

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

021ednc20170803rfKednc

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

022ednc20170803rfKednc

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

023ednc20170803rfKednc

演示视频:youtuberfKednc

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

024ednc20170803rfKednc

025ednc20170803rfKednc

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

026ednc20170803rfKednc

027ednc20170803rfKednc

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

028ednc20170803rfKednc

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

029ednc20170803rfKednc

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

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

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

0X04 总结

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

(本文由阿里云先知社区小冰推荐。)rfKednc

20160630000123rfKednc

本文为EDN电子技术设计 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
您可能感兴趣的文章
  • 波兰网友拆德国产电源插排,内部竟是中国制造?! 本文将会介绍LogiLink LPS262U电源插排(接线板)——包含三个USB端口和两个Schuko插座——的内部结构及其简短测试。
  • 上海微系统所使用石墨烯纳米带研制出世界上最小尺寸的 非易失性相变随机存取存储器(PCRAM)被认为是大数据时代新兴海量存储的有希望的候选者之一。然而,相对较高的编程能量阻碍了 PCRAM 中功耗的进一步降低。利用石墨烯的窄边接触可以有效降低每个电池中相变材料的活性体积,从而实现低功耗运行。
  • 第三代半导体——碳化硅材料之制程与分析 SiC功率电子是加速电动车时代到来的主要动能。以SiC MOSFET取代目前的Si IGBT,不仅能使电力移转时的能源损耗降低80%以上,同时也可让芯片模块尺寸微缩至原本的1/10,达到延长电动车续航里程及缩短充电时间的功效。
  • 苹果iPhone 14 Pro、iPhone 14 Pro Max 将采用更快的 随着iPhone 14系列发布的临近,iPhone 14系列的内存供应商也被曝光。一份由DigiTimes发表的报道显示,今年晚些时候到达的"Pro"型号将配备6GB LPDDR5内存,这比当前一代的iPhone 13 Pro和iPhone 13 Pro Max都有6GB LPDDR4X内存提升了一代。
  • 国际象棋机器人Chessrobot夹断对手手指,意外还是设计缺 据悉,在7月19日的莫斯科国际象棋公开赛期间,一位7岁小男孩疑似因提前走子犯规手,意外被“对手”国际象棋机器人Chessrobot夹住手指,造成指骨骨折,该事件登上了热搜榜。该男孩是莫斯科9岁以下最强的30位棋手之一。
  • M2 Pro 和 M2 Max 或是苹果首款采用台积电3nm 工艺的 M1 Pro 和 M1 Max 最多可配置 10 核 CPU 和 32 核 GPU。借助 M2 Pro 和 M2 Max,Apple 有望突破这一门槛,为这两个领域带来更多的核心数量。目前M2 Pro相关的爆料很少,但据称M2 Max 有12 核 GPU 和 38 核 GPU。12 核 CPU 将包括 10 个性能核心和两个能效核心。
相关推荐
    广告
    近期热点
    广告
    广告
    广告
    可能感兴趣的话题
    广告
    向右滑动:上一篇 向左滑动:下一篇 我知道了