汽车安全测试Checklist

2020-07-13 21:31:30·  来源:水滴安全实验室  作者:喵神&图图  
 
速度与激情里被黑客远程操控所有汽车的自动驾驶系统与车联网智能终端,这种情况真的会存在吗?随着5G技术的商用,车联网智能化和网联化进程的不断推进,Jeep Ucon
速度与激情里被黑客远程操控所有汽车的自动驾驶系统与车联网智能终端,这种情况真的会存在吗?
 
随着5G技术的商用,车联网智能化和网联化进程的不断推进,Jeep Uconnect,宝马ConnectedDrive等高危漏洞的不断出现,用户生命财产安全受到威胁,智能网联汽车安全已成为关系到车联网能否快速发展的重要因素。
    
下面,让我们梳理一下汽车安全渗透测试的攻击面。
 
一、汽车的攻击面
1. 物理访问
1.1 OBD在线诊断接口(On Board Diagnostic interface)
OBD车载诊断系统(图1-1)也称为诊断链接连接器(DLC),一般位于车辆离合踏板和方向盘之间的隐蔽位置,OBD作为汽车的对外接口,可以访问CANBus,因此通过专门的控制设备接入OBD端口,就可实现对车辆控制,甚至能修改一些行车电脑配置。
通过OBD接口可以读取汽车的运行状态数据,进行主动测试(控制喷油器或者点火器)等功能,通过这个接口可以直接访问汽车的CAN总线进而完全控制汽车的物理功能。
 
图1-1通用汽车的完整OBD引脚连接
利用OBD接口接入CAN分析仪连接分析报文数据。
CAN总线分为:节点、ID、报文、仲裁
CAN-Bus通信帧协议共有五种类型分别为:数据帧、遥控帧、错误帧、过载帧和间隔帧。
数据帧:
帧起始、仲裁段、控制端、数据段、CRC段、ACK段、帧结束、表示一帧的开始,是由1bit的显性位组成。
(1) 帧起始:
    表示帧的开始,由单个显性位组成,总线空闲时,发送节点发送帧起始,其他接收节点同步于该帧起始位。
 
图1-2 CAN报文详解
(2)仲裁段:
   CAN-Bus没有规定节点的优先级,但通过仲裁段帧ID规定了数据帧的优先级,帧的ID值越小,优先级越高。CAN2.0标准版本不同,帧ID分为11位和29位两种。
(3)控制段:
    分为标准格式由(IDE、r0、DLC)组成和扩展帧(r1、r0、DLC)组成
(4)数据段
    由0到8个字节组成,用于负载传输的数据,数据输出开始于MSB。
(5)CRC段
    由15bit CRC Sequence和1bit CRC Delimiter组成,用来检查帧的数据是否存在错误,CRC校验值存放在CRC段,由15位CRC值和1位CRC界定符构成
CRC Sequence:CRC序列,计算范围是SOF,仲裁域,控制域和数据域。
CRC Delimiter:CRC界定符,是一个常态隐性位。
(6)ACK段
   ACK(应答场)长度为2 个bit。包括ACK Slot和ACK Delimiter。ACK Slot:应答间隙,发送节点送数据时,会将ACK Slot及ACK Delimiter全部置为隐性,接收节点计算CRC Sequence正确无误后,会在ACK Slot期间向发送方发送一个显性位以示应答。ACK Delimiter:ACK界定符,是一个常态隐性位。
(7)帧结束
    表示帧的结束,由7个连续的隐形位组成。
遥控帧:
用于接收到单元向具有相同ID的发送的单元请求数据的帧。ID:被请求发送节点的ID。SRR:1(隐性电平)。RTR:1(隐性电平)。DLC:请求的数据长度,没有数据段,CRC的校验范围是:帧起始+仲裁段+控制段
错误帧:
用于当检测出错误时想其他单元通知错误的帧分别共有五种错误类型。
(1)CRC错误 发送节点计算的CRC值与接收到的CRC值不同时发送该错误。
(2)格式错误 传输的数据帧格式与任何一种合法的帧格式不符时发生该错误。
(3)应答错误 发送节点在ACK阶段没有接收到应答信号时发生该错误。
(4)位发送错误 发送节点在发送时发现总线电平与发送电平不相同时发生该
错误。
(5)位填充错误 通信线缆上传输信号违反“位填充”规则时发生该错误。
过载帧: 
    用于接收单元通知其他尚未做好准备的帧,当某个接收节点没有做好接收下一帧数据的准备时,将发送过载帧以通知发送节点,过载帧由过载标志和过载帧界定符组成,存在多个节点同时过载且过载帧发送有时间差问题,可能出现过载标志叠加后超过6个位的现象。
间隔帧:
用于将数据帧和遥控帧与前面的帧分离开来的帧,但过载帧和错误帧前面不会插入帧间隔。
 
图1-3 CAN-Bus链路层处理数据流程
那么接入CAN我们可以做什么?
    嗅探CAN总线流量、发送CAN消息、重放CAN流量、模糊测试、
利用CAN分析仪的诊断工具可以看到车辆的发送机实际转速、车速、蓄电池电压、等一些信息,比如我们想欺骗转速表,踩空挡的情况下踩下油门,让转速表改变数值,最后将数据重放出来,当然也可以去尝试打开车灯、门锁、空调、座椅等等。
 
图1-4 CAN分析仪
1.2 车机娱乐系统
    汽车娱乐系统一般采用Linux或基于Linux的Android操作系统,车机娱乐系统会与光盘、USB接口、手机、耳机进行交互。娱乐系统与CAN总线相连,车载多媒体系统显示汽车参数(车辆健康度,胎压,电动汽车剩余电量等)。娱乐系统作为用户安装更新系统的入口,可以下发升级汽车ECU的固件等。
1.3 主控面板
    汽车的主控面板一般是智能汽车的网关系统,可以拆解查看是否存在ttl to usb接口,系统一般基于Linux。通过串口工具接入,可以进行测试。
2. 短距离无线攻击面
    短距离向量包括蓝牙、车载热点、Wi-Fi、无钥匙进入、胎压传感器射频信号、RFID、专用短距离通信(DSRC)、距离传感器、自动泊车系统、汽车与基站的GPRS、3G、4G、5G通信。
2.1 蓝牙
    手机通过蓝牙连接汽车,将通话通过扬声器输出,传输多媒体等,传输距离一般为10米。
    蓝牙攻击的方案
2.1.1 蓝牙漏洞攻击(Bluesnarfing)
   Bluesnarfing让攻击者能够利用旧设备的固件漏洞来访问开启蓝牙功能的设备。这种攻击强制建立了一个到蓝牙设备的连接,并允许访问储存在设备上的数据,包括设备的国际移动设备身份码(IMEI)。IMEI是每个设备的唯一身份标识,攻击者有可能使用它来把所有来电从用户设备路由到攻击者的设备。
2.1.2 蓝牙劫持(Bluejacking)
   Bluejacking是一种在开启蓝牙功能的设备上实施的攻击,例如对手机的攻击。攻击者通过发送未经请求的消息给开启蓝牙功能的设备用户来发起Bluejacking。实际的消息不会对用户的设备造成损害,但是它们可以诱使用户以某种方式做出响应或添加新联系人到设备的地址薄。这种消息发送攻击类似于对电子邮件用户进行垃圾邮件和网络钓鱼攻击。当用户对包含有害目的之bluejacking消息发起了一个响应,则Bluejacking能够造成危害。
2.1.3 蓝牙窃听(Bluebugging)
   Bluebugging利用一个在一些较老设备固件上存在的漏洞来获取设备和其命令的访问权限。这种攻击无需通知用户就使用设备的命名,从而让攻击者可以访问数据、拨打电话、窃听通话、发送信息和利用设备提供的其他服务与功能。
2.1.4  汽车偷听(Car Whisperer)
   Car Whisperer是由欧洲安全研究人员开发的一种软件工具,它利用了在汽车蓝牙免提车载套件中一个实现上的关键问题。Car Whisperer软件让攻击者能发送音频到或接收音频自车载套件。攻击者可以将音频发送到汽车的喇叭或从车内麦克风接收(窃听)音频。
2.1.5 拒绝服务(Denial of Service)
    像其他无线技术一样,蓝牙也容易受到DoS攻击。影响包括让设备的蓝牙接口无法使用和耗尽设备电池。这些类型的攻击效果并不显著,而且因为需要接近才能使用蓝牙,所以通常可以很容易地通过简单的移动到有效范围之外来避免。
2.1.6 模糊测试攻击(Fuzzing Attacks)
    蓝牙fuzzing attacks包括发送格式错误或其他非标准的数据给设备的蓝牙射频接口和观察设备如何反应的。如果一个设备的运作被这些攻击减慢或停止,一个严重的漏洞可能存在于协议栈之中。
2.1.7 配对窃听(Pairing Eavesdropping)
   PIN码/传统配对(蓝牙2.0及更早版本)和LE配对(蓝牙4.0)都易受到窃听攻击。如果给予足够的时间,成功的窃听者会收集所有的配对帧,然后他/她能够确定这个(些)机密的密钥——它允许受信设备模拟和主动/被动数据解密。
2.1.8 安全简单配对攻击(Secure Simple Pairing Attacks)
    许多技术可以强制远程设备使用立即工作SSP,然后利用其缺乏MITM保护的特性(例如,攻击设备声称它没有输入/输出功能)。此外,固定万能钥匙也可能让攻击者进行MITM攻击。
    当然也可以尝试接入蓝牙无线键鼠设备是否能操控车载娱乐系统,是否能执行一些操作。
2.2 车载热点和Wi-Fi
    智能汽车的配备有物联网卡,通过娱乐系统的屏幕可以像操作手机一样开启热点。
    车载系统具有无线网卡,用户可以自己建立Wi-Fi配置娱乐系统接入无线网络。
    车载热点和WiFI实现的都是让攻击者和车辆处于同一网络环境中,我们可以同arp欺骗进行攻击。
    使用ettercap进行arp欺骗,通过wireshark抓取车辆通信流量。
 
图2-1 Arp欺骗嗅探流量
监听车辆与外界的通信流量,可以在车辆云端下发车辆新版本固件时捕获进行进一步分析。
2.3 无钥匙进入
无钥匙进入系统(Keyless Entry)是指无需使用机械钥匙即可进行开启车门进行点火。
当驾驶员通过按钮或者触摸感应器触发系统后,汽车向钥匙发送一个随机信号,钥匙接收到信号利用加密算法生成一个结果信号,汽车接收这个信号并验证是否合法,执行相应的操作,列如解锁或开启车辆。
无钥匙进入系统类别
(1)单向RKE:需要手动按下按钮才能执行操作,车辆接收到该信号并认为是否合法,然后执行相应的操作,对于滚动码系统,安装在车辆和密钥卡中的加密安全伪随机数生成器(PRNG)用于在按键后更改加密密钥,通常使用缓冲区来解决意外超出范围问题按下按钮(误触操作),单向RKE是最简单最常见的无钥匙进入系统的形式。
(2)双向RKE要求车辆发出信号,才能使钥匙扣做出相应以达到解锁操作。
(3)被动RKE简称(PKE)会在一定半径内或用户触摸门把手后自动解锁;通常与按钮点火开关配对。
关于无钥匙进入安全研究
需要用到全双工的SDR   设备去产生干扰信号,以阻塞汽车和钥匙接收到正确的信号,干扰的信号频宽会更宽,并且存储信号以备后续使用,当用户再次按下按钮时,设备会捕获第二个信号并且发送第一个信号,车辆就会正常执行操作,但是其中一次的信号已经被捕获到了。
 
图2-2 树莓派搭建的无钥匙进入检测设备
2.4 胎压管理系统TPMS
汽车轮胎的胎压传感器将采集到的胎压数据通过短距离无线通信传递给管理模块,在胎压过低时发出告警信息,TPMS的工作频率在315Mhz/433Mhz,
胎压传感器并不是经常发送无线数据,一般出现在安装和卸下传感器的时候会发送此类数据,要么就等待传感器下一次发送次信号进行捕获,可测试此信号是否被加密,进行伪造攻击,接收端的ECU在解析代码时也会出现问题。
 
图2-3 胎压传感器信号组成
胎压传感器信号分为:前导码、同步码、ID识别码、电压、压力、温度、气阀、CRC16、停止码。
只要修改数值过高或者过低即可触发警报,导致车辆报警。
2.5 RFID
汽车钥匙中嵌入一个RFID,汽车安装RFID天线,当驾驶员靠近汽车或者进入车辆后,RFID会与ECU进行相互认证,Hitag采用48位密码是一种被广泛使用的被动RFID。
2.6 V2X车联网通信
可分为三大类:V2V(Vehicle to Vehicle),V2I(Vehicle to Infrastructure)和V2P(Vehicle to Pedestrian)。运输实体,如车辆、路测基础设施和行人,可以收集处理当地环境的信息(如从其他车辆或传感器设备接收到的信息),以提供更多的智能服务,如碰撞警告或自主驾驶。
V2X通信通信技术目前有DSRC与LTE-V2X两条路线。
DSRC以IEEE802.11p为基础的标准,使用5.85GHz~5.925GHz的V2V/V2I保留频段内的75MHz频谱。DSRC设备的有效通信距离有其使用的发射功率决定。路旁设备能以更高的功率范围发射,指标最高可达1000米;而车辆只能使用较低发射功率,因此其通信距离较低,只有300米。
 
图2-4 DSRC技术示意图
LTE-V(Long Team Evolution-Vehicle)是一种基于TD-LTE技术的V2V解决方案,LTE-V是基于4G LTE系统的演进技术,包括LTE-V-Cell和LTE-V-Direct两个工作模式。LTE-V-Cell要借助已有的蜂窝网络,支持大带宽、大覆盖通信,满足Telematics应用需求;LTE-V-Direct可以独立于蜂窝网络,实现车辆与周边环境节点低延时、高可靠的直接通信,满足行车安全需求。
 
图2-5 LTE-V技术示意图
测试者可以通过购买具备DSRC功能的设备,或者使用软件定义的无线电(SDR,Software Defined Radio),制作自己的DSRC接收器,可以在接收器的有效距离内接收车辆的相关信息,如尺寸、位置、速度、方向以及最近300米内的行车路径,可以根据这些信息追踪目标车辆。
假设攻击者获取到目标车辆的制造商和型号以及 ,我们就可以在目标人物家的附近防放置DSRC的接收器,远程检测目标车辆何时驶出DSRC接收器的范围,攻击者可以持续追踪和识别车辆的活动。
V2V和V2I系统的安全数据传输依赖于PKI和CA,可以尝试证书劫持攻击,中间窃取车辆的短距离通信信息。
2.7 汽车与基站的GPR S、3G、4G、5G通信
智能汽车使用物联网卡与车辆附近的运营商基站进行通信,连接互联网,可以通过openbts、openbsc、yatebts等一些程序进行基站模拟,截取通信流量,伪造数据包,重放攻击,比如请求的网站信息,一些车联网平台,再对这些平台进行渗透测试,或者请求的参数进行中间人攻击修改尝试是否可以对车辆进行干扰或修改数据。
 
图2-5 openbts环境搭建
启动asterisk、sipauthserver、smqueue、openbts、还有openbts的控制台OpenBTSCLI进行管理配置。
在OpenBTSCLI里修改增益(默认最低为25)
OpenBTS> devconfig GSM.Radio.RxGain 25
修改GSM频段
OpenBTS> config GSM.Radio.Band 900
修改ARFCN参数
OpenBTS> config GSM.Radio.C0 118
启用GPRS
OpenBTS> config GPRS.Enable 1
在这里设备请求的网络是通过sgsntun这个虚拟网卡进行通讯,所以要去配置好iptables的转发规则,这样接入的设备就可以通过你转发的规则用GPRS来进行上网了。
查询设备接入情况
OpenBTS> tmsis
就可以查看到
 
图2-6 查看接入的设备
在这里基站搭建配置就不做多的说明了。
3. 远距离无线攻击面
GPS、卫星接收机、数字广播接收机等公用通信链路,蜂窝网、远程协助系统、远程控制系统,汽车厂商专用的车联网平台,云端服务器。这些远距离攻击向量是最大的威胁,因为黑客可以在任何地方发起攻击。
 
图3-1 车联网管理平台
 
图3-2 车联网管理平台
二、一次真实的汽车安全测试
近期研究人员对一款智能汽车进行测试时,有一些测试点和大家分享一下。
我们首先对该车辆的主控面板进行拆解,可以通过usb to ttl接入Gnd、Tx、Rx串口调节为115200波特率,直连,可以进入一个网关设备的ssh登陆入口,密码猜解不到,使用GRUB的方式更改密码。
 
图1 TTL串口接入网关
    在开机过程中长按shift或者esc进入系统GRUB界面:
 
    进入Advanced options for Ubuntu选项
 
    选中Ubuntu, with Linux 5.0.0-32-generic (recovery mode),按e进入:
 
    将上图中的ro recovery nomodeset改为quiet splash rw init=/bin/bash
 
    按F10键,等待几秒钟,进入修改密码。
 
  通过串口引出rj45网线,接入笔记本配置IP、网关、子网掩码,可以访问网关网络,直接tcpdump抓取流量包,分析流量日志,暴露车辆通信的云端url
 
图2 日志云端URL
    捕获到网关和MCU交互数据,明文传输,接收方未作任何校验,通过构造数据包指令,可造成车辆自动泊车系统故障。
 
图3 MCU通信流量
    构造的车辆自动泊车系统报警POC
 
图4 自动泊车系统故障POC
网关系统运行着车辆固件,直接下载进行分析。
 
图5 车辆固件
网关系统,是一个多网卡Linux,主机存活探测可发现T-BOX为192.168.2.16为一个SSH空密码。
 
图6 T-BOX主机权限
   
参考文档:
https://blog.csdn.net/huan447882949/article/details/80042417
http://unicorn.360.cn/hackcube/forum.php?mod=viewthread&tid=48&extra=page%3D1
https://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFDLAST2017&filename=CCGY201707011&v=MTE1NDV4WVM3RGgxVDNxVHJXTTFGckNVUkxPZVp1Wm5GeS9tVTdySUppN01kN0c0SDliTXFJOUVaWVI4ZVgxTHU=
 
 
分享到:
 
反对 0 举报 0 收藏 0 评论 0
沪ICP备11026620号