《移动智能终端安全》课件第6章.pptx

上传人(卖家):momomo 文档编号:7608241 上传时间:2024-04-17 格式:PPTX 页数:44 大小:548.51KB
下载 相关 举报
《移动智能终端安全》课件第6章.pptx_第1页
第1页 / 共44页
《移动智能终端安全》课件第6章.pptx_第2页
第2页 / 共44页
《移动智能终端安全》课件第6章.pptx_第3页
第3页 / 共44页
《移动智能终端安全》课件第6章.pptx_第4页
第4页 / 共44页
《移动智能终端安全》课件第6章.pptx_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、第6章 固件篡改攻击6.1 常见常见Flash芯片介绍芯片介绍SPI(同步外设接口)总线是全双工同步串行总线,包括一根串行同步时钟信号线及两根数据线。SPI总线应用在Flash与EEPROM、ADC、FRAM和显示驱动器的慢速外设器件通信中。SPI总线速度快、成本低,在中小容量的闪存芯片中应用广泛。第6章 固件篡改攻击25系列存储芯片用于存储固件程序或产品数据,可以进行读取或擦除操作。25系列Flash芯片属于基于SPI总线标准的串行Flash存储器,容量从512kb到32Mb。容量大小可从型号中观察得出。例如:(1)MX25L4005:是25系列Flash芯片,容量为4Mb,其对应的数据文件

2、的大小是4Mb(512KB)。(2)PM25LV512:是25系列Flash芯片,容量为512kb,其对应的数据文件的大小是512Kb(64KB)。第6章 固件篡改攻击(3)W25X40:是25系列Flash芯片,容量为4Mb,其对应的数据文件的大小是4Mb(512KB)。以上芯片遵循一个代换原则:同一系列、容量相同时,则可以代换。例如W25X40和MX25L4005,其参数、性能和编程方法相同,可以互换。第6章 固件篡改攻击6.2 编程器介绍编程器介绍6.2.1 多功能编程器多功能编程器多功能编程器支持对AT89系列芯片、AVR芯片、EPROM、EEPROM、FLASH、串行EEPROM等常

3、用PIC单片机芯片的刷新。多功能编程器价格低、性价比高,适合单片机开发人员使用。第6章 固件篡改攻击6.2.2 编程器的分类编程器的分类编程器在功能上可分为通用型编程器和专用型编程器。(1)通用型编程器。通用型编程器支持几乎所有需要编程的芯片,适合需要对多种芯片编程的情况,一般能够涵盖几乎所有当前需要编程的芯片。通用型编程器设计复杂,成本高,因此售价高。(2)专用型编程器。专用型编程器价格低,适用芯片种类少,适合于某一种或某一类芯片编程的需要,仅用于专用芯片编程。第6章 固件篡改攻击6.2.3 使用编程器读写芯片的方法使用编程器读写芯片的方法使用编程器读写芯片的步骤如下:步骤1:选择并口功能完

4、好的台式主机,按照说明书的要求安装编程器软件。如果系统中已经安装了杀毒软件,就需要在杀毒软件中将编程器的安装目录列入空白名单中或将编程软件列为信任程序。步骤2:编程软件安装好之后,将编程器用并口线和USB线连接,并按要求对编程器进行相关的设置。第6章 固件篡改攻击步骤3:使用普通的32脚BIOS芯片,测试编程器能否正常工作。如果测试正常,即可开始读写25系列Flash芯片。步骤4:操作编程器驱动软件,读取计算机中存储的所需数据作为数据源。步骤5:将空白存储器插到编程器上,操作编程器驱动软件,编程器将正常的数据写入到空白存储器中。第6章 固件篡改攻击6.3 固件的获取固件的获取6.3.1 Fla

5、sh芯片的辨别芯片的辨别各类Flash芯片的外观均不相同,所以使用目测法即可辨别出Flash芯片。通过使用放大镜,观看芯片表面的型号、电路板标识以及针脚,即可辨别Flash芯片。第6章 固件篡改攻击6.3.2 芯片的拆卸芯片的拆卸当确认Flash芯片之后,使用吹焊机和镊子拆卸芯片。吹焊机的温度调节在400左右即可。吹的时候尽量对准焊接处,避免损坏电路板。读取完固件之后还可以将Flash芯片焊接回电路板,以便继续正常使用。第6章 固件篡改攻击6.3.3 使用编程器获取二进制数据使用编程器获取二进制数据将Flash芯片放入编程器中,再将编程器的USB口插入计算机,用CH341A编程器软件即可进行二

6、进制数据的读取。在使用编程器软件之前,需要安装驱动程序。当编程器软件右下角显示“设备连接状态:已连接”后,单击编程器软件界面的【检测】按钮识别固件型号,再单击界面中的【读取】按钮读取固件,最后单击【保存】按钮保存固件。第6章 固件篡改攻击6.4 调试串口获取调试串口获取shell访问权限访问权限6.4.1 串口的查找串口的查找通常,在PCB主板上寻找串口可采用观察法,利用万用表和串口数据接收工具就可以定位串口位置。串口至少包含以下四个引脚:(1)VCC:电源电压,该引脚标明串口工作电压。(2)GND:接地,该引脚通常与PCB地连接。(3)TXD:数据发送引脚。(4)RXD:数据接收引脚。第6章

7、 固件篡改攻击为方便开发,有些板子直接标明串口位置,并给出管脚定义;而商用产品级的板子在PCB主板上未明确标定串口的位置和管脚定义。对于没有直接标明串口的PCB主板,主要靠观察和验证来寻找串口。1.观察观察虽然PCB上没有明确标识出每个引脚的具体含义,但可通过观察具有明显特征的引脚来判别,以VCC引脚为例,其具有以下特点:(1)VCC引脚通常被画成方形,其他引脚为圆形。(2)串口端的VCC电压一般为3.3V或5V,具有明显的特征。第6章 固件篡改攻击2.验证验证单独引出有疑义的引脚后,分别尝试将其接到计算机串口的RXD上,给板子供电后查看计算机串口调试工具有无数据或字符串输出。如果有示波器或逻

8、辑分析仪,可以对引脚电平或输出数据做粗略分析,以减少验证时间。如果最终没有数据输出,则可能存在以下三种情况:该接口不是串口;为安全起见,固件程序没有在串口上输出数据;串口被挪作他用,此时串口上输出的数据是杂乱数据。第6章 固件篡改攻击6.4.2 获取访问控制权限获取访问控制权限以某款网络摄像头为例,通过USB-RS232接入摄像头的串口至PC机。在摄像头上电之后,可以观察到PC串口调试工具显示的日志信息。通过打断u-boot引导可得知摄像头u-boot所支持的命令,该命令可能已经对摄像头造成了安全隐患。第6章 固件篡改攻击6.5 固件的逆向分析及篡改固件的逆向分析及篡改固件逆向分析是在不对嵌入

9、式系统进行实际运行的情况下,通过对固件文件进行逆向解析,分析固件中各代码模块的调用关系及代码关系,从而发现嵌入式系统中可能存在的漏洞及后门。固件代码是一类二进制可执行代码。固件代码逆向分析包括代码预先处理、处理器类型识别、代码识别、结构分析、总结和验证五个阶段,如图6-1所示。第6章 固件篡改攻击图6-1 固件代码逆向分析流程第6章 固件篡改攻击(1)代码预先处理:对多个目标代码文件进行横向和纵向拼接,根据不同情况对指定数据位取反,进行字节交换、字节逆序等变换操作;根据存储器物理分布等参数进行代码重定位,还原目标代码的结构规律。(2)处理器类型识别:指根据目标代码本身所包含的一些特征信息来确定

10、目标代码使用的指令集类型。(3)代码识别:可借助工具软件,如Binwalk、BAT(Binary Analysis Toolkit)进行识别。第6章 固件篡改攻击(4)结构分析:对常见漏洞入口进行有针对性的静态分析,包括密码、默认开启的服务、端口、配置文件等。方法有以下几种:提取文件中的明码字段可能包含的硬编码密码。发掘固件的关联性,分析作者、库使用、目录结构、配置文件、关键字之间的关系。对二进制可执行文件进行反汇编分析。(5)总结和仿真验证:对以上步骤进行总结和验证。第6章 固件篡改攻击6.5.1 相关相关MCU指令结构指令结构MCU即微控制器,它以MPU内核为芯片核心,内部集成ROM、EP

11、ROM、EEPROM、FLASH、RAM、A/D变换器、D/A变换器、总线逻辑、定时器/计数器、I/O接口、串行接口和脉宽调制器等功能部件。MPU是计算机和其他应用系统的核心部件,主要由运算单元、寄存器阵列、Cache和总线接口等部分组成。第6章 固件篡改攻击MCU的指令结构包含四个要素:指令类型、指令操作、寻址模式和操作数。机器指令是处理器唯一能识别的指令形式,由连续的二进制码组成。根据机器指令各二进制码位的功能不同,可以将机器指令表示为由操作码(OPC)、条件码(CC)和操作数编码(OPD)构成的三元组。机器指令的组成如图6-2所示。图6-2 机器指令组成第6章 固件篡改攻击操作数编码部分

12、由一系列的二进制码组成,根据所表示对象的不同,可以将二进制码分为三种类型:(1)寄存器编码:用于表示某个寄存器的二进制码编码。(2)字符串编码:用于表示某个特殊字符串的二进制码编码。(3)数字编码:用于表示在操作数表达式中出现的某种进制的数所对应的二进制码值。第6章 固件篡改攻击6.5.2 固件代码特征分析固件代码特征分析汇编语言是最接近机器语言的指令表示方式。每条汇编指令都唯一地对应一条机器指令。汇编指令的各组成部分与机器指令的各组成部分之间存在确定的对应关系。汇编指令操作符与机器指令操作码之间存在“一对多”的关系,通常当机器指令操作码编码值确定时,其所对应的汇编指令操作符就可以确定;如果执

13、行条件以及操作对象不同,则机器指令操作码值也不同。第6章 固件篡改攻击但汇编指令的条件词表达式与机器指令的条件码编码值之间存在一一对应关系,且该关系不随指令的不同而不同,即某一种条件码编码值一定对应某一种条件词。汇编指令的操作数与机器指令的操作数编码存在确定的对应关系。机器指令与汇编指令的对应关系如下:(1)根据机器指令的操作码确定汇编指令的操作符。(2)根据机器指令的条件码唯一确定汇编指令的条件词。(3)根据机器指令的寄存器编码、字符串编码以及数字编码,唯一确定汇编指令的寄存器名、字符串和某种进制的数字。第6章 固件篡改攻击6.5.3 固件代码格式识别固件代码格式识别固件代码格式识别为反汇编

14、过程中的指令匹配。指令匹配是在指令信息表中查找操作码与当前反汇编地址处的二进制码相匹配的过程。指令匹配最直接的方法是遍历指令信息表中的所有记录,如果能够找到与当前反汇编地址处的二进制码匹配的指令信息表记录,则指令匹配成功,即进行下一节的指令翻译;如果未找到能匹配的记录,则指令匹配失败,即进行相关的处理。第6章 固件篡改攻击上述方法虽然容易实现,但执行效率低。因此,在指令系统引用接口设计时,考虑了对指令匹配的优化,将指令信息表按照机器指令的一级操作码值进行分组,并使用通用掩码来指示一级操作码在机器指令中所在的位置,同时使用散列表来提高对指令信息表记录组的定位速度,减少匹配操作次数,提高效率。第6

15、章 固件篡改攻击6.5.4 固件代码还原固件代码还原固件代码还原即反汇编过程中的指令翻译。指令翻译是指完成指令二进制编码到汇编符号表达式的映射,在反汇编流程的二进制码指令匹配成功后,根据匹配指令记录中关于汇编指令表达式以及各可变部分的信息,得到相对应的汇编指令符号表达式,其过程分为两个阶段。第6章 固件篡改攻击第一阶段:取出匹配指令记录中汇编指令表达式字段的内容,其中包含汇编指令表达式的固定部分内容和各可变部分的标识字符。第二阶段:从第一个可变部分开始逐个对可变部分进行处理,并将获得的可变部分的汇编表达式替换为相应的可变部分标识符。第6章 固件篡改攻击每一个可变部分按照以下过程进行翻译:(1)

16、根据指令记录中可变部分的相关二进制码指示字段取出当前可变部分的二进制码,然后根据当前可变部分的类型及扩展类型进行处理。(2)如果当前可变部分为寄存器类型,则根据扩展类型编码值在寄存器信息表中索引到某个寄存器组,并在该组中以相关二进制码为依据获得寄存器名。第6章 固件篡改攻击(3)如果当前可变部分为字符串类型,则根据扩展类型编码值在字符串信息表中索引到某个字符串组,并在该组中以相关二进制码为依据获得字符串的汇编表达式。(4)如果当前可变部分为数字类型,则根据扩展类型所规定的进制,将相关二进制码替换为对应进制的数字表达式。完成所有可变部分的翻译和替换后,即可得到与当前反汇编地址的二进制码对应的汇编

17、指令表达式。第6章 固件篡改攻击6.5.5 固件代码仿真调试固件代码仿真调试本小节以路由器固件代码仿真调试为例进行介绍。基本的仿真调试思路是:第一,在Dynamips-gdb-mod仿真器中载入路由器固件并启动运行;第二,在QEMU中载入基于PowerPC的Debian镜像并启动运行;第三,通过上述镜像中的GDB访问Dynamips-gdb-mod上相应的GDB服务端口以调试运行的路由器固件;第四,在QEMU客户端通过中断、显示寄存器数值及继续运行等调试指令完成对Dynamips-gdb-mod仿真器中固件的调试;第五,在IDA中打开固件,并注意根据在IDA中的代码与QEMU客户端显示的指令的

18、异同,来验证自己的定位是否准确。具体步骤如下:第6章 固件篡改攻击(1)打开PowerPC QEMU,在一个窗口中运行基于PowerPC的Debian镜像,在另一个窗口中运行配置有GDB stub的Dynamips,通过QEMU中的GDB来远程调试Dynamips IOS实例。在Dynamips中,在端口6666上启动GDB stub,并且设置tap 1接口,这样就能通过虚拟网络与虚拟路由器进行通信。(2)打开另一个终端窗口,并运行QEMU,(3)一旦启动并作为根用户登录,root即可与虚拟机进行通信。登录后,打开GDB并连接到Dynamips实例(X.X.X.X 是运行Dynamips的IP

19、地址)第6章 固件篡改攻击(4)此时,Dynamips正在运行iOS,在端口6666上有一个调试stub,并连接到PowerPC Debian虚拟机。首先从函数起始位置开始,即图6-3中突出显示的那一行“addi r3,r1,0 x70+var_68”;然后在十六进制视图下观察该地址,此处为0 x803bd528,在GDB中观察该地址,并验证是否在同一个端口中;最后在调试工具IDA中观察指令和地址。第6章 固件篡改攻击图6-3 地址为0 x803bd528通过IDA逆向固件所得指令第6章 固件篡改攻击(5)在调试工具GDB中观察指令和地址,如图6-4所示。图6-4 截获地址为0 x803bd5

20、28处的固件代码第6章 固件篡改攻击(6)通过对比两种调试工具的指令和地址发现:在不同的调试工具中,同样的操作代码的显示有所不同。由于IDA逆向的代码用作静态分析,GDB调试用作动态分析,因此需要进一步验证,具体方法如下:在接口上设置一个IP地址,并在VTY线路上设置密码,如图6-5所示。第6章 固件篡改攻击图6-5 对虚拟机上运行的路由器进行相关设置第6章 固件篡改攻击 保存路由器配置。保证可以从用于开发的虚拟机与ping路由器可以ping通。在bl 0 x81b68928中的0 x803bd534位置上设置断点,即可得到r3、r4和r5中的内容(动、静态分析相互佐证分析的正确性)。从GDB

21、实例中,在b*0 x803bd534命令的所在位置上设置断点,然后输入c或continue,则Dynamip中的路由器实例可以继续启动,切换回Dynamips窗口,只要路由器启动完成,就输入基本配置。第6章 固件篡改攻击6.5.6 固件代码篡改固件代码篡改固件代码篡改即改变固件中的指令,如将bne loc_803bd4ec中的操作码“bne”篡改为“beq”。方法如下:找到bne指令的位置,在十六进制视图下查看。在ht中打开固件,通过bne地址0 x3b559c 定位到要篡改的指令,将0 x40修改为0 x41即可。具体操作如下:3812149161fdecay#ht C2600-BI.BIN

22、。然后按下【F5】键,并输入0 x3b559c,如图6-6所示。第6章 固件篡改攻击图6-6 在ht中通过地址0 x3b559c定位到要篡改的指令第6章 固件篡改攻击将鼠标指针停在40上,按下【F4】键进行编辑,将40更改成41,并按下【F2】键保存,最后按【F10】键退出。现在把文件加载回Dynamips,通过GDB连接到文件,并验证修改是否生效。由图6-7可以看出,地址0 x803bd53c上的指令确实已经从bne 0 x803bd4ec更改到了beq 0 x803bd4ec,即固件篡改成功。第6章 固件篡改攻击图6-7 篡改后的指令第6章 固件篡改攻击6.6 篡改固件的注入篡改固件的注入

23、固件的注入方式主要有以下三种:(1)通过修改芯片引脚信号导入固件,这是固件注入的外部触发方式。外部触发是其他器件通过连接微控制器的引脚来实现恶意功能的触发,如系统时间、网络输入、键盘输入、无线输入等。触发信号一般表现为对微控制器的特定输入。第6章 固件篡改攻击(2)通过恶意代码触发设备更新进程,使其从指定位置读取固件从而达到更新的目的。(3)通过指令更新进程第6章 固件篡改攻击小小 结结本章讲述了如何篡改固件从而造成对智能设备攻击的技术。在介绍攻击技术之前,首先介绍了Flash芯片与编程器的基础知识,包括Flash芯片的识别及型号、编程器的类型和使用方法,以及关于寻找和发现串口的技巧及经验,以便读取固件。读取固件后将得到由“0”与“1”组成的机器码,之后需要进行反汇编以分析其逻辑,因此本章基础知识的第二部分介绍了关于反汇编及MCU指令的基础知识。在具备基础知识之后,以某智能路由器固件篡改为例,介绍了通过对固件篡改而造成的攻击方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《移动智能终端安全》课件第6章.pptx)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|