初入车联网那些事【纯文字】
今年有幸第一次参加铸盾2026车联网线下攻防。这次人员组织和准备都比较匆忙,而且我带的还是新笔记本,好多环境都没调试好。有钱的话,还是建议入手一台 Mac 笔记本,能少很多麻烦。设备方面,我们团队准备得也不算很充分。去之前开了一个小会议,然后就坐高铁去现场了。
我们提前一天到了。因为要到指定日期才能住进赛事方准备好的酒店,所以我们先在外面的酒店住了一晚。那天晚上我甚至还在手搓一些攻防工作流,在网上扒拉车辆的一些攻击面。因为这次比赛我确实准备得不够充分,还是略显焦虑,毕竟机会难得,所以那天晚上比平时睡得更晚。
到了周一中午,吃了个饭就直接赶去赛事方的酒店。到那其实挺尴尬的,发现赛事方准备的衣服和一些物料还没整理好,不过好在可以提前办理入住。简单放完行李后,我搜了一会车联网相关信息和攻击面。队长让我们一起下去签到,我们这次队长取了一个很离谱的名字,这里就不说了,确实有点上不了台面。领取完衣服、工作证后,我们就回房间开始整理自己的东西,调试一些工具的 MCP 接口。工具这里大概介绍一下:软件有 IDA、Jdax、ADB、Burp Suite、Wireshark、rabin2、Fact、Kali、Ubuntu 等;硬件有 PCAN 总线分析仪、蓝牙适配器、无线网卡、A 对 A 的数据线、C 对 C 的数据线、一些针脚。至于其他无线射频设备就没有了,大概就这么多。
周二早上比赛日开始就下大雨,也是天公不作美。到了现场先上去参加开幕式,一堆领导发言致辞,然后揭幕。搞这个活动的时候,我就一直在观察其他队伍带了什么工具,也一直在听他们聊天,争取搞一些我们没有的信息,补一下信息差。真的来了好多大佬,反正国内有名的安全厂商都有实验室来,一看就是那种有备而来拿奖的,亚历山大。上午最后领导们先下去看汽车展览,这些车都是国内现在有发布声明、但还没有售卖到市面上的车,可以说都是最新的测试车。中午了,我们这一帮红队就先去饭堂干饭,当然是盒饭。而蓝队是一些厂商和裁判,另外还有一些工作人员。
午饭过后,就直接到一楼签到开始攻防了。衰人的地方又来了,对于我们这种第一次参加比赛的队伍,上来就是一台无人车,这里我用代词 E 指这台车。这个无人车的特点是啥呢,我们光是找车辆开关就找了半天,最后没招了去找裁判。E 车的车辆开关在左前轮那里,有个特殊的开关,具体是啥我忘了,因为不是我开的嘛。进了车门后,车上有个大屏幕,然后我们开始分工:我负责 Wi-Fi 协议的信息搜集、钓鱼 Wi-Fi 以及 Web 端渗透;一人负责蓝牙中继重放;一人负责 CAN 总线报文分析;队长负责逆向这一块。但是第一天我们不知道可以要 APP 以及车主账号登录,中控屏也没什么可操控的,需要账号才能进行更多车机操作,要用安全员账号才能连上车机。Wi-Fi 这里也没有密码,车机账号密码弱口令也试过了,我也尝试爆破 Wi-Fi,但是没有爆破出密码。然后我就构建钓鱼 Wi-Fi,试着能不能让车机主动连接我,再做 DNS 劫持,但这里并没有成功。
蓝牙这一块更是没有进展,只看到中控上有个 Wi-Fi 的标志,PIN 码也没办法爆破。接着只能试最后一条路线,就是去找车辆的 CAN 总线接口或者 T-BOX 接口。它那个线在一块板子的里面,由于第一次来,加上赛事规则说不能拆机破坏车辆,我们也就不敢拆了。这个车僵住的时间里我也没有闲着,我去看看其他队有什么突破,顺便看看还有哪些车辆可能比较好打。挨个车标摸过去,这里关于车辆的一些信息都是遮挡的,只能靠自己摸和一些经验判断。看哪些车网上信息稍微多一点,我就一台台摸过去,统计了一些信息,也偷偷看他们用什么工具打,顺便看了一眼榜单。大家好像都没什么成果的样子,分数都不高。
接着我们就利用赛事规则换车了,一天可以更换两次车。E 车对于我们而言实在没有什么攻击面可打,于是我们换到了 W 车,W 车是国外知名品牌的车。终于有一个正常的车辆可以打了,然后我们就按照之前的分工继续干。这里我开始注意比赛手册的规则,AI 搞出车机内置模型就有基础分。这台车的模型终于在多次询问 AI 后拿下来了,是某 G 的配置。CAN 总线分析这边,判断报文成功搞出了 seed 种子,绕过了 0x27 安全访问,让车辆鸣笛、熄火都可以,这里我们算是拿了一些分。Wi-Fi 协议这一块,我目前还是没什么突破,主要还是本人这里搞错了一些东西。W 车也没找到进入工程模式的入口。蓝牙协议方面,我们的蓝牙适配器有点问题,还是没有搞出其他有用的东西,后续还一直跟裁判扯皮这个漏洞。
最后一次换车机会换成了 K 车,也是在 K 车上我们才得知可以要车主 APP,也算是裁判好心跟我说,后面逆向也用起来了。K 车好就好在能用 AI 搞出这个加密算法,利用这个加密算法进入工程模式后,来到 ADB 连接,用了某个 0day,进入 ADB 直接就是 root 权限。再加上这个车机的 AI 也拿了一点分,剩下的时间就是在跟裁判扯皮。然后我搜集了一些其他队伍的信息,还是有挺多人来问我们是哪个队的。第一天大家都没啥分,我们的漏洞也没审完,就此结束了。我印象比较深的是,我们应该是最晚走的那几个队伍。一般来说,晚上七点就可以签退走人了。第一天应该淘汰了四支没有交漏洞的队伍,我们也跟一些和我们组织性质类似的队伍交流聊了一下心得。晚上我自己复盘,还是在整理 Wi-Fi 协议的问题,搞到很晚,实在熬不到了就睡了。
周三起来,一到现场发现我们是第二名了,说明裁判昨晚审核漏洞审核到很晚。今天要打的是 I 车,昨天有一队已经打出来一个远控,直接搞了 5000 分,很夸张。我看着他们在车外让车辆鸣笛和开关灯光。I 车是一个合资车,知道车机型号,并且我连接 Wi-Fi 后抓了包,分析了一会没啥有用的东西,就试着去打内网。内网的东西后续也没什么好的突破。今天是抢分的关键,要淘汰五支队伍,所以大家都打得比较着急。
打的途中,昨天打这辆车的队伍还过来跟我交流了一下。我判断他们是想看看我们能不能打出他们的这个洞,然后还给了我们一个信息,说是 ADB,我也不知道真假。如果我们打出来,他们的分数就得往下降,类似 CTF 那种机制,越早打出来分才越高。这个车有工程模式,但我们进不去。然后又尝试有没有车机屏幕的一些 SSH 漏洞,也没扫出这些端口。接着又尝试 ADB 接口和蓝牙适配器的问题,发现还是不行,可能被他们骗了,毕竟是个比赛哈哈。然后打到晚上实在打不动了,裁判也说今天的洞只审晚上 6 点前提交的,不然他们又要熬很久才能下班,我们就先早点下班了。
由于明天是 D 车,然后我们昨天还跟打 D 车的队伍交流了一下。他们那台车跟我们第一天的 E 车一样难打。我们就有队员提议去找汽修店里的老师傅租一套设备回来,看看明天那台 D 车无人车能不能从 CAN 这边突破一下,因为我们带的设备适配性还是不够高。我和其中一个队员挨个给汽修店打电话,问他们有没有这种设备,我们好过去看看再借。终于有一家跨区的店有,虽然比较远,我们还是直接打车过去了。到了那,别看老师傅的店破破烂烂的,什么设备都有,甚至他的电脑看起来很老,但性能很流畅,不输现在的电脑。师傅把他那套设备掏出来给我们看,我们看了之后本来是想拿了就走的。我说:“师傅,你看看能不能在这用一下,试试效果。”然后师傅人挺好的,帮我试了一下这个 CAN 分析仪设备,还帮我们把线缠了,怕明天搭线可能短路。价格也说得过去,反正是我们四个人平摊。就这样,学会用这个设备之后,我们就回酒店休息了。
周四早早到了现场。由于每天的车都是领衣服那天就抽好的,不巧的是,今天又是一台无人车,名为 D 车。昨天测 E 车的时候,打 D 车的那队人好像也打不动,我们也跟他们交流了一下。实际上这台车也确实不好打。我做了 Wi-Fi 的 DNS 劫持,但是车机连了我的热点后没有网,应该是有限制。就好比车机连蓝牙,你要把电脑的 MAC 地址伪装成手机的,不然也容易连接不上。这里没网,我也没能打出这个 APK 的劫持效果。另外这台车的 PCAN 总线也不太行,我们还跟其他队伍借了好用一点的设备来尝试 CAN 这边的报文漏洞,最终无果。这台无人车也问过了,是没有 APP 的。最后好在测了两个 AI 专项出来:一个是大模型的内置型号,一个是在车外呼喊能让 AI 把门打开。但是这次 AI 把门打开没给我们算分,我也不清楚为什么,明明是写在赛事手册上的,这个也没细扯了。
今天主要是抢分战,这台车能打的分和攻击面打完了,我们就换车了。因为我们第一次参赛,不能做到像他们那样一天搞一台车就能出一些大的远控洞,只能按照我们的快速拿分计划走,争取不被淘汰。但戏剧性的一幕来了,今天盒饭数量都不够,没招了,只能去外面吃。打比赛吃不上赛事方的午饭,也算是见识了。
午饭后换到了 T 车。T 车是一台国产车,然后我们队长刚好也测过这个车辆的类似车型。先是进了工程模式,然后找到了挺多敏感信息,最后上交了。接着用他之前测车时的固件代码漏洞去打这台车,发现并不能成功,而且这个车的 ADB 连不上,包括 CAN 分析这边也没有什么好的结果。Wi-Fi 方面,这边最恶心的是我根本没有扫到它的 Wi-Fi,弄了半天才发现是我的无线网卡是 2.4G 的,而它车机是 5G 频段,我还以为是什么问题。连不进 Wi-Fi,我就没啥入口对它的内网做搜集和打点了。然后我去捣鼓它的 AI,发现也是大模型配置泄露,是某包还是某文来着,这里我也记不太清楚了。
交了敏感信息泄露后,这台车还有一个浏览器,这个浏览器是谷歌的,于是我就扒拉了一下版本,刚好有合适的 Nday 可以打。搭建了一个 nginx 服务器,加上那个谷歌低版本漏洞,打出了让车机弹出车机文件的效果,任意文件也可以弹出。但是蓝牙这一块,还是连不上。后面我就去搜集了一下其他队伍的信息,看了看电视上的分数,对我们很不妙。我们现在的排名还是有点危险的,这些厉害的大佬团队都是藏洞没提交,今天开始慢慢都交了,好几个队伍接近 1W 的分数,不得不卷。后续我换了一台 X 车,X 车整体测下来就只有一个 AI 的配置信息,还有一个蓝牙传输,这个我看了赛事规则是没有分的,所以也没啥用。最后熬过了今天,分数还算不差,确定保住了明天能比赛的资格后就休息了。
终于到了周五,也算是最后一天了吧。我们昨天晚上做过攻略,今天就死磕之前人家打出远控的 I 车,或者直接打我们出过洞的 K 车。这一次跟裁判扯皮半天,终于把这个 APP 要到了手里,于是开始脱壳、反混淆,之后拿到了源码,把里面 APP 的 API 接口拿出来分析。不过还是少了最重要的 root 手机,没办法抓取它 APP 远程操控车辆的一些流量包,很难伪造 token 这些东西去发起重放攻击。我们还是继续尝试不用这个东西能不能远控。
Wi-Fi 协议这一步我也有所突破。对比上一次,这一次我算是成功让 AI 发力了。连接上后,我给了一些思路给 AI,先是找到了车机投屏的一个历史漏洞,然后成功探测到车机内部的网关,从 10 段打到路由网关,再到 k8s 集群,还找到了域控的 IP。这车机是 Android 14 的,利用 SSRF 从车机内部发出请求,可以去 UDS 诊断 CAN 帧。这里我们只能让 AI 盲打它的 UDS 诊断。CAN 网关 API 是没有鉴权的,UPnP 服务也没有经过认证,内网服务也没有做隔离。很可惜的是,用 DeepSeek 搞的速度还是太慢了,最后还是没能绕过这个 0x27 的安全访问,只能通过 SSRF 间接访问内部服务。并且这个服务只能用 nmap 的 -sA 才能扫出来,之前打的时候 AI 不会自己用各种参数扫,太死板了一点。
同时,队友蓝牙那边连是连上了,也利用脱壳反编译后的源码找到了蓝牙能打的一些零点击接口,但也是棋差一招,差个 root 手机去抓流量包,要到这个 token 值才能闭环。今天算是流程最顺畅的一天,但看了看最后的分数,大佬队伍疯狂提交 0day、零点击、远控漏洞,把分数拉得特别高。我们的分数可以说是刚好卡在最后了,要被刷的那种。事已至此,我们也没有别的办法了,最后把觉得可能是漏洞的都提交了一遍,顺便拍个照留个纪念。等到晚上通知我们的时候,确实是在我们前面的几个队里,有一个刚好卡线进了,他后面的都要淘汰,我们也就淘汰了,比较可惜吧。没被淘汰的话,我们明天继续打也能有个证书了。可惜没能留下点什么,这是最可惜的地方。后面我就买机票准备回去了。
复盘一下,我们跟其他队伍的差距还是很大的,这个不是短期就能弥补的。IoT 或者说 IoV 吧,这个方向对比常规安全来说,攻击面会更加广,要求你会的协议更多,设备一定要带齐全。宁可东西多带一点,也别少带,还得检查这些设备在常规条件下是不是都能用。比如我的 2.4G 频段无线网卡,遇到 5G 频段的车机就炸缸了。这一次比赛也没有去尝试我们最经常用的一些弱口令,后面我还打听到是有弱口令车机存在的。Wi-Fi 协议这方面,或者说通道这方面,还是不够熟练,准备也不够多,后面尽量全面点吧。
我们这次战术配合也稍微有点问题。因为漏洞方面我不是全懂,队友打出来的一些我不太懂的洞,我不知道怎么去扯皮。在团队里面,我算是最能跟裁判扯皮的那个了。而且打比赛的过程中,我们跟别人交流的时候还是藏不住东西,有点沉不住气,容易着急上头。漏洞报告这一方面我们也需要好好弥补一下,报告写得太差,以至于裁判那边确实不好给分。报告还是要边打边写,写细致,截图清楚,思路清晰。确实是经验欠缺太大。伙食也有点不好,吃他们的盒饭老闹肚子,浪费时间上厕所。比赛的时候一定要少喝水,多打车。
AI 这一块我们这次选得也不太行,毕竟资金有限,电脑配置也有限,对于 AI 框架的利用也不够到位。说白了就是基础不够扎实,你没有好思路,写不出好的攻击工作流去运转,那么 AI 执行的效率就会很低,给你的反馈也不一定能确认看懂。所以还是要紧跟时代潮流,成为让 AI 赋能我们的人,而不是滥用 AI,啥也不懂。当失去真正判断力的那一刻,AI 自然也就没有用了。AI 是会有幻觉的,哪怕再强的 AI 都会有,这个问题是需要时间才能解决的。最后总结一下,赛事手册要阅读明白,实力很重要,有实力其实就不用考虑太多东西,沉淀成长吧。