随着越来越多的特斯拉车主寻求可视化和记录驾驶数据的方法, TeslaMate 已成为热门选择。它是一款开源的自托管数据记录器,可连接到特斯拉的 API 并收集丰富的详细信息:充电会话、位置历史记录、温度、电池健康状况、行驶速度等等。
对于爱好者来说,这简直是金矿。但对于攻击者来说,如果部署不当,它也可能带来金矿。在这篇文章中,我将分享我是如何发现数百个 TeslaMate 装置未经身份验证就暴露在互联网上,实时泄露敏感车辆数据的。
什么是 TeslaMate?
TeslaMate 是特斯拉汽车的开源数据记录器和可视化器 。
- 它作为一项服务运行,不断查询特斯拉的官方 API。
- 它将数据存储在数据库中并通过 Grafana 仪表板将其可视化。
- 默认情况下,它显示:
- 端口
4000
上的 Web 界面 (TeslaMate 核心应用程序) - 端口
3000
上的 Grafana 仪表板
虽然这对于家庭设置来说非常好,但许多用户将 TeslaMate 部署到云服务器 ,并且 – 通常在不知不觉中 – 将其向整个互联网开放。
实验:寻找暴露的实例
我构建了一个小型概念验证扫描器,用于识别可公开访问的 TeslaMate 部署。方法简单但有效:
使用 Masscan 进行互联网范围扫描
我使用 masscan
扫描了整个 IPv4 空间以查找开放端口 4000
:
masscan -p4000 0.0.0.0/0 --exclude 255.255.255.255 --rate 500000 -oX output.txt
在集群中的多个 10Gbps 服务器上运行此功能可实现极快的大规模发现。
筛选 TeslaMate
一旦我打开所有主机的 4000 端口,我就会运行 httpx 来探测并查找 TeslaMate 的指纹(其默认 HTTP 标题):
httpx -l output.txt -title -silent -threads 1000 -rl 500 -retries 0 -timeout 2 -p 4000 -ms TeslaMate -o httpx-teslamate.txt
这将列表缩小到已确认的 TeslaMate 安装。
网页爬取数据收集
我编写了一个轻量级爬虫来抓取这些服务器暴露的数据。我的发现令人大开眼界:
- 停放或最近驾驶过的特斯拉的精确 GPS 坐标
- 特斯拉车型名称和自定义昵称
- 软件版本和更新历史
- 行程和充电会话的时间戳
在某些情况下,我甚至可以在地图上绘制特斯拉的日常活动,识别家庭住址、通勤模式和经常去的地方。