第一季赛事结束后,Block Harbor 通过其平台VSEC公开了50个独特的汽车挑战,并提供了5000美元的奖金,激发了更广泛的参与和社区建设。 第二季赛事预计将在2024年8月24日至9月8日举行,奖金池增至10万美元(From Garage to Glory: The Rise of a $100K Automotive Capture the Flag Challenge – Block Harbor) 在他们网站上有一个车联网安全 CTF 平台,记录一下WriteUP
感谢yichen投稿
前排提示
文中有一部分 candump 放在后台执行是因为我当时想不到发送的时候同时监视 candump 的方法,只能先写到日志里然后发完指令后查看日志文件
后来发现竟然有 python-can 这个库,一定程度上解决了这个问题,但是就发个包还要改脚本也挺麻烦的,后来发现这个终端是 tmux,所以可以自己分割窗口,比如执行:tmux split-window 会分为上下两个窗格,tmux split-window -h 会分为左右两个窗格,后续可以通过快捷键切换窗格,例如分割为左右两个窗格后可以先按下 ctrl+b 再按方向键的 ← → 来切换。
注册
先在这里:https://vsec.blockharbor.io/ 注册账号登陆后点击 Capture the Flag
跳转到这个界面选择:Proving Grounds
会跳转到一个 CTFd 平台,就可以答题啦
Getting Started
Can you find the interface?
题目描述:This challenge is within the Harborbay vehicle simulator on VSEC. From the home page, enter HarborBay. Select the Mach-E UDS Challenge Simulation, then launch the terminal.
What is the name of the CAN interface available on the virtual terminal?
翻译:此挑战在 VSEC 上的 Harborbay 车辆模拟器中进行。从主页进入 HarborBay。选择 Mach-E UDS 挑战模拟,然后启动终端。
虚拟终端上可用的 CAN 接口名称是什么?
回到 VSEC 平台,选择 Garage
选择 UDS Challenge (simulation)
再点击 Open Terminal 会打开一个终端
这就来到了操作的终端,感觉目前大多数在 linux 平台操作 CAN 总线都是先将 CAN 总线接口映射到 socketCAN,比如 pcan 可以用:ip link set can0 up type can bitrate 500000
想要看 CAN 接口名称可以在终端输入 ifconfig 或者 ip link,得到 flag:vcan0
Arbitration
题目描述:This challenge is within the Harborbay vehicle simulator on VSEC. From the home page, enter HarborBay. Select the Mach-E UDS Challenge Simulation, then launch the terminal.
What is the Arbitration ID of the CAN frame being sent periodically on the CAN interface?
翻译:本次挑战在 VSEC 上的 Harborbay 车辆模拟器中进行。从主页进入 HarborBay。选择 Mach-E UDS 挑战模拟,然后启动终端。
在 CAN 接口上定期发送的 CAN 帧的仲裁 ID 是什么?
想要看 CAN 总线上发的什么可以使用 candump 指定特定的 CAN 接口,监听 CAN 总线上的数据,可以看到定期发送的 CAN 数据,ID 为 59E,因此 flag 为 59E
Data Field 1
题目描述:This challenge is within the Harborbay vehicle simulator on VSEC. From the home page, enter HarborBay. Select the Mach-E UDS Challenge Simulation, then launch the terminal.
How many bytes of data are in the data field of the CAN frame being sent periodically on the CAN interface?
翻译:此挑战在 VSEC 上的 Harborbay 车辆模拟器中进行。从主页进入 HarborBay。选择 Mach-E UDS 挑战模拟,然后启动终端。
在 CAN 接口上定期发送的 CAN 帧的数据字段中有多少字节数据?
问你定期发送 CAN 帧的 DLC(Data Length Code)是多少,也就是 数据的长度,同样使用 candump vcan0 可以得到答案为 2
Data Field 2
题目描述:This challenge is within the Harborbay vehicle simulator on VSEC. From the home page, enter HarborBay. Select the Mach-E UDS Challenge Simulation, then launch the terminal.
What is the value of the data field of the CAN frame being sent periodically on the CAN interface? Format: XXYY
翻译:此挑战在 VSEC 上的 Harborbay 车辆模拟器中进行。从主页进入 HarborBay。选择 Mach-E UDS 挑战模拟,然后启动终端。
在 CAN 接口上定期发送的 CAN 帧的数据字段的值是多少?格式:XXYY
数据就是 9E10
Message Frequency
题目描述:This challenge is within the Harborbay vehicle simulator on VSEC. From the home page, enter HarborBay. Select the Mach-E UDS Challenge Simulation, then launch the terminal.
What is the frequency that the periodic CAN frame is transmit at? (in Hz)
翻译:此挑战在 VSEC 上的 Harborbay 车辆模拟器中进行。从主页进入 HarborBay。选择 Mach-E UDS 挑战模拟,然后启动终端。
周期性 CAN 帧的传输频率是多少?(单位为 Hz)
使用 candump -l vcan0 可以将 CAN 总线数据捕获为一个 log 文件,查看该 log 文件会有每条 CAN 数据记录的时间,题目问周期性 CAN 帧的传输频率,感觉不可能算的多精确,看上去基本就是一秒一个,所以试了一下答案就是 1...
OSINT
what is a great default password?
题目描述:???
Minus 1 million points if this is your actual password.
翻译:???
如果这是您的实际密码,则扣除 100 万分。
嗯.. 一开始以为三个问号表示的是三个字符,试了试 123 啥的不行,随手试了试 admin、password,结果是 password
Founding Fathers
题目描述:When was Block Harbor founded?
翻译:Block Harbor 是什么时候建立的?
搜一下 Block Harbor 在官网找到介绍,可以看到是 2014 年建立的
Vehicle OSINT
Finding a VIN
题目描述:Here's a license plate "DCR 660", it is registered in Michigan. Can you find the VIN?
翻译:这是车牌“DCR 660”,注册地为密歇根州。你能找到 VIN 吗?
以 "DCR 660"、"Michigan"、"VIN" 为关键词在 google 搜索,发现有个叫车牌查询的网站
进来之后按车牌查询,注意不要带空格,选择密歇根州
查询得到 VIN 码:YV4A22PK1H1184823
Make and model
题目描述:Here's a license plate "DCR 660", it is registered in Michigan. What is the make and model?
Format: year-make-model
翻译:这是牌照“DCR 660”,在密歇根州注册。品牌和型号是什么?
格式:年份-品牌-型号
嗯.. 在刚才的网站已经有了:2017-VOLVO-XC90
Manufactured at?
题目描述:Here's a license plate "DCR 660", it is registered in Michigan. Where was it manufactured at?
Format: City, Country
翻译:这是车牌“DCR 660”,在密歇根州注册。它是在哪里制造的?
格式:城市,国家
上一个网站信息有限,且要收费... 这个网站信息比较全:https://www.lookupaplate.com/michigan/DCR660/
可以看到城市和国家分别是:TORSLANDA 和 SWEDEN,因此 flag 为:TORSLANDA, SWEDEN(注意逗号后面的空格...)
Imported when?
题目描述:Here's a license plate "DCR 660", it is registered in Michigan. When was this car imported to the US?
Format: dd-mm-yyyy
翻译:这是车牌“DCR 660”,在密歇根州注册。这辆车什么时候进口到美国的?
格式:dd-mm-yyyy
实在找不到好用的网站查询,基本都要花钱,然后直接搜了搜 VIN 码,找到了这么个网页:https://www.zauba.com/USA-import-v/shipment-date-2017-05-01T00%3A00%3A00Z/country-SE-data.html,展开详情后搜索 VIN 码定位到具体的日期:2017 年 5 月 11 号,flag 为:11-05-2017
Mac Track!
题目描述:We've managed to identify the MAC address of a vehicle of interest, can you help us track down where it was located on December 8'th, 2022? We need the latitude and longitude to two decimal places.
MAC: 2A:38:5C:91:E5:27
Hint: format XX.XX,XX.XX
翻译:我们已成功识别出相关车辆的 MAC 地址,您能帮我们追踪它在 2022 年 12 月 8 日的位置吗?我们需要精确到小数点后两位的纬度和经度。
MAC:2A:38:5C:91:E5:27
提示:格式 XX.XX,XX.XX
这题需要用到 https://wigle.net 这个网站,注册账号后点击 View 下面的 Advanced Search 将题目给出的 MAC 地址输进去查询
查到之后点击去会显示一个结果列表
找到 2022 年 12 月的经纬度信息42.34 和 -83.00,然后需要四舍五入... 所以 flag 为:42.35,-83.01