wordpress可以做什么站,电子商务网站设计总结,快速提高网站权重提升,郴州刚刚发生的事当我们在分析 IOT 设备#xff0c;如智能摄像头、智能门锁、智能路由器等等产品时#xff0c;采用传统的安全检测手段#xff0c;如对 APP 的逆向、云端服务器的渗透测试、产品通信的抓包等方式可以获得部分的信息#xff0c;但如果需要深入分析智能设备底层的工作原理如智能摄像头、智能门锁、智能路由器等等产品时采用传统的安全检测手段如对 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等其常见的封装多为DIP8SOP8TSSOP8等。 2、SPINorFlash SPINorFlash采用的是SPI通信协议。有4线时钟两个数据线片选线或者3线时钟两个数据线通信接口由于它有两个数据线能实现全双工通信因此比IIC通信协议的IICEEPROM的读写速度上要快很多。 NorFlash在擦写次数上远远达不到IICEEPROM并且由于NOR技术FlashMemory的擦除和编程速度较慢块尺寸又较大因此擦除和编程操作所花费的时间会很长但SPINorFlash接口简单使用的引脚少易于连接操作方便并且可以在芯片上直接运行代码其稳定性出色传输速率高在小容量时具有很高的性价比这使其很适合应于嵌入式系统中作为FLASHROM所以在市场的占用率非常高。 常见到的S25FL128、MX25L1605、W25Q64等型号都是SPINorFlash其常见的封装多为SOP8SOP16WSON8US0N8QFN8、BGA24等。 3、ParallelNorFalshCFIFlash ParallelNorFalsh也叫做并行NorFlash采用的Parallel接口通信协议。拥有独立的数据线和地址总线它同样继承了NOR技术FlashMemory的所有特点由于采用了Parallel接口ParallelNorFalsh相对于SPINorFlash支持的容量更大读写的速度更快但是由于占用的地址线和数据线太多在电路电子设计上会占用很多资源。 常见到的S29GL128、MX29GL512、SST39VF020等型号都是ParallelNorFlash其常见的封装多为TSSOP32、TSOP48、BGA64PLCC32等。 4、ParallelNandFlash ParallelNandFlash同样采用了Parallel接口通信协议NandFlash在工艺制程方面分有三种类型SLC、MLC、TLC。 对比ParallelNorFalshNandFlash在擦除、读写方面速度快使用擦写次数更多并且它强调更高的性能更低的成本更小的体积更大的容量更长的使用寿命。这使NandFlash很擅于存储纯资料或数据等在嵌入式系统中用来支持文件系统。其主要用来数据存储大部分的U盘都是使用NandFlash当前NandFlash在嵌入式产品中应用仍然极为广泛因此坏块管理、掉电保护等措施就需要依赖NandFlash使用厂家通过软件进行完善。 常见到的S34ML01G100、MX30LF2G18AC、MT29F4G08ABADA等型号都是ParallelNandFlash其常见的封装多为TSOP48、BGA63、BGA107BGA137等。 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接口速度高达每秒52MByteseMMC具有快速、可升级的性能同时其接口电压可以是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 编程器它可以对 EPROM27系列芯片、EEPROM28系列芯片、FLASH ROM29、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文件