Starlink是SpaceX推出的低地球轨道卫星互联网接入服务,用户通过终端与近地轨道卫星建立连接,再经地面基站(Gateway)接入互联网。
Starlink系统的基本架构[1]
随着新一代卫星逐步配备激光链路,部分卫星之间也能通过激光通信,从而在减少对地面基站依赖的同时,提高传输效率并增强全球覆盖能力。
在完全没有地面基站的乌克兰战场上,Starlink用户终端也能通过卫星间接使用邻国的Gateway接入互联网[1]。
乌克兰境内的Starlink终端
通过卫星和邻国地面的Gateway接入互联网
在本篇攻防速写中,我们将简要介绍DARKNAVY前期对Starlink用户终端开展的初步探索。
硬件分析
一套完整的Starlink用户终端由路由器和天线两部分组成。本文的重点放在天线部分(User Terminal Antenna,后文简称 UTA)上。
DARKNAVY在新加坡购买了一台Starlink Standard Actuated(也称Rev3或GenV2)用户终端并对其天线部分进行了拆解。
Starlink UTA Rev3 PCB板(全貌)
如上图所示,拆解后我们发现,UTA的PCB板几乎和其外壳一样大,但其中大部分区域由ST公司生产的相控阵天线芯片所覆盖(上图的右侧部分)。
Starlink UTA Rev3 PCB核心部分
如上图所示,除射频天线之外,UTA核心区域的总体设计和常见的标准物联网设备非常相似。其主控SoC由ST公司为SpaceX定制,内部是四核Cortex-A53架构,目前该芯片的硬件产品和数据手册都处于保密状态,无法公开获取。
在2022年Black Hat USA大会中,鲁汶大学的Lennert Wouters博士曾展示过对第一代 Starlink 天线(GenV1)的故障注入攻击;SpaceX 随后在固件更新中关闭了PCB板上的UART调试串口,以提高对故障攻击的防御能力,但此后Wouters仍通过改进方法再次成功攻破[2]。
固件提取与解析
为了深入分析UTA,DARKNAVY通过硬件手段直接从eMMC芯片中提取了固件内容。由于在Rev3版本中没有明显的eMMC调试引脚,我们只能将eMMC芯片从PCB上拆下,再使用编程器进行读取。
对提取到的固件进行解析后发现,其中大部分内容未经过加密处理,可获取到的信息包括启动链(BootROM除外)、内核以及未加密部分的文件系统。进一步分析后可知,内核启动后会从eMMC中读取主要的运行时环境,并解包至 /sx/local/runtime
目录下。
UTA核心运行时所在的目录
如图所示, bin
目录下存放Starlink软件栈中所需的可执行文件, dat
则保存配置文件, revision_info
记录了当前软硬件的版本信息。除负责与用户通信的 user_terminal_frontend
(使用Golang编写)外,其他大部分程序均为C++编写的静态编译无符号可执行文件。
结合前人对上一代UTA的分析[3],我们对runtime目录下的这些程序和配置文件做了初步分析,发现其网络栈的架构与 DPDK 类似[4],主要依赖用户态的C++程序绕过内核来处理网络数据包,Linux内核主要作用为提供基础的硬件驱动和进程管理功能。
值得一提的是,我们注意到从UTA提取的核心软件中还包含了部分本应在卫星或地面基站上运行的程序逻辑。
初步逆向分析结果显示,系统在启动过程中会根据硬件外设信息来判断当前所属的设备类型,并据此加载和执行对应的逻辑。
模拟执行
为了便于后续对UTA的持续分析,DARKNAVY基于QEMU为Rev3设备固件构建了基本的模拟运行环境:
在该模拟环境中,我们成功实现了对部分程序的运行和调试,主要包括httpd
、WebSocket
、gRPC
等与外界交互的服务。
在模拟环境中对user_terminal_frontend程序进行动态调试分析
安全芯片
除了主控SoC,UTA还使用了一款声称达到CC EAL5+安全等级的专用安全芯片STSAFE-A110
[5]。与主控SoC不同,这款芯片可以在签署NDA后合法购买。在UTA 的固件中,有一个名为stsafe_cli
的用户态程序与其交互。通过对该程序的逆向分析可以推测,STSAFE主要提供以下功能:
储存每台设备独有的身份标识(UUID)
管理公钥证书(
stsafe_leaf.pem
),可能用于与卫星通信中的身份认证派生用户数据通信时的对称加密密钥
总体来看,这颗安全芯片相当于在SoC安全启动之外又增添了一个独立的信任根,这也是现代嵌入式系统常见的安全设计。
彩蛋:Is Elon watching you?
DARKNAVY在分析过程中偶然发现了一个用途为Ethernet Data Recorder(以太网数据记录器)的程序:
这个程序的名字和功能介绍很容易让人怀疑这是一个记录用户数据的后门程序,进一步分析发现其内部使用了类似 pcap_filter
的机制记录网络中的特定数据包,抓包格式类似:
# name track options type interfaces pcap_filter
diagnostics 0 compress,ipcompress telem lo udp and dst port 10017 and (dst host 239.26.7.131 or dst host 239.26.7.130)
结合固件中其他文件的线索,这些数据包均与卫星的遥测(Telemetry)功能相关。同时,所有采集到的流量也会使用SoC熔丝中的硬件密钥进行加密。基于目前掌握的信息,我们认为它暂未用来收集用户隐私数据 :)
另一个有趣的现象是,在设备初始化时,若检测到当前设备属于用户终端,初始化脚本会自动将多达41个SSH公钥写入 /root/.ssh/authorized_keys
。值得注意的是,UTA的22号端口对局域网始终处于开放状态,在用户侧的产品上添加如此多的不明登录密钥,也不禁让人“想入非非”。
结语
随着卫星技术的不断成熟演进和在各行各业中的推广应用,Starlink和其他卫星互联网系统架构中的每一个组件都可能成为未来攻防的重要战场。在太空安全中,开发者与黑客不仅要在数字层面展开攻防对抗,还要面对宇宙物理规则的限制和挑战,一招不慎可能就与自己的目标永远失去了联系。
参 考:
[1] https://www.ciscolive.com/c/dam/r/ciscolive/global-event/docs/2024/pdf/BRKSEC-2150.pdf
[2] https://i.blackhat.com/USA-22/Wednesday/US-22-Wouters-Glitched-On-Earth.pdf
[3] https://blog.quarkslab.com/starlink.html
[4] https://www.dpdk.org/
[5] https://www.st.com/en/secure-mcus/stsafe-a110.html