一种基于QEMU的车联网固件仿真的漏洞分析及利用靶标构建的实现方法

未命名 10-18 阅读:267 评论:0

一种基于qemu的车联网固件仿真的漏洞分析及利用靶标构建的实现方法
技术领域
1.本发明涉及一种基于qemu的车联网固件仿真的漏洞分析及利用靶标构建的实现方法,属于嵌入式系统安全技术领域。


背景技术:

2.车联网是指通过将车辆与互联网及其它通信方式连接起来,实现车辆信息的互通、互联和互操作。近年来,随着通信、信息和汽车技术不断的发展,车联网的发展趋势也变得越来越明显,给人们生活带来极大的便利。车联网能够与互联网及其他通信方式相连,实现车辆信息的互通、互联和互操作。这意味着车联网可以实现车辆与人、车辆与车辆等之间的信息共享和交流,从而为车主、车辆管理人员、车辆保险企业、交通管理等多方面提供更加智能、便捷和高效的服务。例如,车联网可以提供车辆实时交通状况、道路机动性信息等服务,帮助车主更加安全、高效地行驶,提高交通的安全性;车联网也可以根据车辆实时状况提供更加准确和高效的路线规划,缓解交通拥堵;降低车辆燃油消耗,车联网可以通过节能减排技术,节约能源,降低车辆行驶成本;车联网还能够对车辆进行实时监管和管理,可以实现远程维护、故障排查和定位;车联网可以提供手机应用程序、车载系统等多种方式,优化用户体验,提高用户满意度。总之,车联网作为新兴的信息化技术,可以带来很多便利和切实的效益,因此备受汽车厂商、消费者和政府机构的关注和推崇,车联网的发展前景也异常广阔。
3.2015年,两名安全研究人员通过jeep cherokee的娱乐系统漏洞成功攻击了一辆正在行驶中的jeep车。研究人员远程控制了车辆的发动机、刹车、转向和其他系统,甚至可以锁上车内的乘客。这个漏洞的发现震惊了整个汽车行业和公众。这是首次有人通过车载娱乐系统远程控制汽车,使其失控。这一事件揭示了车联网安全面临的严峻挑战,也引发了各方对汽车网络安全的关注。2019年,两名安全研究人员在加拿大的一个安全会议上展示了一项名为“extended can(扩展控制器局域网)”的漏洞攻击代码,并展示了他们是如何成功地入侵了特斯拉model 3汽车的控制器。这两名研究人员使用一个特殊的设备,充当一个wi-fi访问点,将特斯拉model 3的网络流量重定向到设备上。研究人员通过搜索流量数据包,找到控制器的某些指令,并用这些指令控制了汽车的行驶。研究人员展示了他们如何利用这个漏洞来加速和减速特斯拉model 3汽车,以及如何通过窃取汽车的秘钥来获取对汽车的完全控制。
4.2021年3月,德国国家盐博物馆(the german salt museum)遭遇了一次网络攻击,攻击者窃取并发布了该博物馆的火车数据。这些数据包括历史上运行过的火车类型、车辆识别码、建造厂商、详细技术说明和车重等重要信息。
5.这些案例表明,车联网设备存在安全问题。黑客入侵车联网设备可以控制车辆,造成人员伤亡和经济损失。因此,车联网设备的安全问题必须被重视。制造商和政府需要加强汽车网络安全研究和管控,防止车辆被恶意攻击。
6.目前,随着车联网安全问题越来越多,研究人员也开始大规模致力于设备安全的研究。但是,研究人员对设备进行安全研究时,需要探究设备内部的运作原理,更多时候,研究人员手中并没有相应的设备。也就是说,获取各种固件成本低廉,而获取产品则需要花费一定财力。对固件的仿真模拟并将其应用到实际的网络靶场中的需求由此出现,进而帮助人们更好的理解固件,维护整个计算机系统的安全和稳固。


技术实现要素:

7.本发明目的在于针对上述现有技术的缺陷或不足,提出了一种基于qemu的车联网固件仿真的漏洞分析及利用靶标构建的实现方法,该方法通过解析固件,获得固件信息,上传至虚拟机,使用静态分析和动态分析相结合,最终调试出目标固件所需要的环境。在该环境中,研究人员可以进行测试,挖掘漏洞,并对已知的漏洞进行分析、复现,最终打包成靶标,供他人学习交流。
8.本发明解决其技术问题所采用的技术方案是:一种基于qemu的车联网固件仿真的漏洞分析及利用靶标构建的实现方法,该方法借助qemu虚拟机进行设备固件仿真,人工调试,漏洞挖掘以及漏洞复现,最后形成靶标,包括如下步骤:
9.步骤1:从车联网设备的官方网站或者论坛,寻找固件下载的链接获得固件信息,或者通过设备的硬件借助调试器或者串口等方式,从设备上获取固件的二进制信息。
10.步骤2:对于步骤1中获得的固件包进行解压,上传至qemu虚拟机,进行仿真模拟。
11.步骤3:步骤2上传成功后,qemu虚拟机切换到仿真系统后,进行调试。
12.步骤4:在步骤3的基础上,对固件系统进行动静结合调试,分析设备漏洞,进行漏洞复现,并打包成一个靶标。
13.本发明的进一步改进在于:步骤1中,首先从设备官方网站或者论坛寻找固件下载链接,若供应商提供链接,可以直接获取。若没有,则可以通过打开车联网设备,通过调试器或者串口等方式,读取固件存储器中的二进制信息。
14.或者,通过一些开源项目或研究成果,获取固件的二进制信息。具体为:
15.大部分设备的官方网站都会提供其设备的历史版本固件下载地址,通过访问官网下载对应版本固件。或者,可以利用工具固件爬虫,该工具可以扫描互联网上的物联网设备,然后自动下载它们的固件。但是,需要注意的是固件爬虫的使用需要确保不侵犯他人的合法权益。也可以通过uart等端口进行固件提取:通过串行通信口(uart)等方式连接到设备的硬件上,通过串口等方式读取设备固件。该方法需要事先了解目标设备的硬件结构及工作原理,对研究人员也有一定的要求:需要具备一定的技术和硬件方面的知识和经验。因此需要在进行该操作时,需要得到设备厂商、设备所有人的同意,并且避免对设备造成不必要的安全风险。
16.本发明的进一步改进在于:步骤2中,对于步骤1中获得的固件包进行解压,上传至qemu虚拟机,进行仿真模拟,具体为:
17.步骤2-1:解压设备固件可以借助开源的固件解压工具,如binwalk、firmware-mod-kit等,它们可以自动检测固件并提取文件系统、内核、应用程序等关键信息。解压工具版本要适配,现代一些固件已经不支持低版本工具。解压之前要检查解压文件是否已经存在,因为binwalk可能会自动覆盖之前解压好的旧文件,导致数据丢失。如果固件不是经过
压缩的二进制文件,也可以进行手动解压。解压之后,可以获得设备固件数据集合。
18.步骤2-2:安装qemu虚拟机,确认qemu的仿真方式,固件上传qemu虚拟机。在安装过程中要注意,不同版本的qemu支持的仿真器和参数可能会有所不同,需要确认选用的qemu版本和仿真环境是否适用于当前的调试需求。其次,qemu主要有两种仿真方式:用户模式仿真和系统模式仿真。用户模式仿真只仿真一个进行,在该模式下,qemu虚拟机是一个进程级虚拟机;系统模式仿真可以仿真整个系统,在该模式下,qemu虚拟机是一个系统虚拟机。
19.步骤2-3:若使用qemu系统模式仿真,则需要针对不同架构输入不同的启动命令,配置网络环境,传输系统文件到qemu虚拟机中。如果要进行qemu用户模式仿真固件,一般不需要上传固件至qemu,而是直接使用已经存在的固件文件进行仿真。需要注意的是,有些系统需要使用特定类型的固件文件进行仿真才能正常运行,这时需要上传固件至qemu,并设置固件路径。
20.本发明的进一步改进在于:步骤3中,在步骤2的基础上,在模拟过程中,进行一系列的调试行为,如图3,具体为:
21.步骤3-1:qemu系统模式下常见的固件包括bios、edk2、uefi等。这些固件文件一般来自于硬件供应商或者开源社区,用户需要根据自己的需求选择合适的固件版本,并将其上传至qemu中。例如,使用以下命令启动qemu:"qemu-system-x86_64-bios《bios文件路径》-hda《操作系统镜像路径》"。这里的-bios参数可以指定bios文件路径,-hda参数可以指定操作系统镜像路径。其中,《bios文件路径》为bios文件的实际路径,《操作系统镜像路径》为操作系统镜像的实际路径。
22.qemu用户模式使用之前需要将其配置为支持用户模式。在虚拟机中运行一个用户程序。在用户程序中执行syscall等指令,将控制权交给操作系统内核。操作系统内核切换到用户模式,并执行用户程序。在qemu中,可以通过以下命令启动虚拟机并进入用户模式:qemu-system-x86_64-kernel《kernel_image》-initrd《initrd_image》-append"root=/dev/ram"-nographic-monitor null。其中,《kernel_image》是内核映像文件,《initrd_image》是根文件系统映像文件。-nographic表示不使用图形界面,-monitor null表示不使用监视器。启动虚拟机后,可以在命令行中输入用户程序的路径,并执行该程序。程序执行后,可以通过syscall等指令进入操作系统内核,从而进入用户模式。
23.步骤3-2:成功进入仿真系统之后便可以进行调试。可以事先借助ida工具对固件进行反汇编,对固件内部函数有一个初步了解。
24.其次,qemu提供了两种动态调试方式:1)使用qemu的内建监视器;2)使用gdb调试器。qemu内建监视器可以让我们在仿真器运行时查看和修改因脚本和命令等导致的仿真模拟器内部信息。步骤如下:启动qemu仿真器,在命令行中使用qemu-system-arm-nographic-machine versatilepb-kernel firmware.bin-monitor telnet:127.0.0.1:12345,server,nowait。-kernel firmware.bin:指定固件程序的二进制文件路径;-monitor telnet:127.0.0.1:12345,server,nowait:启动qemu的内建监视器,并设置访问地址和端口。在另一个命令行中,使用telnet命令连接到内建监视器:telnet 127.0.0.1 12345。然后就可以在命令行中输入监视器的命令对固件程序进行调试了。比如可以使用info registers命令查看寄存器的值,使用x命令查看内存数据等。
25.本发明使用gdb调试器进行动态调试,通过gdbserver将gdb调试器和仿真器进行
连接。步骤如下:启动qemu仿真器,在命令行中使用以下命令:qemu-system-arm-s-s-machine versatilepb-kernel firmware.bin;在另一个命令行中启动gdb调试器,使用以下命令连接到qemu并启动调试:arm-none-eabi-gdb firmware.elf、(gdb)target remote localhost:12345、(gdb)continue;然后就可以使用gdb调试器对固件程序进行动态调试了。比如可以使用break命令设置断点,使用stepi命令单步执行固件程序等。
26.有益效果:
27.1、本发明从设备固件模拟的方面来看,首先,qemu可以支持在一个独立的虚拟环境中运行固件,对固件进行动态调试,避免对主机系统的损害,保证主机系统的安全性。其次,qemu支持多种架构固件的模拟,也能模拟不同硬件的环境,方便软件开发和测试,大大增加了实用性。甚至可以同时模拟多个设备,提高利用效率。
28.2、本发明提出的固件的调试方法来看,采用动静结合的方式对固件进行调试。首先借助ida工具对固件进行初步了解,在此基础上进行动态调式,开发者更快速地定位程序中的问题,避免需要耗费大量时间来搜索问题所在的代码行。其次,这种动静结合的方法可以取静态分析和动态分析的优点,避免其缺点。最后,动静结合的调试方式可以让开发人员更好地理解代码的执行过程,因为它可以让开发人员直接观察代码的执行流程。
附图说明
29.图1是本发明的方法流程图。
30.图2是本发明中固件获取与解析的结构框图。
31.图3是本发明中基于qemu对固件模拟的结构框图。
32.图4是本发明中添加的调试行为结构框图。
具体实施方式
33.以下将以图式揭露本发明的实施方式,为明确说明起见,许多实务上的细节将在以下叙述中一并说明。然而,应了解到,这些实务上的细节不应用以限制本发明。也就是说,在本发明的部分实施方式中,这些实务上的细节是非必要的。
34.如图1-3所示,本发明提供了基于qemu的车联网固件仿真的漏洞分析及利用靶标构建的实现方法,该方法从固件模拟的角度,对漏洞进行挖掘和复现,以及形成靶标,包括如下步骤:
35.步骤1:从车联网设备的官方网站或者论坛,寻找固件下载的链接获得固件信息,或者通过设备的硬件借助调试器或者串口等方式,从设备上获取固件的二进制信息,如图2所述,具体包括:
36.首先从设备官方网站或者论坛寻找固件下载链接,若供应商提供链接,可以直接获取。若没有,则可以通过打开车联网设备,通过调试器或者串口等方式,读取固件存储器中的二进制信息。或者,通过一些开源项目或研究成果,获取固件的二进制信息。具体为:
37.大部分设备的官方网站都会提供其设备的历史版本固件下载地址,通过访问官网下载对应版本固件。或者,可以利用工具固件爬虫,该工具可以扫描互联网上的物联网设备,然后自动下载它们的固件。但是,需要注意的是固件爬虫的使用需要确保不侵犯他人的合法权益。也可以通过uart等端口进行固件提取:通过串行通信口(uart)等方式连接到设
备的硬件上,通过串口等方式读取设备固件。该方法需要事先了解目标设备的硬件结构及工作原理,对研究人员也有一定的要求:需要具备一定的技术和硬件方面的知识和经验。因此需要在进行该操作时,需要得到设备厂商、设备所有人的同意,并且避免对设备造成不必要的安全风险。
38.步骤2:对上述步骤1中对于步骤1中获得的固件包进行解压,上传至qemu虚拟机,进行仿真模拟,如图3,具体为:
39.步骤2-1:解压设备固件可以借助开源的固件解压工具,如binwalk、firmware-mod-kit等,它们可以自动检测固件并提取文件系统、内核、应用程序等关键信息。解压工具版本要适配,现代一些固件已经不支持低版本工具。解压之前要检查解压文件是否已经存在,因为binwalk可能会自动覆盖之前解压好的旧文件,导致数据丢失。如果固件不是经过压缩的二进制文件,也可以进行手动解压。解压之后,可以获得设备固件数据集合。
40.步骤2-2:安装qemu虚拟机,确认qemu的仿真方式,固件上传qemu虚拟机。在安装过程中要注意,不同版本的qemu支持的仿真器和参数可能会有所不同,需要确认选用的qemu版本和仿真环境是否适用于当前的调试需求。其次,qemu主要有两种仿真方式:用户模式仿真和系统模式仿真。用户模式仿真只仿真一个进行,在该模式下,qemu虚拟机是一个进程级虚拟机;系统模式仿真可以仿真整个系统,在该模式下,qemu虚拟机是一个系统虚拟机。
41.步骤2-3:若使用qemu系统模式仿真,则需要针对不同架构输入不同的启动命令,配置网络环境,传输系统文件到qemu虚拟机中。如果要进行qemu用户模式仿真固件,一般不需要上传固件至qemu,而是直接使用已经存在的固件文件进行仿真。需要注意的是,有些系统需要使用特定类型的固件文件进行仿真才能正常运行,这时需要上传固件至qemu,并设置固件路径。
42.步骤3:上述步骤2上传成功后,qemu虚拟机切换到仿真系统后,进行调试;
43.如图4所示的添加的调试行为结构,具体包括:
44.步骤3-1:qemu系统模式下常见的固件包括bios、edk2、uefi等。这些固件文件一般来自于硬件供应商或者开源社区,用户需要根据自己的需求选择合适的固件版本,并将其上传至qemu中。例如,使用以下命令启动qemu:"qemu-system-x86_64-bios《bios文件路径》-hda《操作系统镜像路径》"。这里的-bios参数可以指定bios文件路径,-hda参数可以指定操作系统镜像路径。其中,《bios文件路径》为bios文件的实际路径,《操作系统镜像路径》为操作系统镜像的实际路径。
45.qemu用户模式使用之前需要将其配置为支持用户模式。在虚拟机中运行一个用户程序。在用户程序中执行syscall等指令,将控制权交给操作系统内核。操作系统内核切换到用户模式,并执行用户程序。在qemu中,可以通过以下命令启动虚拟机并进入用户模式:qemu-system-x86_64-kernel《kernel_image》-initrd《initrd_image》-append"root=/dev/ram"-nographic-monitor null。其中,《kernel_image》是内核映像文件,《initrd_image》是根文件系统映像文件。-nographic表示不使用图形界面,-monitor null表示不使用监视器。启动虚拟机后,可以在命令行中输入用户程序的路径,并执行该程序。程序执行后,可以通过syscall等指令进入操作系统内核,从而进入用户模式。
46.步骤3-2:成功进入仿真系统之后便可以进行调试。可以事先借助ida工具对固件进行反汇编,对固件内部函数有一个初步了解。
47.其次,qemu提供了两种动态调试方式:1)使用qemu的内建监视器;2)使用gdb调试器。qemu内建监视器可以让我们在仿真器运行时查看和修改因脚本和命令等导致的仿真模拟器内部信息。步骤如下:启动qemu仿真器,在命令行中使用qemu-system-arm-nographic-machine versatilepb-kernel firmware.bin-monitor telnet:127.0.0.1:12345,server,nowait。-kernel firmware.bin:指定固件程序的二进制文件路径;-monitor telnet:127.0.0.1:12345,server,nowait:启动qemu的内建监视器,并设置访问地址和端口。在另一个命令行中,使用telnet命令连接到内建监视器:telnet 127.0.0.1 12345。然后就可以在命令行中输入监视器的命令对固件程序进行调试了。比如可以使用info registers命令查看寄存器的值,使用x命令查看内存数据等。
48.使用gdb调试器进行动态调试,通过gdbserver将gdb调试器和仿真器进行连接。步骤如下:启动qemu仿真器,在命令行中使用以下命令:qemu-system-arm-s-s-machine versatilepb-kernel firmware.bin;在另一个命令行中启动gdb调试器,使用以下命令连接到qemu并启动调试:arm-none-eabi-gdb firmware.elf、(gdb)target remote localhost:12345、(gdb)continue;然后就可以使用gdb调试器对固件程序进行动态调试了。比如可以使用break命令设置断点,使用stepi命令单步执行固件程序等。
49.以上所述仅为本发明的实施方式而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理的内所作的任何修改、等同替换、改进等,均应包括在本发明的权利要求范围之内。

技术特征:
1.一种基于qemu的车联网固件仿真的漏洞分析及利用靶标构建的实现方法,其特征在于:所述方法包括如下步骤:步骤1:从车联网设备的官方网站或者论坛,寻找固件下载的链接获得固件信息,或者通过设备的硬件借助调试器或者串口方式,从设备上获取固件的二进制信息;步骤2:对于上述步骤1中获得的固件包进行解压,上传至qemu虚拟机,进行仿真模拟;步骤3:上述步骤2上传成功后,qemu虚拟机切换到仿真系统后,进行调试;步骤4:在步骤3的基础上,对固件系统进行动静结合调试,分析设备漏洞,进行漏洞复现,并打包成一个靶标。2.根据权利要求1所述一种基于qemu的车联网固件仿真的漏洞分析及利用靶标构建的实现方法,其特征在于,所述步骤1包括:首先从设备官方网站或者论坛寻找固件下载链接,若供应商提供链接,可以直接获取,若没有,则可以通过打开车联网设备,通过调试器或者串口等方式,读取固件存储器中的二进制信息,或者,通过一些开源项目或研究成果,获取固件的二进制信息。3.根据权利要求1所述一种基于qemu的车联网固件仿真的漏洞分析及利用靶标构建的实现方法,其特征在于,所述步骤2包括:步骤2-1:固件解压可以借助开源的固件解压工具,即binwalk、firmware-mod-kit,自动检测固件并提取文件系统、内核、应用程序等关键信息,如果固件不是经过压缩的二进制文件,也能够进行手动解压,解压之后,能够获得设备固件数据集合;步骤2-2:安装qemu虚拟机,确认qemu的仿真方式,固件上传qemu虚拟机,在安装过程中要注意,不同版本的qemu支持的仿真器和参数会有所不同,需要确认选用的qemu版本和仿真环境是否适用于当前的调试需求,其次,qemu有两种仿真方式:用户模式仿真和系统模式仿真,用户模式仿真只仿真一个进行,在该模式下,qemu虚拟机是一个进程级虚拟机;系统模式仿真能够仿真整个系统,在该模式下,qemu虚拟机是一个系统虚拟机;步骤2-3:若使用qemu系统模式仿真,则需要针对不同架构输入不同的启动命令,配置网络环境,传输系统文件到qemu虚拟机中。4.根据权利要求1所述一种基于qemu的车联网固件仿真的漏洞分析及利用靶标构建的实现方法,其特征在于,所述步骤3包括:步骤3-1:设置好配置参数之后,启动qemu,chroot到待仿真的系统;步骤3-2:在进行仿真系统之后能够进行调试,借助使用各种调试工具进行静态分析和动态分析,即ida、gdb,需要仔细选择符合需要和对应操作系统的调试工具,并熟悉其命令和使用方法。

技术总结
本发明公开了一种基于QEMU的车联网固件仿真的漏洞分析及利用靶标构建的实现方法,该方法包括如下步骤:(1)车联网固件包获取;(2)解压固件包,并上传至QEMU虚拟机,进行仿真模拟;(3)QEMU虚拟机可以切换到仿真的系统之后,进行动静结合调试;本发明借助QEMU虚拟机对车联网固件进行仿真以及动静结合调试,能够使研究人员在同一台机器上测试不同的软件,也可以通过自己的需求添加功能和插件,从而提高测试效率。效率。效率。


技术研发人员:沙乐天 潘家晔 董建阔 陈霄 时启亮 范钱羽
受保护的技术使用者:南京邮电大学
技术研发日:2023.05.22
技术公布日:2023/10/11
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐