导图社区 汽车通信攻击与防守知识点学习笔记
汽车通信攻击与防守知识点学习笔记,这张思维导图讲所有涉及到的内容做了整理,需要的可以看下。
编辑于2022-11-09 09:26:50 广东汽车通信攻击与防守知识点学习笔记
前言
“黑客”是指那些创造、探索、改进事物的人—那些通过种种实验技巧和拆解系统以理解其工作原理、获得发现的人。
使用SocketCAN与车辆通信
设置can-utils以连接CAN设备
安装can-utils
配置内置芯片组
选择一款linux内置的CAN驱动程序支持的芯片组
将芯片组插入linux操作系统笔记本中
使用显示消息的命令dmesg可看到驱动信息
使用ifconfig命令确认can0接口存在
设置CAN总线速率
配置串行CAN设备
使用USB转串口适配器,必须首先初始化串口硬件和CAN总线波特率
若无串行CAN设备
可以配置一个虚拟CAN网络来测试
将VCAN模块载入内核
使用modprobe命令时到/lib/modules/`uname -r`/下去找module的,结果没找到
所以直接到vcan.ko所在路径使用insmod装载模块
用ip link指令访问netlink
记得sudo
CAN使用工具套件
安装附加的内核模块
make编译错误
include net.h中的函数声明与.c文件中的函数调用参数冲突
修改.c中的函数调用
出现新的问题
无法提交issue
加载can-isotp.ko模块
依赖于can.ko
搜索其位置然后insmod
SocketCAN应用程序编程
连接到CAN套接字
socket
bind
设置CAN数据帧
类似ip中的recv和send
procfs接口
让编写bash脚本更容易,还能提供一种快速了解内核工作状态的方法
socketcand守护进程
提供访问CAN网络的外部TCP/IP接口
provides access to CAN interfaces on a machine via a network interface
Kayak
CAN诊断和监视图形界面
利用socketcand处理CAN收发器通信。
安装失败,提交issue
install the libconfig development package ( libconfig-dev)
安装Kayak
安装JDK
压缩包安装
apt-get安装
安装Maven 2
sudo apt-get install maven2
mvn clean package
直接使用官方网站给的安装包
运行.sh文件
记录
打开软件
点击Log files中的
拖入bus
record然后stop
回放
打开log文件
拖入bus
play
信号的使用
添加一个信号
Message View
Gauge view
查看快速变化值
诊断和日志
故障诊断代码
DTC格式
用扫描工具读取DTC
ELM327设备
诊断仪
清除DTC
自动清除
PCM进行3次检查后不再发现故障
软DTC
用扫描工具清除
断开汽车电源清除
硬DTC
解决问题才能清除
统一诊断服务
利用ISO-TP和CAN发送数据
使用cansend发送常规CAN数据
发送格式
诊断代码
#
数据包大小
模式
服务号
正常响应格式
诊断代码+0x8
响应数据包大小
模式+0x40
服务号
服务所返回的数据
异常响应格式
诊断代码+0x8
响应数据包大小
异常模式代码
第四个字节反应错误信息
模式
所返回的异常代码
use SocketCAN’s ISO-TP tools 发送超过8字节的数据
加载coan_isotp.ko模块
istotpsend
发
设置目的地址和源地址
发送PID和service MODE
获取信息
操作时进程被杀死
egrep -i -r 'killed process' /var/log
查看被杀死进程信息
isotpsniffer
收
设置目的地址和源地址
响应
UDS响应
service MODE + 0x40,
PID
the number of data items that are being returned
data items
Modes and PIDs
Mode
始于0x($)
详见附录B
暴力破解诊断模式
工具
CaringCaribou
create an RC file in your home directory, ~/.canrc.
Set your channel to that of your SocketCAN device.
interface = socketcan_ctypes
channel = can0
./cc.py dcm discovery
发现诊断ID信息
发送任意ID的数据帧,打印出得到回应的ID
类似端口扫描
./cc.py dcm discovery -min
一个接一个的扫描
./cc.py dcm services 0x0244 0x0644
针对所发现的诊断ID和回应扫描supported service
the requests below 0x0A are legacy modes that don’t respond to the official UDS protocol.
保持车辆处于诊断状态
“测试者存在”数据包
cansend can0 7df#013e
1到2秒发送它一次
使用cangen
事件数据记录器日志
读取EDR中的数据
crash data retrieval (CDR) tool kit
通过OBD接口
直接连接其他模块
EDR数据记录一般采用SAE J1698标准
CAN总线逆向
定位CAN总线
通过OBD接口
直接寻找CAN导线
双绞线
2.5V
对两根疑似导线做差分
差分值为恒定信号则为CAN
使用can-utils和Wireshark逆向CAN总线通信
使用Wireshark
·通用的网络监视工具
监听对象为 netlink设备
slcan设备无法直接被监听
将接口名字更改为can
使用candump将数据包从slcan转发到vcan
candump -b vcan0 slcan0
使用candump
监听CAN总线上的数据流
嗅探设备
仲裁ID
数据包大小
CAN数据本身
分组can总线数据流
使用cansniffer分组CAN数据包
对发生变化的字节做分色显示
过滤数据包显示
cansniffer的过滤运算
Entering -000000 turns off all packets
0代表通配符
1代表真
-代表removes all matching bits
entering +301 and +308 filters out all except IDs 301 and 308.
ID范围过滤
采用与运算
Kayak
对发生变化的字节做分色显示
可将识别结果输出至XML中
记录和重发
can-utils
使用candump记录
candump -l any vcan0
使用canplyer重放
Kayak
类似录音机的数据录制功能
录制文件内容
元数据
平台
描述
设备别名
CAN数据包
时标
总线名称
数据包内容
ID
#
数据
数据包分析
使用Kayak找到车门开锁控制的CAN ID数据包
记录并重放
若无法复现
消息可能硬连接((hardwired)到物理按钮
使用另一条CAN总线传输
筛选可重放数据包得到关键帧
二分法
通过嗅探对发生变化的字节做分色显示
对使用can-utils找到车门开锁控制数据格式
监视动作发生时关键字节变化
确定具体f哪个字节或数据位控制日标操作
使用carsend验证该字节如何控制变化
如果切换某位时没有响应,则该位可能兄全未被使用,或是单纯的保留位。
获得转速表读数
诊断数据被压缩
需要通过对原始CAN数据进行逆向,找到真实的值
使用Kayak的回放功能
设置无限回放
设置回放的进入点和退出点
注意回访时要持续发送数据包
转速计正常工作时会持续更新值
需要用我们的数据包覆盖真实值
可使用while循环调用cansend或cangen
或是Kayak发送帧的Interval功能
使用仪器总成仿真器创建背景噪声
练习CAN总线逆向技术的工具
图形界面展示汽车状态
设置ICSim
setup_vcan.sh
一键设置vcan0虚拟 can环境
./icsim vcan0
load the instrument cluster to the vcan device
load the CANBus Control Panel
控制面板
读取ICSim上的CAN流量
更改ICSim的难度
./icsim -r vcan0
./controls -s -l 0 vcan0
./controls -s [Seed_num] -l [difficulty levels] vcan0
作业
Create “hazard lights.
找出左转向灯控制数据包
记录并重放左转向信号
记录
打开软件
点击Log files中的
拖入bus
record然后stop
回放
打开log文件
拖入bus
play
定位左转向数据包
在kayak上用二分法不现实
在一段区间内结合sniffer变化量定位
播放的起始点设置只能通过设置复制暂停时的数值使用,无法精确定位
时间轴精确度仅到小数点后三位
使用
can-utils
使用candump记录
candump -l any vcan0
读出 BLM.log 文件一共有多少行
wc -l BLM.log
使用split分段
split -l 2482 ./BLM.log -d -a 4 BLM_
split -l 2482 ./BLM.log -d BLM_
split -l 2482 ./BLM.log -d
使用split分段
使用canplyer重放
canplayer -v -I xab
canplayer -v -li -I xab
更改关键数据位
ocks only the back two doors.
Set the speedometer as close as possible to 220 mph.
使用OpenXC进行CAN总线逆向
OpenXC
将专有的CAN协议转换为易读格式的开放软硬件标准
翻译CAN总线消息
转换CAN消息
可通过标准API,支持对任意CAN数据包的访问
支持JSON跟踪输出
OpenXC连接OBD
openxc-diag –message-id 0x7df –mode 0x3
写入CAN总线
使用标准API写入
支持原始CAN数据包写入
改造OpenXC
逆向CAN信号后,可以制作目己的VI OpeoXC固件
创建.JSON配置文件
compile it into a CPP file that can be compiled into the firmware
openxc-generate-firmware-code –message-set ./test-bench.json > signals.cpp
fab reference build
生成可上传到OpenXC兼容设备的.bin文件
在上传前需配置总线使其支持固件程序写入
CAN总线模糊测试
locate undocumented services or crashes to a target component you want to spoof.
使用cangen做模糊测试
一些开源AN sniffing solutions 支持使用python写模糊测试脚本
在对未公开UDS模式进行模糊测试时,通常需要查找某个未知模式的一切响应。
排除问题
仪表指示灯异常闪烁
重启车辆
可尝试断开并重新连接电池。
充满电池
汽车无法发动
CAN测试耗尽了电池
jump the vehicle with a spare battery.
重新插拔保险丝
汽车无法熄火
停止向CAN总线灌注数据;
拔出保险丝,直到其停机
汽车响应失控
将车置于翻转架上测试
变砖
固件损坏
ECU的攻击
前门攻击
车辆可以通过oBD连接器进行重编程。
逆向重编程协议
J2534:标准化车辆通信API
一系列DLL将标准API调用映射到汽车通信的必需指令
使用J2534工具
基本思路是:观察、记录、分析,而后扩展功能。
观察方式
watching J2534 API calls on a PC using J2534 shim DLLs
watching actual bus traffic using a separate sniffer tool to capture data.
J2534 Shim DLLs
the J2534 application and the target之间的中间人,可以观察两者之间实际交换的数据
获取
search code.google.com for J2534-logger.
KW P2000及其他早期协议
应用层协议
采用串口/USB转串口与PC接口连接,支持通过该协议的诊断和闪存编程
应用前门攻击:种子一密钥算法
方法
通过其他手段获取目标设备的固件,反汇编固件并分折代码,找到种子一密钥对的代码
使用反汇编分析可生成种子-秘钥对的合法软件工具PC端应用程序代码,判断使用的算法
观察合法工具交换密钥的过程,并分析数据对来获取其特征
例子
对通用汽车公司所使川的种子一密钥算法进行逆向工程
Key Algorithm in the Bosch MED9.1 ECU's
后门攻击
分析电路板
从体积最大的芯片开始
获取datasheet
对定制芯片可通过这些定制期间与其他可识别器件相连的方式推断它的功能
查找存储器芯片
读取存储器信息
漏洞利用
通过向系统灌注精心构造的输入信息,令其执行非预期操作
逆向汽车固件
自诊断系统
通常用于监视最关键的发动机功能
可以掌握所有被查错的传感器和功能相关的内存位置
库函数
首先识别用于查表的库函数
控制器访问程序内存的指令提供了一个可用于搜索的独特签名
这些库函数往往具有大量插值运算
存储在内存中的临近位置
找到已知数据表
利用车辆传感器的特定物理和电气特性
如识别MAF传感器数据表的金氏定律
利用数据的可视化工具
anayaze
数据深浅表示大小
数据的渐变清晰可见
而代码区显得随机而混乱
通过MCU进一步了解信息
数据表现形式是由硬件决定的
一般等同于MCU寄存器长度
通过字节比较进行参数识别
对比同一个物理MCU上运行的多个二进制文件
差异部分往往是参数
参考处理器的datasheet
识别中断处理程序
结合中断引脚设置分析相应硬件功能的代码区块
使用WinOLS识别ROM数据
识别出ECU固件中MAP并且能够实现这些数据的2D、3D展示
实现MAP数据的编辑和校验
如果ROM类型己知,WinOLS有许多可自动识别配置参数的模板。
代码分析
方法论
首先识别其使用的体系架构
所使用的处理器
反汇编工具
IDA
Dis51
Dis66k
GNU bintutils
tips
以汽车申请的专利为索引
分析任何可用的用来操作ECU的软件,以洞悉代码段的结构和用途。
从ECU与MCU连接关系对中断表进行交叉索引
基础反汇编工具实战
研究对象
disassembly of a 1990 Nissan 300ZX Twin Turbo ROM.
伴随a 28-pin external 27C256 EPROM,
工具
DASMx
创建.sym文件
描述平台
放置image入口点
分析内存结构
设置已知符号
开始反汇编
分析内存结构
查找类似工作
for a smaller 16KB binary based on settings for a 0xC000 entry point
MCU可寻址范围
找到中断向量表
datasheet相关描述
使用DASMx进行反汇编
获取MCU符号表
take the RAM address information (consult table) from my Header files used in the NIStune autopatch code and combine this with the ROMEditor address file address information
得到中断向量表
反汇编得到代码
交互式反汇编器
IDA
对寄存器和变量进行命名
代码图形化可视化程序流程
可编程
允许添加操作码
ECU测试平台的构建与使用
最基本构成
电源
ECU
OBD链接器
基本测试平台
获得ECU
车辆废弃厂
网上订购
成品仿真器
如
分解ECU线路
线路图
网站
维修手册
按照OBD引脚进行连线
可在CAN两个末端添加120欧姆的终结电阻
搭建高级的ECU测试平台
架构
图
分压计
生成传感器信号
MCU
仿真的凸轮轴、曲轴信号
可使用其他嵌入式设备
生成更复杂的信号
仿真车速
霍尔效应传感器原理
在编写模拟这些传感器的微控制器代码时,关键在于确定车辆所使用的传感器类型,这样才能确定使用数字输出还是模拟输出,伪造缺失齿信号
过程
通过OBD读VIN
获取出厂年份、发动机类型等信息
获取线路图
判定车速控制ECU
找到车速计对应引脚
对该引脚输出arduino设备输出的仿真信号模拟CKP传感器
使用分压计模拟速度
也可使用信号发生器模拟
攻击ECU与其他嵌入式系统
分析电路板
识别型号编码
通用芯片
查datasheet
使用定制操作指令的定制ASIC芯片
插入EPROM编程器读取固件
通过JTAG调试软件编程
解剖并识别芯片
通过商标和型号说明识别
辨认引脚
第一引脚
CAN通信引脚
使用JTAG和串行线缆调试功能调试硬件
JTAGulator
识别芯片的JTAG引脚
利用JTAG进行调试
突破开发者的保护机制
软件禁用
在短时间内置位JTD两次
using a clock or power-glitching attack to skip at least one of these instructions.
8.5.1
8.5.3
硬件禁用
设置JTAG熔丝直接禁用寄存器
接触芯片顶盖使用显微镜和激光操作
串行线调试
SWD协议
只需要两个引脚
支持重用JTAG引脚
STM32F4 Discovery套件
下载器
ST-Link
linux
可用于测试对芯片固件的改造
2005 Acura TL ECU
高级用户调试器
Nexus
主要用于飞思卡尔芯片
利用ChipWhisperer进行旁路分析
ChipWhisperer the MultiTarget Victim Board
开发板
an ATmega328
高性能、低功耗AVR 8位微控制器
a XMEGA
MCU
a smart card reade.
安装软件
ChipWhisperer
OpenADC
设置linux系统以访问开发板
设置开发板
下载AVR加密库
下载软件
AVRDUDESS
接线连接电脑
使用功率分析攻击方法暴力破解安全引导程序
TinySafeBoot
BootLoader
使用AVRDUDESS下载TinySafeBoot至开发版中
set up the ChipWhisperer to communicate with the bootloader over the bootloader’s serial interface
设置自定义密码
以监视密码输入时的功耗水平
读取并修改目标设备闪存的最后一页
输入错误密码时复位AVR跳出死循环
使用python命令行设置脚本
设置ChipWhisperer ADC
监视密码输入时的功耗
监控正确密码功耗
监控完全错误密码的功耗
监控首字母正确密码的功耗
判断一个合法字符所需要的样本长度
ChipWhisperer Python脚本编程
编写自动脚本破解工具
设置一个阈值
检测一位密码的正确性
局限性
若密码校验程序一次检验全部密码而不是逐一验证,该攻击方式失效
故障注入
原理
干扰芯片的正常工作,导致其跳过执行某些特定指令
时钟干扰
原理
必须首先与目标的时钟司步,并在所需跳过的指令发射的同时, 将时钟信号的一个周期的部分压低
实现
使用FPGA
或者其他MCU
使用ChipWhisperer实现
设置ChipWhisperer,令其控制ATmega328的时钟
给予ChipWhisperer对目标电路板时钟的完全控制权,并允许上传干扰攻击演示固件
编译演示固件
演示固件是一个简单的密码验证程序
通过AVRDUDESS下载固件
连接串口
使用AVRDUDESS
复位芯片
单击Detect
通过串口向芯片输入密码
使用ChipWhisperer设置干扰项在时钟信号中引入毛刺
通过异或一个干扰信号
可配置为仅在触发线路上收到信号时发出时钟干扰。
设置触发线路
原理
触发线路在攻击点之前收到信号,确定干扰信号加入的时间
实现
在密码验证失败程序前引入一个下降沿触发干扰信号
从而跳过标志位判断
进入正确验证分支
局限
源代码无法获知
无法确定干扰进入点
无法引入触发信号
电源干扰
向目标电路板以稳定的速率输入电力,并当需要在特定指令处触发非预期结果时,通过提升或降低电压中断该指令
有损故障注入
打开芯片进行信号注入
车载信息娱乐系统
攻击面
辅助插孔
无线输入
内部网络控制
利用系统更新进行攻击
识别系统
查看IVI系统单元或框架外侧的标签
显示软件版本号
第三方制造系统
可杳找它是否有网站和固件更新
确定更新文件类型
使用linux中的file命令查看其文件头
目标体系结构
使用binwalk
查看识别出的文件类型列表
使用-e参数将提取各个文件,用作进一步分析和审核
unsquashfs 工具“解包”(unsquash)
改造系统
从可见运行结果的改造项目中着手
启动画面
修改校验文件
查找校验文件
确定校验算法
通过哈希值的长度
常见的哈希算法
Linux工具CRC32, md5sum和sha1sum可用于快速计算现有文件的哈希值
对更新包中的二进制文件或DLL文件运行strings命令
反汇编研究校验函数算法
App和插件
修改现有的插件或创建自己的插件,可能是执行代码以进一步解锁系统的一种非常好的办法
漏洞挖掘
提取IVI中所有的二进制代码
检查系统中二进制程序和各类库的版本
使用用于编译目标系统的SDK软件开发工具包生成修改后的固件程序
如微软汽车平台(Microsoft Auto Platform)
攻击IVI硬件
分解IVI单元的连接
如果能够确定目标是否已连接到网络总线,即可知道漏洞利用程序可以控制的范围。
拆解IVI单元
读PCB
找到隐藏接口
JTAG
UART
信息娱乐系统测试平台
GENIVI Meta-IVI
架构图
安装
使用一个docker镜像建立GENIVI系统
Automotive Grade Linux
可以在物理IVI单元上运行的IVI系统
某些开发镜像在虚拟机上也能运行
获取实验用OEM IVI
从现有的车辆中拆卸
IVI系统的防盗安全码可从用户手册中获得
可用VIN获取或重置防盗安全码
可通过查询ECU获取VIN
购买一个开发用的IVI
Nexcom VTC-1000
Tizen硬件兼容性列表
车间通信
V2V通信方法
蜂窝网络
DSRC
专为V2V通信设计
混合方式
WIFI
卫星
其他可行的通信方式
DSRC协议
概述
基于802.11p和1609.x无线协议
DSRC数据速率依赖于同一时间访问本地系统的用户数量。
在不同国家,分配给DSRC系统的5.9GHz频段的专用信道数也有所不同。
特征及用途
路旁DSRC系统
用于定期车辆状态切换的协同感知消息CAM
数据包
ITS PDU header
站点特征信息
Sation ID
常规车辆参数
用于事件触发的安全通知的去中心化环境通知消息DENM
DENM消息由安全和道路危险警告触发
数据包格式见表格
WAVE标准
服务信道
应用IPV6
通过WAVE management entity (WME)
也用于处理信道分配和监视服务通告
控制信道
用于发布服务通告和来自各个应用的短消息
数据包
WSMP(WAVE short-message protocol )消息格式
WAVE服务通告
如果车辆的PSID与某个播发的PSID匹配,车辆将开始通信
使用DSRC进行车辆跟踪
制作DSRC接收器在有限距离接受车辆的相关信息
by
买设备
软件定义无线电
安全问题
基于PKI 的安全措施
PKI概述
车辆证书
算法
ECDSA-256
证书分类
长期证书
含有车辆标识符
可用于重新获取短期证书。
短期证书
用于匿名传输,该传输模式用制动或道路条件等普通消息的传输。
匿名证书
保证V2V系统不发送可追溯的信息
缺点
仍然可以在一条给定的路径检查匿名证书签名,并确定车辆的行驶路径
弥补
设备应使用只在5分钟内有效的短期证书
证书供应过程
更新CRL(证书吊销列表)
证书吊销可能原因
被攻击者盗用
被拥有者自身丢失
设备出现异常
更新方式
通过路旁设备
必须以足够满的速度通过以保证接受时间充足
通过蜂窝网络或卫星通信
通过V2V接口相互更新
为恶意行为者提供注入恶意CRL的机会
存储CRL的有漏洞的车载系统为攻击者提供了一条注入代码的方便途径
通过LA撤销车辆上所有生成证书
不端行为报告
通过ECU检查它收到的数据包是否MAKE sense
武器化CAN研究成果
用C语言编写漏洞利用程序
大量发送0x510 lD CAN数据包的C循环
建立套接字连接
建立一个while循环,并设置一个睡眠定时器定期发送数据包
改写为汇编代码
编写该脚本和标准汇编脚本之间唯一的区别是需要避免产生NULL字节
为了将C代码改写为汇编代码,需要查看系统的头文件
在unistd_64.h中可以找到系统调用序号
要进行内核系统调用,使用syscall—而不是int 0x80
明确函数调用规范
将汇编代码转换为shellcode
使用一条bash命令
for i in $(objdump -d temp_shell2.o -M intel |grep "^ " |cut -f2); do echo -n '\x'$i; done;echo
去除NULL
使用metasploit的loader
重写汇编代码
将具有NULL操作的MOV指令用一个擦除寄存器命令和另一个能向寄存器赋值命令代替
创建Metasploit载荷
使用shellcode的Metasploit载荷模板
确定目标种类
交互式探测
查询VIN
use the OBD-II Mode 2 PID 9 protocol to query the VIN.
解码VIN
前三个字符称为世界制造商识别
接下来的6个字节构成了车辆描述符段
制造年份存储在第10个字节
交互式探测的被检测风险
在触发载荷之前有可能被发现
被动式CAN总线指纹识别
原理
类比IPv4的指纹探测技术
CAN数据包的特征值
Dynamic size
Intervals between signals
Padding values
Signals used
CAN of Fingers
Make, Model, Year, Trim, and Dynamic
应用cOf
使用Dynamic数据包中的main ID and main interval甄别目标类型
特定ID的特定interval甄别目标类型
负责任的漏洞利用
考虑错误目标识别程序或完整的VIN检查
防止有人随意地直接运行漏洞刊用程序
攻击基于间隔的CAN信号
侦听以得到希望修改的CAN ID,当通过读请求接收到该ID时,修改后立刻发回。
负责任的漏洞利用
使用SDR攻击无线系统
SDR和无线系统
工具准备
SDR设备
RTL-SDR
USRP
Great Scott Gadgets 的Hack RF One
GNU Radio
将SDR设备和GNU Radio联用
可编程电台
信号调制
幅移键控
ASK
频移键控调制
FSK
TPMS黑客技术
使用射频接收器监听
相关研究
Security and Privacy Vulnerabilities of In_Car Wireless Networks A TirePressure Monitoring System Case Study.pdf
为克服TPMS系统的低泄露特征,可以给射频接收机增加一个低噪声放大器
gr-tpms
用于捕获和解码TPMS数据包的工具
TPMS数据包
数据包格式
如果它支持曼彻斯特编码,则需要在分析数据包的内容前对其进行解码
激活信号
攻击者可以使用SDR向TPMS设备发送一个125KHz的激活信号,触发响应,而无须等待传感器发送数据包的60秒
跟踪车辆
触发事件
如炸弹
在接收到某个己知TPMS传感器ID时起爆
发送构造的数据包
伪造危险的PSI和温度读数
通过向传感器洪泛激活请求,耗尽车辆电池。
攻击遥控钥匙和防盗系统
观察钥匙发送的信号
GNU Radio
Gqrx SDR
遥控钥匙黑客技术
干扰遥控钥匙信号
保留密钥
回放密钥及钥匙发出的请求信号
开门或发动车辆
前向预测攻击
在此类攻击中,攻击者观察多次质询。通过这些质询,对下一次质询清求做出顶测
字典攻击
参考
Broken keys to the kingdom.pdf
导出应答器的存储器内容
逆向CAN总线
某些情况下,甚至在车外可以接触到CAN总线
某些车辆将CAN总线连接到车尾灯上。攻击者可以取出尾灯,插入CAN总线网络
钥匙编程器和应答器复制机
攻击PKES(无源无钥匙进入与启动系统)系统
PKES遥控钥匙使用低频RFID芯片,而解锁和发动车辆则使用特高频信号
分类
中继攻击
Relay Attacks on Passive Keyless Entry andStart Systems in Modern Cars.pdf
放大中继攻击
扩展范围
可读取居民在家时的钥匙信息
防盗器密码学
典型的密钥交换流程
防盗器使用一个伪随机数发生器向钥匙发出质询
钥匙对质询使用一个伪随机数发生器进行加密,返回给防盗器
防盗器发出第二个随机数质询
钥匙加密前后两个质询,并将它已们返回l给防盗器
EM Micro Megamos
Dismantling Megamos Crypto Wirelessly Lockpicking a VehicleI mmobilizer.pdf
EM4237
使用一个高安全性的128位密码
也可工作在只使用32位密码的低安全模式下
HiTag 1
依赖于32位的密钥,很容易受到暴力攻击
HiTag 2
Gone in 360 Seconds Hijacking with Hitag2.pdf
DST-40
Security Analysis of Cryptographically-Enabled RFID Device.pdf
DST-80
Keeloq
开源防盗器协议栈
对防盗器系统的物理攻击
攻击防盗器芯片
物理去掉基于防盗器的安全措施,需要购买或制作一个防盗器旁路芯片
配置钥匙解锁并发动车辆
暴力破解密码键盘
图
拆掉方向盘
找到点火线、电池线、启动机线
将点火线和电池线缠在一起
使用起动机线对其点火
性能调校
前言
全球达到190亿美元的市场
性能调校的取舍
调校是保证发动机不自毁前提下,将其按某个特定目标进行配置的一种折中。
一些折中关系
提升功率将降低燃油效率并产二生更多的碳氢化合物排放
提升燃油效率可能增加氮氧化物排放
提升扭矩将提升发动机和结构部件的受力和应力
提升气缸压力将提高爆震和损坏发动机的概率
ECU调校
芯片调校
在ROM芯片的位置安装芯片插座,以方便插拔芯片。
EPROM编程器
BURN2
许多调校程序对其具备原生支持
Willem
ROM模拟器
将ROM内容存储在某种类型的非易失性读写存储器中,以便对ROM进行实时修改
OStrich2
RoadRunner
许多调校程序对其具备原生支持
OLS3000
闪存调校
RomRaider
与 Tactrix OpenPort 2.0配合使用
可以快速创立并修改发动机参数,无线对flash进行反汇编
独立发动机管理工具
MegaSquirt是一种流行的独立发动机控制计算机
可与TunerStudio配合使用
附录A
工具