当我们在分析 IOT 设备,如智能摄像头、智能门锁、智能路由器等等产品时,采用传统的安全检测手段,如对 APP 的逆向、云端服务器的渗透测试、产品通信的抓包等方式可以获得部分的信息,但如果需要深入分析智能设备底层的工作原理,从中发现更深层次的安全问题,就不可避免的需要直接接触硬件本身,这也是传统安全手段未能触及的部分,据此,下面简单的谈下关于电路分析和芯片固件提取和调试的一点心得。

IOT设备固件介绍
在常见的 IOT 产品中,一般采用嵌入式 linux 系统开发,对芯片分析主要目的之一就是获取到硬件系统的固件,从固件中分析可能存在的安全风险。 固件一般存储在 ROM 中,ROM 是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,并且资料不会因为电源关闭而消失。 常见的存储芯片按照存储读取方式和制作工艺不同,可以分为: ROM、PROM、FLASH-ROM。 在大部分IOT产品中多采用 flash 芯片作为存储器,提取固件主要也是通过读取 flash 芯片。参考:https://blog.csdn.net/xu_xy1/article/details/103828240,

一、硬件分析 - edan - 博客园https://www.cnblogs.com/edan/p/10374054.html

芯片介绍
Flash芯片
FLASH ROM 属于真正的单电压芯片,在使用上很类似 EEPROM,因此,有些书籍上便把 FLASH ROM 作为 EEPROM 的一种。事实上,二者还是有差别的。FLASH ROM在擦除时,也要执行专用的刷新程序,但是在删除资料时,并非以 Byte 为基本单位,而是以 Sector(又称 Block)为最小单位,Sector 的大小随厂商的不同而有所不同;只有在写入时,才以 Byte 为最小单位写入;FLASH ROM 芯片的读和写操作都是在单电压下进行,不需跳线,只利用专用程序即可方便地修改其内容;FLASH ROM的存储容量普遍大于EEPROM,约为 512K 到至 8M,由于大批量生产,价格也比较合适,很适合用来存放程序码,近年来已逐渐取代了 EEPROM,广泛用于主板的 BIOS ROM,也是 CIH 攻击的主要目标。
根据技术方式不同可分为: IIC EEPROM、SPI NorFlash 、CFI Flash、Parallel NandFlash、SPI NandFlash、eMMC Flash、UFS2.0 等。下面对芯片分类进行介绍。

1、IICEEPROM
IICEEPROM,采用的是IIC通信协议。IIC通信协议具有的特点:简单的两条总线线路,一条串行数据线(SDA),一条串行时钟线(SCL);串行半双工通信模式的8位双向数据传输,位速率标准模式下可达100Kbit/s;是一种电可擦除可编程只读存储器,掉电后数据不丢失,由于芯片能够支持单字节擦写,且支持擦除的次数非常之多,一个地址位可重复擦写的理论值为100万次,常用芯片型号有AT24C02、FM24C02、CAT24C02等,其常见的封装多为DIP8,SOP8,TSSOP8等。


2、SPINorFlash
SPINorFlash,采用的是SPI通信协议。有4线(时钟,两个数据线,片选线)或者3线(时钟,两个数据线)通信接口,由于它有两个数据线能实现全双工通信,因此比IIC通信协议的IICEEPROM的读写速度上要快很多。
NorFlash在擦写次数上远远达不到IICEEPROM,并且由于NOR技术FlashMemory的擦除和编程速度较慢,块尺寸又较大,因此擦除和编程操作所花费的时间会很长;但SPINorFlash接口简单,使用的引脚少,易于连接,操作方便,并且可以在芯片上直接运行代码,其稳定性出色,传输速率高,在小容量时具有很高的性价比,这使其很适合应于嵌入式系统中作为FLASHROM,所以在市场的占用率非常高。
常见到的S25FL128、MX25L1605、W25Q64等型号都是SPINorFlash,其常见的封装多为SOP8,SOP16,WSON8,US0N8,QFN8、BGA24等。

3、ParallelNorFalsh(CFIFlash)
ParallelNorFalsh,也叫做并行NorFlash,采用的Parallel接口通信协议。拥有独立的数据线和地址总线,它同样继承了NOR技术FlashMemory的所有特点;由于采用了Parallel接口,ParallelNorFalsh相对于SPINorFlash,支持的容量更大,读写的速度更快,但是由于占用的地址线和数据线太多,在电路电子设计上会占用很多资源。
常见到的S29GL128、MX29GL512、SST39VF020等型号都是ParallelNorFlash,其常见的封装多为TSSOP32、TSOP48、BGA64,PLCC32等。

4、ParallelNandFlash
ParallelNandFlash同样采用了Parallel接口通信协议,NandFlash在工艺制程方面分有三种类型:SLC、MLC、TLC。
对比ParallelNorFalsh,NandFlash在擦除、读写方面,速度快,使用擦写次数更多,并且它强调更高的性能,更低的成本,更小的体积,更大的容量,更长的使用寿命。这使NandFlash很擅于存储纯资料或数据等,在嵌入式系统中用来支持文件系统。其主要用来数据存储,大部分的U盘都是使用NandFlash,当前NandFlash在嵌入式产品中应用仍然极为广泛,因此坏块管理、掉电保护等措施就需要依赖NandFlash使用厂家通过软件进行完善。
常见到的S34ML01G100、MX30LF2G18AC、MT29F4G08ABADA等型号都是ParallelNandFlash,其常见的封装多为TSOP48、BGA63、BGA107,BGA137等。

5、SPINandFlash
SPINandFlash,采用了SPINorFlash一样的SPI的通信协议,在读写的速度上没什么区别,但在存储结构上却采用了与ParallelNandFlash相同的结构,所以SPInand相对于SPInorFlash具有擦写的次数多,擦写速度快的优势,但是在使用以及使用过程中会同样跟ParallelNandFlash一样会出现坏块,因此,也需要做特殊坏块处理才能使用。
SPINandFlash相对比ParallelNandFlash还有一个重要的特点,那就是芯片自己有内部ECC纠错模块,用户无需再使用ECC算法计算纠错,用户可以在系统应用当中可以简化代码,简单操作。
常见到的W25N01GVZEIG、GD5F4GQ4UBYIG、F50L1G41A等型号都是SPINandFlash,其常见的封装多为QFN8、BGA24等。

6、eMMCFlash
eMMC采用统一的MMC标准接口,自身集成MMCController,存储单元与NandFlash相同。针对Flash的特性,eMMC产品内部已经包含了Flash管理技术,包括错误探测和纠正,Flash平均擦写,坏块管理,掉电保护等技术。MMC接口速度高达每秒52MBytes,eMMC具有快速、可升级的性能,同时其接口电压可以是1.8v或者是3.3v。
eMMC由一个嵌入式存储解决方案组成,带有MMC(多媒体卡)接口、快闪存储器设备(NandFlash)及主控制器,所有都在一个小型的BGA封装,最常见的有BGA153封装;我们通常见到的KLMAG8DEDD、THGBMAG8B4JBAIM、EMMC04G-S100等型号都是eMMCFlash。eMMCFlash存储容量大,其常见的封装多为BGA153、BGA169、BGA100等。

7、UFS2.0
JEDEC在2013年9月发布了新一代的通用闪存存储器标准UFS2.0,该标准下得闪存读写速度可以高达每秒1400MB,这相当于在两秒钟内读写两个CD光盘的数据,不仅比eMMC有更巨大的优势,而且它甚至能够让电脑上使用的闪存存储介质固态硬盘也相形见绌。UFS闪存规格采用了新的标准2.0接口,它使用的是串行界面,很像PATA、SATA的转换,并且它支持全双工运行,可同时读写操作,还支持指令队列。相对之下,eMMC是半双工,读写必须分开执行,指令也是打包,在速度上就已经是略逊一筹了,而且UFS芯片不仅传输速度快,功耗也要比eMMC5.0低一半。

芯片印字

  一般 PCB 上有多块逻辑处理 IC,在多个 IC 芯片中,可以通过分析电路原理和查找芯片印字来确定具体的存储芯片。 芯片上的丝印大多数情况会注明厂商和芯片型号,通过印字可以初步确定芯片类型,同时丝印层的文字也可以帮助我们来确定存储的格式和大小,常见的 W25 芯片的印字含义如下:参考:一、硬件分析 - edan - 博客园

编程器

  读取Flash芯片,需要借助编程器,编程器又称烧录器、写入器、写码器,是专门用来对 IC 芯片进行读写、编程/烧录的仪器。并口多功能 BIOS 编程器,它可以对 EPROM(27系列芯片)、EEPROM(28系列芯片)、FLASH ROM(29、39、49系列芯片)及单片机、串行芯片等进行读写、编程,是一种性价比较高的编程器。 编程器种类多样,从功能简单的专用型到功能全面的全功能通用型都有,价格从几十元到上万元不等。

信号分析

示波器分析

  示波器是一种用途十分广泛的电子测量仪器。它能把肉眼看不见的电信号变换成看得见的图像,便于人们研究各种电现象的变化过程。示波器利用狭窄的、由高速电子组成的电子束,打在涂有荧光物质的屏面上,就可产生细小的光点(这是传统的模拟示波器的工作原理)。在被测信号的作用下,电子束就好像一支笔的笔尖,可以在屏面上描绘出被测信号的瞬时值的变化曲线。利用示波器能观察各种不同信号幅度随时间变化的波形曲线,还可以用它测试各种不同的电量,如电压、电流、频率、相位差、调幅度等等。

逻辑分析仪(还需测试一下)

  逻辑分析仪是分析数字系统逻辑关系的仪器。逻辑分析仪是属于数据域测试[2]仪器中的一种总线分析仪,即以总线(多线)概念为基础,同时对多条数据线上的数据流进行观察和测试的仪器,这种仪器对复杂的数字系统的测试和分析十分有效。逻辑分析仪是利用时钟从测试设备上采集和显示数字信号的仪器,最主要作用在于时序判定。由于逻辑分析仪不像示波器那样有许多电压等级,通常只显示两个电压(逻辑 1 和 0 ),因此设定了参考电压后,逻辑分析仪将被测信号通过比较器进行判定,高于参考电压者为 High ,低于参考电压者为 Low,在 High 与 Low 之间形成数字波形。

设备拆解

  对于一台未接触过的机器,拆解首先需要观察其外部结构,是否存在暴露的螺丝孔,如果没有,一般可能隐藏在贴纸或橡胶垫下面,可以用手感受是否存在空洞,部分机器采用卡榫结构,只要找对方向,用一字螺丝刀或撬片,从缝隙中就可以撬开,拆解设备唯一的要诀就是胆大心细。部分常用工具如下:

网络图参考:一、硬件分析 - edan - 博客园

自己实验室的图

物理环境

准备工具有RT809F编程器、弹跳座、电烙铁、焊锡、螺丝刀,镊子等工具,如下图:

参考IOT设备固件介绍及提取_xu_xy1的博客-CSDN博客_嵌入式设备固件提取

提取分析步骤

使用螺丝刀,钳子等工具将摄像头外壳拆取下来,找到Flash芯片位置

取下芯片(此处就是用热风机吹)

将flash芯片上残存的焊锡用电洛铁清理干净,将清理后的芯片放置于弹跳座中,需要注意的是芯片是有方向的,第一脚的地方有一个圆点,焊接或用编程器读取时,弄清芯片的方向连接RT809F编程器。

如果不拆芯片,需要这样子的夹具:

通常我们在读取设备固件时,一般采用的夹具连接各种芯片,这样不会对固件和主板造成损坏,我们今天要拆的摄像头可能比较便宜,但是像大型的工控设备,一般一台都是几万到几十万,真拆坏了也很可惜的。

我们对拆下来的固件进行识别后可确定固件的厂商和型号。

将读取出的后缀为BIN的固件进行保存,至此固件读取完毕。

解包固件

首先利用file来检测是否是有效的文件和文件类型,file分析的结果可以告诉我们该文件是否是已知的类型,这里的结果我们可以看到仅仅是显示数据文件。

利用hexdump 工具可以让你分析文件中的每一个字节,这是非常有价值的。使用hexdump分析固件如下,把结果写入到文件中方便分析:

string可以显示文件中所有可打印的数据:

binwalk会分析二进制文件中可能的固件头或者文件系统,然后输出识别出的每个部分以及对应的偏移量,-e参数,自动把固件镜像中的所有文件都解出来:

前面我们提到了获取固件是从软件和硬件两个方面,软件方面主要是网络信息安全防护,硬件方面我们从设备调试接口和芯片拆除分析两部分来获取:
硬件调试接口方法方便了维护客户,但有时也方便了不速之客,软件如果留一个后门是便于维护,但密码太简单的话容易被破解或者猜测,或者容易让别人从固件里分析出来。结论是目前部分智能设备的架构存在一定安全隐患。
智能设备固件存在flash里,flash没有保护固件被非法读取的措施。现在大多数设备的FLASH和RAM、CPU分别独立,这样是特别容易被提取固件的,拆下FLASH用编程器直接能读到flash里面的内容了。如果FLASH和RAM集成在CPU上,并且开启了加密的话这样就会比较难提取固件,也使设备更加安全。
用 binwalk 解包固件。

binwalk是一个可靠且流行的工具,用于处理运行某种操作系统的设备的固件。它被谈论的很多,但重要的是要记住,binwalk虽然不是固件分析工具的全部,但却非常有用和简单。

默认情况下, binwalk会在高层级中遍历二进制文件中的所有字节,寻找魔术字节。如果找到一个,它将在打印到stdout的表上进行报告。

它还可以“分割”或“提取”它找到的每个片段,因此你可以单独查看它。使用-e标志指定它应该提取文件,而不是将它发现的所有内容打印到stdout。根据你运行binwalk的文件的文件名,提取的文件全部进入名为_filename.extracted(或_filename- [int] .extracted,如果该文件夹已存在)的目录中。

由于它的性质,你几乎肯定会遇到误报。文件越大,得到误报的可能性就越大。巧合的是,文件将包含给定顺序的魔术字节,以防binwalk的魔术字节解析器把所报告的内容都误认为是有效的。

所以,当你使用binwalk时,你通常可以根据运行的环境估计出你能看到什么文件类型。如果你正在查看的设备运行的是嵌入式Linux,那么就会获得某种ROM文件系统,不过也可能是squashfs、cramfs或jffs2。你还可以假设你将看到zImage或uImage块,通常情况下你可能还希望看到引导加载程序映像。

分析工具环境

binwalk – 通过固件文件头来分析文件和文件系统

binwalk -e TC58TEG5DCJTA00\@TSOP48_1023.BIN
file – 用来检测是否是有效的文件和文件类型

file TC58TEG5DCJTA00\@TSOP48_1023.BIN
hexdump --16进制导出工具

hexdump -C TC58TEG5DCJTA00\@TSOP48_1023.BIN 
strings --跟hexdump类似但是可以以可读的形式展示

strings TC58TEG5DCJTA00\@TSOP48_1023.BIN >string.txt

lzma --解压LZMA文件

芯片读取设备详解+U盘芯片flash读取分析实录_一篇看够相关推荐

  1. 方舟服务器怎么请求芯片,方舟指令哔哩芯片这么获得?哔哩芯片获得方法详解分享...

    方舟指令哔哩芯片这么获得?哔哩芯片是目前游戏在10月25日更新后上线的道具,小伙伴们可能通过参加比赛获取哦!下面是小编分享的获取途径详解,感兴趣的可以一起来关注下哦! 哔哩芯片怎么获得? 活动时间: ...

  2. 英集芯ip6809规格书pdf芯片文档详解及典型电路原理图

    英集芯ip6809芯片是一款无线充电发送端控制器SOC芯片,兼容WPC Qi v1.2.4新标准.支持2-3线圈无线充电发射端应用,支持A28线圈.MP-A8线圈,支持客户线圈定制方案,支持5W.苹果 ...

  3. 详解C盘Windows文件夹里重要文件的作用

    详解C盘Windows文件夹里重要文件的作用 在整个Windows操作系统中,最重要的莫过于"Windows"文件夹,对电脑进行任何操作几乎都有关.了解这里对于掌握整个系统的运作有 ...

  4. 详解C盘Windows文件夹

    详解C盘Windows文件夹里重要文件的作用 在整个Windows操作系统中,最重要的莫过于"Windows"文件夹,对电脑进行任何操作几乎都有关.了解这里对于掌握整个系统的运作有 ...

  5. 如何用树莓派连接语音模块,红外模块来控制红外设备详解

    如何用树莓派连接语音模块,红外模块来控制红外设备详解 1.硬件设备 2.软件准备 3.解码 1.红外解码流程 1.连接红外设备(与TTL串口相连) 2.获取开关红外电器的码 4.我们使用树莓派如何和W ...

  6. MySQL运维(二)MySQL分库分表概念及实战、读取分离详解

    MySQL运维(二)MySQL分库分表详解.读取分离详解 1.MySQL分库分表相关概念 1.1 分库分表概念 1.1.1 分库的原因 分库:就是一个数据库分成多个数据库,部署到不同机器. 如果业务量 ...

  7. python读取word详解【from docx import Document】

    python读取word详解[from docx import Document] 目录 python读取word详解[from docx import Document] 前言 环境 示例字符串 下 ...

  8. C# 目录路径操作和读取文件详解

    C# 目录路径操作和读取文件详解 文章目录 C# 目录路径操作和读取文件详解 1.Path 类 操作目录路径 2. File 类使用 2.1创建,删除,复制,剪切移动文件 2.2 读取文件:ReadA ...

  9. python读二进制格点雷达基数据_对numpy中二进制格式的数据存储与读取方法详解...

    使用save可以实现对numpy数据的磁盘存储,存储的方式是二进制.查看使用说明,说明专门提到了是未经压缩的二进制形式.存储后的数据可以进行加载或者读取,通过使用load方法. In [81]:np. ...

最新文章

  1. linux发行版的用户交互
  2. 计算机无法安装win10,win10系统电脑提示“windows安装无法继续”的还原步骤
  3. mfc 实现 设备 热插拔功能
  4. 44.更多replace案例
  5. leetcode1353. 最多可以参加的会议数目(贪心算法)
  6. Linux CTRL+ALT+DELETE
  7. PostgreSQL与MySQL语法对比总结
  8. matlab dll 反编译,libmx.dll
  9. 2022-08-20 mysql范围查询技术专利交底书
  10. 【漏洞学习——SSRF】七牛某站SSRF可探测内网
  11. #1.4股市预测数学的产生原因
  12. Linux介绍及基本操作
  13. Windows Mobile系统PDA进行GPS导航的入门知识
  14. 电脑连接HDMI显示器后没声音
  15. 语音通知事件提醒功能实现流程
  16. 三种设置session有效时间的方法
  17. 支付宝的蚂蚁积分用途很多,别不当回事儿,用得好能省很多钱哦!
  18. 【渝粤题库】陕西师范大学100111 计算机应用基础 作业 (高起专)
  19. JS 大杂烩(持续更新)
  20. 降维之主成分分析法(PCA)

热门文章

  1. Constituency Parsing with a Self-Attensive Encoder 论文解读
  2. 昨日互联网,明日区块链
  3. MATLAB水箱液位模糊控制仿真程序
  4. android+音乐节拍检测,科学网—音乐节拍跟踪或音乐节拍检测软件,LilyBeats alpha - 石自强的博文...
  5. 淘宝用户日志数据集的用户行为分析与用户分群
  6. uniApp使用uni.chooseAddress()获取微信收货地址
  7. Nextcloud整合Aria2和AriaNg、Aria2 WebUI实现离线下载
  8. 快递100企业版接口(API)云打印、电子面单实现Java版
  9. java毕业设计高校学习社区mybatis+源码+调试部署+系统+数据库+lw
  10. CoinUp开启GameFi新世界—魔法元世界(MAC)