参考:https://bbs.pediy.com/thread-230095.htm
智能设备组成
先介绍一下智能设备的组成
CPU: X86/ARM/MIPS/PPC等
内存: SDRAM/RAM
存储: Flash/TF卡/SD卡/MMC卡/硬盘
串口: 一般电路板会留,做调试用
网口: 智能设备联网用
USB口: 接U盘做扩展存储用、也可接键盘和鼠标等
无线接口: Wifi/蓝牙/ZigeBee等
bootLoader: Uboot等
操作系统: Linux/RT-Linux/VxWorks/uCOS-II等
Uboot和BusyBox
Uboot
- Uboot是用于嵌入式CPU(ARM、MIPS、PowerPC 、XScale等)的bootloader程序
- UBoot支持嵌入式Linux、VxWorks、QNX等多种嵌入式操作系统的启动引导
- Uboot支持:文件系统,简单的网络命令,TFTP, 串口等
Uboot在嵌入式里一个功能是做引导程序,启动的时候引导用,还有一个功能是做更新时用.支持CPU的种类比较多,比如ARM、Linux、MIPS、PowerPC都支持,也支持简单的网络命令之类的。
BusyBox
- BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。
- BusyBox提供了一个比较完善的环境,适用于任何小的嵌入式系统。
Busybox集成了三百多个常用的Linux命令和工具软件,它非常小巧,编译后大概在1-2兆左右,但支持的命令非常多,而且可以根据需要做裁减。例如:有的裁剪了busybox的指令nc,dd,tar等。
升级接口
- 下载固件接口(硬件接口:JTAG/SWD口;网络协议:TFTP/FTP; 自定协议)
- BootLoader升级接口
- SD/TF卡升级接口
- USB升级接口
调试接口
- 网络/USB日志接口
- 调试接口(一般为TTL串口;也有telnet/SSH网络协议等)
网络获取
官网或联系售后索取升级包
- 适用于官网提供下载智能设备固件的情况
- 有的厂家只能从代理和官方的售后提供固件
在线升级, 抓包获取下载地址
- wireshark配合热点抓设备升级的包
- burpsuite抓APP请求设备升级的包
如果能够抓取到升级的数据包,可以根据命名规则猜测老固件下载地址;
串口
用硬件电路的调试串口和固件的bootloader获取固件
前提是能找到隐藏的UART
- 万用表识别、逻辑分析仪识别监听;
- 接口引线;
从硬件串口获取系统权限后,用tar、nc、dd、echo、vi等命令提取固件
前提是已获取shell权限(网络或串口);
存在ifconfig、nc、tar(zip、dd)命令;
用法:
- 在串口命令模式下:
- 用tar打包固件,或用dd命令提取固件;
- 用ifconfig配置ip地址;用nc命令连接本地机器;
- 通过nc命令传送打包后的固件
调试口
从硬件调试接口:JTAG/SWD, 利用调试工具的任意地址读取功能
存在JTAG接口的设备,直接用Jlink连接读取
读取flash
拆Flash、Sd卡、TF卡、硬盘等,用编程器或对应设备读固件
想办法弄下Flash,用编程器读取固件内容,有本事的还可以焊回去。
RT809:可以自动识别flash类型,自动提取
Flashrom:GitHub - espressif/esptool: Espressif SoC serial bootloader utility
用逻辑分析仪监听flash,ram获取信息
用逻辑分析仪配合对应的软件,监听SPI flash获取信息,并保存二进制文件;
其他
逆向升级软件,软件内置解包和通讯算法
逆向破解上位机,烧录工具
对软件进行抓包分析
通过利用网页和通讯漏洞获取固件敏感信息
存在web功能
任意文件读取
命令执行等漏洞