2、渗透测试环境搭建:硬件工具(CANoe、USBCAN)、软件工具(Wireshark、CANalyzer)、虚拟机配置
好,咱们直接进入正题。做ADAS安全测试,环境搭建是第一步,也是决定你后面能不能顺利干活的关键一步。我见过太多人,工具买回来连不上、软件装完蓝屏、虚拟机跑不起来——说白了,都是前期准备没做到位。
这一章,我就把硬件怎么接、软件怎么配、虚拟机怎么调,掰开了讲清楚。你跟着走一遍,基本不会出大问题。
2.1 硬件工具:CANoe 与 USBCAN
先聊硬件。ADAS系统里,CAN总线是命脉。你要想抓报文、发攻击帧,手里没个趁手的家伙可不行。
2.1.1 CANoe:行业标杆,但别被它吓到
CANoe 是 Vector 家的旗舰产品。说实话,我第一次用的时候也被那密密麻麻的界面唬住了。但用久了你会发现,它其实就是个「万能转接头」——把电脑和车辆总线连起来,然后你想看什么、发什么,都行。
我个人的习惯是:
- 先用 CANoe 做「监听模式」,看看总线上正常跑哪些报文
- 再用它的「交互模式」手动发几个测试帧
- 最后才写 CAPL 脚本做自动化攻击
别一上来就写脚本,容易翻车。我在项目里遇到过,有人直接发了一堆错误帧,结果把ECU搞进了boot模式,最后只能断电重启。
2.1.2 USBCAN:性价比之选
如果你预算有限,或者只是做实验室环境下的验证,USBCAN 是个好选择。市面上常见的有周立功的 USBCAN-II 或者广成科技的 GCAN 系列。
USBCAN 和 CANoe 的区别在哪?
| 对比项 | CANoe | USBCAN |
|---|---|---|
| 价格 | 几万到十几万 | 几百到两千 |
| 功能 | 全功能(分析、仿真、测试) | 基本收发 + 简单分析 |
| 驱动兼容性 | 自带驱动,即插即用 | 需要手动装驱动,有时会冲突 |
| 适合场景 | 整车级、产线级测试 | 实验室、单节点测试 |
嗯,这里要注意:USBCAN 的驱动在 Win10/Win11 上偶尔会掉线。我曾经在测试一个 AEB 系统的响应时间时,USBCAN 突然断开,数据全丢了。后来我学乖了——每次测试前,先跑 5 分钟连续收发,确认链路稳定再开始正式测试。
2.2 软件工具:Wireshark 与 CANalyzer
硬件接好了,接下来就是软件。这两个工具,一个抓网络包,一个抓总线包,各有各的用处。
2.2.1 Wireshark:不只是抓IP包
很多人以为 Wireshark 只能抓以太网的包。其实它也能解析 CAN 报文——前提是你得装对插件。
具体做法:
- 下载 Wireshark 4.0 以上版本(老版本对 CAN 支持不好)
- 安装时勾选「USBPcap」和「Npcap」
- 把 CAN 硬件(比如 USBCAN)的驱动装好,让系统识别为一个虚拟网卡
- 在 Wireshark 里选择对应的接口,就能看到 CAN 报文了
你想想看,这意味着什么?意味着你可以把 CAN 报文和以太网报文放在同一个时间轴上分析。比如 ADAS 的摄像头数据走的是以太网,而控制指令走的是 CAN 总线——两边一对照,攻击路径就清晰了。
can.id == 0x123 这样的过滤表达式,可以快速定位特定 ID 的报文。我一般会先抓 10 分钟正常数据,然后写几个过滤条件保存下来,后面每次测试直接套用。
2.2.2 CANalyzer:Vector 家的分析利器
CANalyzer 和 CANoe 是同一家的,但定位不同。CANoe 偏重「测试与仿真」,CANalyzer 偏重「分析与诊断」。
我为什么推荐 CANalyzer?
- 它的「Trace 窗口」能实时显示报文变化,比 Wireshark 的列表更直观
- 支持 DBC 文件导入,直接看到信号名(比如 "Brake_Pressure"),不用对着十六进制数猜
- 有「触发录制」功能——你可以设置当某个信号值超过阈值时,自动开始录数据
举个例子。我在测试一个 LKA(车道保持辅助)系统时,想看看当方向盘转角超过 90 度时,总线上的报文有什么异常。用 CANalyzer 的触发录制,设好条件,然后我出去喝了杯咖啡,回来数据已经录好了。省心。
2.3 虚拟机配置:隔离与复现
做渗透测试,虚拟机是标配。为什么?因为你要在测试环境里装各种工具、跑各种脚本,万一搞崩了系统,虚拟机一删一重建,干干净净。
我的虚拟机配置方案:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 虚拟机软件 | VMware Workstation 17 Pro | 对 USB 设备穿透支持最好 |
| 操作系统 | Ubuntu 22.04 LTS | 兼容性好,工具链全 |
| 内存 | 8GB 以上 | Wireshark + CANoe 同时跑,4GB 会卡 |
| 硬盘 | 80GB 动态分配 | 装完工具大概占 30GB,留点余量 |
| 网络模式 | 桥接模式 | 让虚拟机直接访问物理网络,方便抓包 |
USB 设备穿透是关键。 你想想看,CANoe 和 USBCAN 都是 USB 接口的,如果虚拟机认不到硬件,那一切白搭。
具体步骤:
- 在 VMware 里,点击「虚拟机」→「可移动设备」→ 找到你的 CAN 硬件
- 选择「连接(断开与主机的连接)」
- 如果驱动装好了,虚拟机里应该能看到新的网络接口或串口
我曾经踩过一个坑:在 Ubuntu 虚拟机里装 USBCAN 驱动时,系统提示缺少内核头文件。折腾了半天,最后发现是 VMware 的「共享文件夹」功能占用了 USB 中断。解决办法很简单——关掉共享文件夹,重启虚拟机,再插一次 USB 设备。
- 硬件:CANoe 做主力,USBCAN 做备用
- 软件:Wireshark 抓网络包,CANalyzer 抓总线包,两者互补
- 虚拟机:Ubuntu 22.04 + 8GB 内存 + 桥接网络 + USB 穿透
- 测试前:先跑 5 分钟稳定性验证,再开始正式测试
好了,环境搭好之后,下一章咱们就开始真刀真枪地抓报文、分析信号了。到时候你会发现,前期这些准备工作做得越扎实,后面测试就越顺手。