前情提要
在IOT漏洞研究中,除了渗透、逆向等软件手段,有时不可避免与硬件打交道,如果你经常手持各种专业工具对硬件操作,说明研究比较深(You)入(Qian)。
硬件剖析
本章节将简单介绍硬件基础,谈一谈固件提取和硬件调试的几种方式,以及硬件层面的漏洞和加固措施。
3.1 基础
IOT安全研究一般会有固件、无线电、硬件几个方向,可能很多研究人员(包括笔者在内)因为非硬件专业出身,所以更偏向逆向和协议分析,但是掌握一些硬件基础会对漏洞研究工作提供很大帮助。
3.1.1 开发板识别
从开发板能得到哪些信息,这些信息有啥用
- 芯片信息
芯片大家都比较熟悉,尤其近几年也成为贸易战的热门话题。IOT中研究的芯片一般是ROM(Read-Only Memory)芯片,是能读出事先所存数据的固态半导体存储器,与之对应的是断电清空数据的RAM。常见的存储芯片有ROM、PROM、EPROM、EEPROM、FLASH-ROM,IOT产品中多采用Flash芯片作为存储器。
Flash芯片还可分为SPI NorFlash 、CFI Flash、Parallel NandFlash、SPI NandFlash、eMMC Flash等等,这不是我们研究关注的重点,重点是--识别芯片印字。
芯片印字大多数情况会注明芯片的一些信息,主要包括:
(1) 厂商和芯片型号
(2) 芯片类型
(3) 存储的格式和大小
我们可以通过这些信息去搜索获取厂商开发资料、datasheet,为引脚识别和固件提取提供便利。
以上图为例该W25芯片的印字含义如下:
当然还可以通过一些网站反查芯片信息:
http://www.smdmark.com/en-us/search/code
- PCB信息
PCB(Printed Circuit Board),中文名称为印制电路板,是重要的电子部件。在设计和制作PCB的过程中,PCB上的丝印为焊接、调试工作带来了极大的便利。但是产品出厂后,PCB上的芯片以及暴露出来的接口反而为攻击者获取信息提供便利。
PCB丝印除了会暴露电路信息外,还会有我们需要的接口信息和调试信息,比如在上图所示PCB板中,很明确的标出UART调试接口的RX/TX/GND,省去了识别的麻烦,引脚识别以及常用调试方法将在后文涉及。
3.1.2 常用工具
这些工具都是做什么的,什么时候用到
螺丝刀,放大镜之类的工具也很常用,这里就不介绍了,以下介绍一些可能会用到的工具和其功能。
- 万用表
万用表是最常使用到的工具,可以测量电压、电流、电阻、电容、二极管、三极管极性,是电路分析中的重要帮手。一般我们可用其识别引脚,在下文问将简介怎样利用万用表识别UART的RX/TX/GND引脚。
- 编程器
编程器又称烧录器、专门用来对芯片进行读写、编程、烧录的仪器。编程器种类多样,从简单的专用型到全功能通用型都有,价格也从几十元到上万元不等。
- 电烙铁
电烙铁不用多说,就是焊接用的,比如之前所示的PCB板上只有接口,没有引脚针,这时就要自行焊接,焊接需要多加练习,不然很容易焊残~.~
- 热风枪
热风枪主要是利用发热电阻丝的枪芯吹出的热风来对元件进行焊接与摘取元件的工具。
- 杜邦线
杜邦线可用于PCB板的引脚扩展,可以非常牢靠地和插针连接,无需焊接,可以快速进行电路试验。
- ttl转usb头
可以配合杜邦线使用,直接通过软件(minicom/secureCRT等)利用usb口调试设备,为设备研究提供便利。
上述的工具比较亲民,当然有条件的可以上一些更专(ang)业(gui)的工具,当然还有很多这里就不一一列举了。
- 示波器
示波器是一种用途十分广泛的电子测量仪器。利用示波器能观察各种不同信号幅度随时间变化的波形曲线,还可以用它测试各种不同的电量,如电压、电流、频率、相位差、调幅度等等。
- 逻辑分析仪
逻辑分析仪是分析数字系统逻辑关系的仪器。逻辑分析仪是属于数据域测试仪器中的一种总线分析仪,即以总线(多线)概念为基础,同时对多条数据线上的数据流进行观察和测试的仪器,这种仪器对复杂的数字系统的测试和分析十分有效。
- 焊台
焊台是一种常用于电子焊接工艺的手动工具,通过给焊料供热,使其熔化,从而使两个工件焊接起来,一般利用其自动化分离和焊接芯片。
与硬件打交道的最常见的任务就是固件提取和设备调试,固件提取可以是开机通电状态下,也可以关机进行,设备的调试一般以来PCB板提供什么样的接口。
3.2 固件提取
3.1.1 “热”提取
顾名思义,就是在设备通电的状态下,烧录夹连接芯片引脚,然后连接编程器在线读取固件,连接芯片时需要注意引脚的顺序,大多数情况下芯片上会有一个点,点对应的引脚