狗汪汪玩转嵌入式——I2C 协议分析

 

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

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

0x01 I2C协议基础

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

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

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

0x02 神器BusPirate

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

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

BusPirate支持协议如下:

BusPirate 接口连接示意图:

BusPirate 命令列表:

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

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

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

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

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

演示视频如下: https://www.youtube.com/watch?v=4sqDXkUQbqM

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

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

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

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

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

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

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

0X04 总结

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

  本文作者:又田

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-09-18 22:29:24

狗汪汪玩转嵌入式——I2C 协议分析的相关文章

Ethereal协议分析系统介绍

Ethereal是一个开放源码的网络分析系统,也是是目前最好的开放源码的网络协议分析器,支持Linux和windows平台. Ethereal起初由Gerald Combs开发,随后由一个松散的Etheral团队组织进行维护开发.它目前所提供的强大的协议分析功能完全可以媲美商业的网络分析系统,自从1998年发布最早的0.2版本至今,大量的志愿者为Ethereal添加新的协议解析器,如今Ethereal已经支持五百多种协议解析.很难想象如此多的人开发的代码可以很好的融入系统中:并且在系统中加入一个

LoadRunner使用技巧:协议分析

在做性能测试的时候,协议分析是困扰初学者的难题,选择错误的协议会导致Virtual User Generator 录制不到脚本:或录制的脚本不完整,有些应用可能需要选择多个协议才能完整的记录 客户端与服务器端的请求. 最简单的办法就去跑去问开发人员我们的程序用什么协议通讯.当然,有时候为了面子,不好意思去问(也为装X) ,那就只能自己动手去被测系统所使用的协议. 优秀的第三方协议分析工具还是挺多的,如:MiniSniffer .Wireshark .Ominpeek 等:当然他们除了帮你分析协议

基于单采集器实现的多种流协议分析

网络业界基于流(Flow)的分析技术 主要有NetFlow.sFlow.cFlow和NetStream四种.NetFlow是Cisco公司的独有技术,它既是一种流量分析协议,又是一种流交换技术,同时也是业界主要的IP计费方式.通过NetFlow可以回答有关IP流量方面的问题,比如谁在什么时间.在什么地方.使用何种协议.访问谁.具体的流量是多少等.Netflow协议的主要版本有V5.V8和V9.其中应用较为广泛的是V5和V8版本.NetFlow凭借Cisco网络产品市场占有率的优势而成为当今应用最

monkeysocks开发日志:TCP协议分析及架构规划

jsocks的改造 首先对公司一个项目进行了代理,测试结果:从开始启动到完成,只有4.7M的网络流量,本地空间开销不是问题. 今天把jsocks修改了下,将build工具换成了maven,并独立成了项目https://github.com/code4craft/jsocks.后来算是把record和replay功能做完了,开始研究各种协议replay的可能性. replay时候,如何知道哪个请求对应响应包是个大问题.开始的方式是把request报文的md5作为key,response作为valu

RTSP协议分析

RTSP 协议分析1.概述:  RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetworks公司提交的IETF RFC标准.该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据.类似HTTP协议的流控制协议.它们都使用纯文本来发送信息,而且rtsp协议的语法也和HTTP类似,和HTTP协议相比RTSP协议所不同的地方是,RTSP协议是有状态的协议,而HTTP是无状态的协议.

OmniPeek 基础之协议分析

  Ominpeek介绍   Ominpeek 官网: http://www.wildpackets.com  Ominpeek一款网络抓包工具,或者说网络协议分析工具.不是管是前端开发.后端开发或都测试人员.为了解数据是否正常的传递,经常会用到网络数据包拦截软件来进行分析. Ominpeek 与我们常用的HttpWatch.Fildder 略有不同.HttpWatch 是基于浏览器的插件,拦截HTTP的数据包,而Ominpeek是基于网卡底层扫描的.计算机与外界的交流必经过网卡,也就是说它能拿

RTP协议分析

  目录(?)[-] 第1章     RTP概述 RTP是什么 RTP的应用环境 相关概念 流媒体 第2章     RTP详解 RTP的协议层次 传输层的子层 应用层的一部分 RTP的封装 RTCP的封装 RTP的会话过程 第3章     相关的协议 实时流协议RTSP 资源预定协议RSVP 第4章     常见的疑问 怎样重组乱序的数据包 怎样获得数据包的时序 声音和图像怎么同步 接收缓冲和播放缓冲的作用 第5章     实现方案 第6章     参考资料   RTP协议分析 第1章.    

RTP协议分析和详解

一.RTP协议分析 第1章.     RTP概述 1.1.  RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议).它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本).RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议).RTP用来为IP网上的语音.图像.传真等多种需要实时传输的多媒体数据提供端到端的实时

Web版微信协议分析—版本2

微信web协议分析(微信网页版 wx2.qq.com) 1.打开首页,分配一个随机uuid,2.根据该uuid获取二维码图片.3.微信客户端扫描该图片,在客户端确认登录.4.浏览器不停的调用一个接口,如果返回登录成功,则调用登录接口5.此时可以获取联系人列表,可以发送消息.然后不断调用同步接口.6.如果同步接口有返回,则可以获取新消息,然后继续调用同步接口. 源码地址:https://github.com/biezhi/wechat-robot 执行流程 +--------------+ +--