本发明涉及实时嵌入式系统设备安全分析,特别涉及一种基于高级抽象层模拟的固件托管分析测试方法及系统。
背景技术:
1、固件托管(firmware re-hosting)是将在特定硬件上运行的二进制文件运行在仿真的虚拟环境中的技术。基于目前研究人员在对固件分析时对动态分析的极大需求,该技术已被广泛应用于固件安全分析中。固件托管涵盖的技术面较广,涉及固件提取、系统仿真、固件测试等方面。目前系统仿真采用的主流方法构建固件的板级支持包(bsp)和设备驱动程序,修改固件自身结构以适配目前主流的虚拟环境。
2、针对航天电子、卫星通讯、工业控制等系统设备固件所搭载的主流系统vxworks(以下统称操作系统)进行动态分析测试时,现有主流方法并不能很好地完成对该操作系统的模拟执行。因为其在执行过程中会发生大量的中断和待执行任务,同时固件在执行的过程中会需要开辟新的空间,使用patch的方式替换操作系统中原有的函数不能确保新生成的空间不会覆盖新添加的代码的空间。此外,基于bsp层的函数模拟需要考虑单个外设中的各个寄存器之间存在相互影响的问题,使得通过修改hal/bsp层函数来对固件进行模拟执行前,必须要充分了解底层外设的交互逻辑,且不同的设备其外设可能完全不同,加大固件模拟执行的难度。
技术实现思路
1、为此,本发明提供一种基于高级抽象层模拟的固件托管分析测试方法及系统,依据固件和高级抽象层模拟之间的映射关系并基于仿真模拟环境来执行固件模拟测试过程,无需构建固件本身的bsp包和设备驱动程序,提升动态调试固件的效率,便于工控系统实际场景中的应用。
2、按照本发明所提供的设计方案,一方面,提供一种基于高级抽象层模拟的固件托管分析测试方法,包含:
3、提取目标固件二进制可执行文件中函数信息,所述函数信息包括函数名、函数调用次数及服务开启情况;
4、获取固件实时操作系统静态库文件及静态库文件所编译的函数名,基于函数名提取目标固件所使用的实时操作系统库函数,并利用预设等价函数替换目标固件中对应库函数,所述预设等价函数为与对应库函数功能等价的重写函数;
5、基于模拟器对目标固件中函数执行分析测试操作,得到目标固件分析测试结果。
6、作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,提取目标固件二进制可执行文件中函数信息,还包含:
7、基于设备信息构建设备mcu模板,依据目标固件格式提取目标固件符号表的首地址和尾地址并获取目标固件的基地址,其中,设备信息包括cpu型号和内存布局。
8、作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,获取固件实时操作系统静态库文件及静态库文件所编译的函数名,包含:
9、基于系统开发工具获取实时操作系统静态库文件及静态库文件所编译过的函数名。
10、作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,基于函数名提取目标固件所使用的实时操作系统库函数,包含:
11、依次根据函数名、函数字符串调用及函数反编译结果识别目标固件中所使用的实时操作系统库函数,并基于识别到的库函数及其在目标固件中的地址建立目标固件库函数映射表。
12、作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,利用预设等价函数替换目标固件中对应库函数之前,包含:
13、识别并定位对外设进行读写操作的库函数,基于污点分析跟踪标记该库函数起始变量,并依据目标固件中该库函数的上层调用关系确定所需替换的库函数地址。
14、作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,利用预设等价函数替换目标固件中对应库函数,包含:
15、基于函数功能将目标固件中库函数分组为若干函数模型组,所述若干函数模型组至少包括:常量函数、可变参数式函数、特殊功能函数及无作为函数;
16、依据各函数模型组对目标固件中对应库函数进行替换,该替换过程包括:重写常量函数返回值为确定常量;依据可变参数式函数的首个参数判断变量个数,并基于变量个数将可变参数式函数重写为多个固定参数的等价函数;依据固定数量的函数参数对特殊功能函数重写为功能等价函数;基于函数重写指令重写无作为函数,以在执行过程中跳过无作为函数执行。
17、作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,基于模拟器对目标固件中函数执行分析测试操作,还包括:
18、设置目标固件中函数被替换执行的监听线程,并在监听线程和执行线程之间建立互斥锁,以利用互斥锁使监听线程和执行线程分开进行。
19、进一步地,本发明还提供一种基于高级抽象层模拟的固件托管分析测试系统,包含:提取模块、重写模块和测试模块,其中,
20、获取模块,用于提取目标固件二进制可执行文件中函数信息,所述函数信息包括函数名、函数调用次数及服务开启情况;
21、重写模块,用于获取固件实时操作系统静态库文件及静态库文件所编译的函数名,基于函数名提取目标固件所使用的实时操作系统库函数,并利用预设等价函数替换目标固件中对应库函数,所述预设等价函数为与对应库函数功能等价的重写函数;
22、测试模块,用于基于模拟器对目标固件中函数执行分析测试操作,得到目标固件分析测试结果。
23、本发明的有益效果:
24、1、本发明针对当前模拟执行过程中仅仅局限于一种特定的架构,或是因为硬件外设种类复杂而造成函数替代中同种类函数多次编写的问题,通过利用高级抽象的方式从实现重写基于主流vxworks版本的库函数,利用函数监听使得固件在执行替换的过程中直接运行替换函数,从而保证固件在执行过程中的稳定并保证固件文件不被修改,以此完成固件在模拟器上的重新托管问题,并且实现用更少的工作量支持更多的固件托管,具有较好的应用前景。
25、2、本发明通过模拟执行模块和模糊测试工具的接口,在不带来额外较大开销的前提下,配合当前主流的fuzz工具对系统中的应用程序进行模糊测试,可以和当前最好的模糊测试工具兼容,在原有测试工具的基础上进一步提升漏洞发现效率,便于实际场景中的应用。
1.一种基于高级抽象层模拟的固件托管分析测试方法,其特征在于,包含:
2.根据权利要求1所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,提取目标固件二进制可执行文件中函数信息,还包含:
3.根据权利要求1所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,获取固件实时操作系统静态库文件及静态库文件所编译的函数名,包含:
4.根据权利要求1所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,基于函数名提取目标固件所使用的实时操作系统库函数,包含:
5.根据权利要求1或4所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,利用预设等价函数替换目标固件中对应库函数之前,包含:
6.根据权利要求1或4所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,利用预设等价函数替换目标固件中对应库函数,包含:
7.根据权利要求1所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,基于模拟器对目标固件中函数执行分析测试操作,还包括:
8.一种基于高级抽象层模拟的固件托管分析测试系统,其特征在于,包含:提取模块、重写模块和测试模块,其中,
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。
10.一种电子设备,其特征在于,包括: