一. 背景
绿盟突破技术壁垒,使得虚拟汽车零部件具备嵌入式操作系统(嵌入式Linux、嵌入式Android),多个虚拟零部件可以加入虚拟汽车CAN网络中相互进行CAN总线通信,构建出完整的汽车电子电气架构,进而结合3D车路,构建了虚拟汽车。
绿盟的虚拟汽车优势何在?直接列出一二三点,可能会有点枯燥无力,本文首先介绍虚拟汽车,再从攻击工具、攻击步骤、达到的效果这三个方面,介绍虚拟汽车与实车在攻击方面的一致性,进而引出虚拟汽车的优势。
二. 虚拟汽车介绍
汽车的单价多达数十万元,这本就为车联网安全研究带来巨大的成本压力,然而,疫情的到来,为其雪上加霜。车联网安全研究,如何解决成本问题,显然是各个企业,尤其是信息安全企业,要解决的第一个难题。
有没有一种车联网安全的研究环境,可以不依赖任何硬件,或者依赖极少量必要的硬件而建立呢?绿盟科技通过技术创新,研究出虚拟汽车系统,使得汽车的电子电气架构,在零部件的操作系统和CAN总线通信两方面得以完全虚拟化,大大降低了汽车研究的环境成本。
对汽车的虚拟化,本质上是对虚拟电子电气架构的虚拟化,涉及四方面的技术,分别为电子电气架构、汽车总线、虚拟化软件以及车内操作系统。
由于Linux和Android这两类操作系统基本覆盖全车所有关键零部件的操作系统类别,所以,针对Linux和Android操作系统的零部件进行虚拟化,是虚拟汽车研究的核心。以往,T-BOX和车机都会连接在信息域,站在网关的角度看,他们都在同一组CAN接口上相连。而在我们的架构中,为了最简单地描述电子电气架构的可定制性,我们将车机和T-BOX分开,放在两个不同的功能域。自动驾驶控制器连接到驾驶域中,这一点保持不变,如下图所示。
图 2.1 汽车虚拟电子电气架构
首先,汽车的运行环境需要有3D车路的呈现,运行虚拟汽车的主机必须配备性能足够强的显卡,以满足车路效果的稳定呈现。其次,还需要具备方向盘和脚踏板这类外设,可以是实车移植过来的,也可以购买游戏类的。主机需要读取方向盘的按键编码数据,将控制类信号转发到CAN总线后,经由虚拟零部件,转化为前端汽车的控制数据,这一转化,经由“控制引擎”完成汽车的运动控制和车灯、车门等ECU的控制。对于信息安全而言,需要向汽车零部件中植入安全探针,如安全SDK、Agent等,以满足对汽车信息安全的实时监控。
图 2.2 虚拟汽车架构
这样的虚拟汽车系统,它的实战表现如何呢?下面,我们从电子电气架构的视角,观察虚拟汽车被攻击的过程。首先,构造一个攻击环境,其次,把极光001看作真车,使用端口扫描、木马植入等方式进行攻击,最后核对攻击是否有作用。设计攻击环境时,攻击入口设置为两个,分别是车端入口和云端入口。其中,车端的攻击具体如下所示。左侧所示为驾驶员使用方向盘和脚踏板驾驶汽车,方向盘的控制信号经由宿主机转化为CAN信号,发送给VCU,VCU将控制方向盘数据转化为前端车辆需要的转向、速度、刹车、倒车等信号,将信号发送给CAN转Unity的协议转换模块,最后经Unity引擎时车辆在车路上驾驶。这其中所有的控制经CAN总线。车载以太网方面,宿主机连接外部Wi-Fi路由器,QEMU使用桥接技术将启动的虚拟零部件桥接到Wi-Fi路由器下,与宿主机共享一个网段,其中,外部Wi-Fi路由器可被当做车辆热点来看待,攻击者接入热点后可对汽车零部件发起攻击。
图 2.3 热点下攻击虚拟汽车的场景
具体的攻击流程为:首先,攻击者接入汽车热点;然后,在热点下对汽车发起主机扫描、端口扫描、弱口令爆破、服务利用等攻击;最后,在获取主机权限后,对零部件发起攻击,如使用ADB服务控制车机的空调按钮控制空调,或者发送CAN报文实现控车效果。具体如下图所示。
图 2.4 热点下攻击虚拟汽车的流程
除了可以对其进行攻击以外,虚拟汽车还可以被作为运行汽车应用程序的环境来模拟汽车业务。在零部件的模拟过程中,使用的是QEMU启动的ARM64架构的Linux系统零部件,所以,一些使用该架构的实车中的零部件应用,也可以迁移到虚拟零部件中运行。最为基础的操作为,将实车零部件的根Linux文件系统迁移到虚拟零部件中,运行chroot命令切换到实车的固件环境下,运行需要被模拟的应用。具体如下图所示。应用程序名为“mv_app”的应用经过虚拟零部件启动后,与真实零部件环境下的表现一致,这个“一致”体现在两方面,分别是网络侧监听的端口一致,和对CAN总线的控制、收发消息的逻辑一致。
图 2.5 虚拟汽车运行实车业务的效果
对监听的端口和应用,可以进行逆向分析、流量抓取等方式进行漏洞挖掘,对CAN总线消息的收发,可以分析车内网总线控车逻辑。利用前者,攻击者可获取零部件权限;利用后者,攻击者可以明确控车报文对部分车辆功能进行控制。
从攻击角度看,虚拟汽车可以支撑汽车靶标的角色,其在虚拟电子电气架构、虚拟汽车零部件、虚拟车内网通信这三个方面与发售的汽车几乎一致。固件模拟执行和业务复现,在虚拟汽车上表现不错,也可达到多零部件联动仿真的效果。虚拟汽车的实现只是第一步,未来,还需要将道路交通的虚拟化纳入其中,使车联网安全研究即更加高效,也更“接地气”。
三. 虚拟汽车攻防流程
在虚拟汽车中部署最脆弱的服务,用最简单的工具介绍汽车攻防流程。读者可以更清楚地感知到,虚拟汽车的虚拟化能力,开始感知到虚拟汽车的仿真实力。
3.1
攻防工具
本节介绍网络扫描、密码爆破、登录认证、CAN总线测试以及MQTT平台连接测试工具。对虚拟汽车的攻击,其他的工具也可以做到类似的效果,这里笔者选择几个经典的工具进行简单介绍,为后续攻防步骤提到的攻击工具做铺垫。
3.1.1
网络扫描:Nmap
使用Nmap有两个目的,分别是扫描网段下资产和扫描特定主机开放的服务。扫描网段下所有主机的命令:nmap -sP 192.168.1.0/24,如下所示:
图 3.1 Nmap扫描主机
也可以扫描特定IP开放的服务,如下所示:
图 3.2 扫描特定IP的所有端口
例如,扫描Tbox开放了哪些服务:
图 3.3 扫描Tbox开放的服务
3.1.2
爆破工具:hydra
使用hydra指定用户名和密码来爆破telnet服务的登录口令,假设我们猜测用户名和密码分别为root和111111,命令如下:
图 3.4 使用特定密码猜测口令
假设密码太多,可以将所有的可能得密码放在一个文件中,指定文件内容作为要尝试的密码即可,命令如下:
图 3.5 使用密码字典爆破口令
3.1.3
Telnet、SSH命令
在Linux操作系统中,使用telnet命令可以直接与telnet服务交互。
图 3.6 使用telnet命令登录到TBox中
同样,使用ssh命令可以直接与SSH服务进行交互。
图 3.7 使用SSH登录到Tbox中
3.1.4
CAN总线测试工具:cansend、candump
顾名思义,cansend是在SocketCAN接口上发送CAN报文的命令,而candump则是接收CAN总线报文的命令。
图 3.8 使用cansend和candump命令收发CAN报文
3.1.5
MQTT平台测试工具:MQTT Explorer
MQTT Explorer是一个MQTT服务的测试客户端,输入MQTT接入地址,即可连接到MQTT的云服务。
图 3.9 设置MQTT的连接参数
默认情况下,该客户端会订阅所有的主题,并将主题中传输的消息一一展示。
图 3.10 接收MQTT所有主题的消息
3.2
攻防步骤
本节先介绍远程控车业务,并将虚拟汽车的远程控车业务和实车的远程控车业务对比,体现虚拟汽车的环境与实车的一致性,然后对小程序(APP)、云、汽车三方面的资产进行攻击,并给出攻击效果。
3.2.1
远程控车业务简介
远程控车业务在真实车辆和虚拟车辆的差异如下所示。两者的差异主要体现在最后一个环节,也就是由物理信号控制真实汽车的车身,还是由网络协议传输给虚拟汽车后控制车身的差异。这是因为实车是经机械制造生产的,而虚拟汽车是一个Unity 3D的客户端。
图 3.11 远程控车业务流程
3.2.2
使用postwoman重放小程序的控车指令
假设黑客只有APP可以控制汽车,那他可以使用抓包软件wireshark抓取控车过程中的交互报文,分析其交互的流量,发现其通过HTTP POST请求将json格式的数据推送到接口
“http://192.168.91.135:5000/publish”后,控制成功后,会返回控制成功的消息。
图 3.12 API接口交互流量
在postwoman插件中,输入正确的接口地址和payload,重放此流量即可实现对汽车的远程控制。
图 3.13 使用重放插件重放接口流量控制汽车
3.2.3
攻击MQTT云平台远程控制汽车
除了利用远程控车的HTTP接口控制汽车以外,还可以直接入侵远程控制汽车的云端平台。一般情况下,汽车通过TBOX接入云端,接收控车指令,如果可以入侵直接控制汽车的云端服务,则可以直接向汽车发送控制指令进行控车。
黑客抓取控车过程中的交互报文,发现汽车会连接到MQTT服务中,接收控车的指令。
图 3.14 MQTT连接、控车消息
而针对MQTT服务,有MQTT explorer、MQTT.fx等客户端软件,可以连接到MQTT的服务中。使用MQTT explorer连接到MQTT云端服务后,可以接收到云端控制汽车的指令。即在topic为“/CAR/door”的接口中,传输“0x80,0x00”实现打开车门,传输“0x00,0x00”关闭车门。如下图所示。
图 3.15 重放MQTT控车的topic以及payload
3.2.4
攻击汽车零部件控制汽车
当打开汽车热点时,黑客可以攻击汽车内网,其中不乏一些连接到汽车以太网总线上的零部件。这里假设攻击者连入汽车热点下,对汽车内网发起攻击。
首先,黑客使用Nmap扫描汽车内网的资产。
图 3.16 扫描同网段下的零部件IP
黑客选定一个特定的目标,比如192.168.53.244,对其进行端口扫描,发现其开放了22端口。
图 3.17 扫描某零部件开放的端口
使用root用户,发现需要密码才能获得设备root权限。
图 3.18 尝试登录到该零部件的SSH服务中
于是,尝试爆破,使用hydra尝试对零部件的ssh密码进行爆破,准备好密码字典文件即可。爆破成功后发现密码为“111111”,具体如下所示。
图 3.19 使用密码字典爆破零部件的SSH服务口令
使用用户名和密码登录到设备中,获得root权限,使用“ip addr”命令查看其网卡配置,发现存在一个SocketCAN接口,使用candump can0命令获取CAN总线的报文。此时,使用小程序发送开门指令和关门指令,在该零部件中可以看到CAN报文的收发情况。如下图所示,车门打开和关闭,是因为零部件向can0接口发送了帧ID为0x124,payload为两个字节长度的“0x80 0x00”和“0x00 0x00”。
图 3.20 控车过程中发现零部件内有CAN报文传输
所以,在零部件中,直接使用cansend命令将CAN报文重放,即可实现对汽车的控制。具体如下图所示。也就是说,黑客在热点下,攻击特定的零部件,进入到root权限下执行发送CAN总线的指令即可控制汽车。
图 3.21 重放CAN报文实现控车
四. 虚拟汽车优势
4.1
车联网安全教学能力
汽车网络安全作为网络安全与汽车制造的交叉领域,已经成为网络空间安全、汽车制造相关专业的一个重要方向。以前,汽车网络安全教学的实验器材尚处于硬件仿真阶段,而如今,绿盟虚拟汽车可以高度仿真汽车电子电气架构,构建足够真实的基于嵌入式系统的CAN通信节点,结合绿盟多年的攻防积累,这将满足网络安全、汽车电子以及嵌入式系统的教学能力,这三门课程,也将支撑起汽车安全的教学内容,进而为国家培养车联网安全人才。这体现了绿盟虚拟汽车对车联网安全教学强大的支撑能力。
4.2
汽车仿真能力
绿盟虚拟汽车中,具备CAN总线通信的零部件兼容ARM、MIPS、X86等多种架构的处理器指令集,且具备与实车相同的嵌入式Linux、嵌入式Android操作系统,实车的应用程序可以迁移到虚拟汽车中执行,达到实车业务向虚拟汽车中迁移的效果,这一点在第二章中已有体现。
4.3
大规模赛事支撑能力
2023年,绿盟作为支撑单位支撑国家级赛事的车联网环境,其中包括4套车联网云服务,114辆虚拟汽车环境。比赛过程中,绿盟将114套环境并行运行,持续稳定提供完整的虚拟汽车以及车联网云端环境,供参赛者进行攻击,这也是车联网安全大赛举办以来,规模最大的一次。这也体现了绿盟虚拟汽车环境较小的资源消耗特点,以及对大规模车联网安全赛事的支撑能力。
五. 总结
本文第二章介绍了绿盟的虚拟汽车,并在第三章中,以其为载体,将攻防工具和攻防步骤在虚拟汽车中复现,阐述了针对虚拟汽车和实车攻击的一致性,进而在第四章介绍了虚拟汽车的强大优势。
未来,相信虚拟汽车强大的仿真能力,将为车联网安全教学提供重要的支撑能力,可覆盖研究生、本科、大专、高职院校,在信息安全、汽车电子电气架构、嵌入式系统三方向的教学能力。其仿真能力也将支撑对汽车业务的仿真能力,进而在汽车测试领域发挥重要作用。虚拟汽车对大规模赛事的支撑能力,也将在网络安全大赛中发挥重大价值。
撰文时间较短,如有纰漏,欢迎各位读者指出,如果您对我们介绍的内容感兴趣,欢迎大家与我们交流。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...