VxWorks固件分析
VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。
介绍
VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。
固件分析
固件提取的常用方式是使用binwalk工具进行分析和提取。
提取
Binwalk分析,该固件内嵌一个使用lzma压缩的二进制数据。
解压
可采用lzma命令或者binwalkh指令解压缩
- lzma
- binwalk
该文件就是我们需要分析的VxWorks固件。
固件加载地址
首先需要查找VxWorks系统固件加载地址,否则系统将无法运行。加载地址将影响后面一些绝对地址的引用比如函数表及字符串的引用。
查看设备架构
- ARM
IDA分析
-
选择ARM/little
-
基地址为0
VxWorks采用usrInit进行栈初始化,usrInit是VxWorks系统引导后运行的第一个函数。
LDR R0,=0x40205000
BIC R0,R0,#3
SUB RO,RO,#4
MOV SP,RO #栈执政赋值 R0=$sp+0
可知加载的基地址为0x40205000
利用符号表修复函数名
Bzero是VxWorks中一个函数,系统启动过程中会使用bzero函数对bss区的数据进行清零,因此可以利用”grep -r bzero”查找bzero函数。
$ grep -r bzero
- memset
手动定位
符号表
00 05 1B 29 00 00 34 E4
文件大小和符号表大小
8字节之后就是符号表
00 00 34 E4 => 13540(10进制)
8 + 8 * 13540 = 108328(符号表偏移)->符号表位置
函数符号偏移
54 00 00 00 40 37 36 84
类型(函数) 54
符号表偏移 00 00 00 -> 0
内存中的偏移 40 37 36 84
函数名称 AES_CMAC
VxHunter工具修复
自动修复函数名
该工具自动识别函数符号
项目地址:
https://github.com/PAGalaxyLab/vxhunter.git
总结
VxWorks固件分析,主要从内存加载地址及符号表入手,修改符号表与确定内存加载地址,对后续的漏洞挖掘起到至关重要的作用。