在本篇文章中,我们将探讨 SpaceX Starlink 路由器的逆向分析过程。Starlink 是 SpaceX 推出的一项革命性的卫星互联网服务,旨在为全球偏远地区提供高速、低延迟的互联网连接。为了实现这一目标,Starlink 需要一个高性能的路由器来管理用户的互联网连接。逆向分析这种设备对于理解其工作原理和潜在的安全隐患至关重要。
图1-1 太空路由器概念图
一、本文的主要知识梳理
本文将以Starlink一代路由器(见下图1-2)为基础分析Starlink路由器的分析方法,包含以下内容。
-
硬件分析:我们将首先介绍 Starlink 路由器的硬件组件,包括处理器、内存、NAND 闪存等。我们还将讨论与此相关的接口和通信协议。
-
固件提取:在了解了硬件的基本结构之后,我们将介绍如何从路由器中提取固件。这将包括使用工具如 Binwalk 对固件进行分析,以获取文件系统、内核映像等关键组件。
-
软件分析:接下来,我们将深入研究 Starlink 路由器的软件架构,包括操作系统、驱动程序、应用程序和其他软件组件。我们将关注如何对这些组件进行逆向工程,以了解其功能和安全性。
-
OOB 纠错算法:我们将特别关注 NAND 闪存中的 OOB(Out-of-Band)纠错算法,了解其在保证路由器可靠性和数据完整性方面的作用。
-
安全性评估:在完成逆向分析后,我们将对 Starlink 路由器的安全性进行评估,探讨潜在的安全漏洞以及如何防范这些风险。
图1-2 Starlink 一代路由器
二、Starlink路由器硬件架构审计
路由器的核心是一款广受欢迎的Qualcomm IPQ4018 SoC:四核ARM Cortex A-7处理器,支持802.11ac WiFi 5GHz和2.4 GHz频段,两个通道都支持。此外,这款SoC还集成了加密引擎和支持硬件NAT和流量引导的交换引擎。
以下是主板上所有组件及其简要说明:
图2-1 Starlink TOP主板电路分析
图2-2 Starlink BOTTOM主板电路分析
图2-3 Starlink 硬件设计框架图
这里我们重点关注如下,后面会进行详细分析。
1. 串行NAND Flash IC W25N01GV,路由器操作系统存储在该芯片上。
2. GD25Q128B,它是一个 SPI NOR 闪存,带有高通引导加载程序、u-boot 和一些附加数据。
3. STSAFE-A芯片,这种特殊的 MCU 提供安全存储、身份验证和一些加密功能,完全受 OpenSSL 支持,MCU 用于存储电路板配置和证书,我将在下面介绍。
三、Starlink固件安全审计
由于在硬件上没有发现串口shell,所以直接对nand 和 nor flash固件进行提取。路由器固件基于 OpenWRT ,下面是官方的 SpaceX 存储库,GitHub 存储库仅包含 GPL 代码,没有任何驱动路由器的 SpaceX 专有组件。https://github.com/SpaceExplorationTechnologies/starlink-wifi
路由器系统从烧录到 SoC 中的主引导加载程序 (PBL) 启动,该 PBL 在 NOR 闪存的零地址寻找辅助引导加载程序 (SBL),SBL 初始化硬件(CPU、DDR)并启动主引导加载程序 (u-boot)。u-boot 的目的是支持特定于系统的任务,如引导环境、固件恢复和操作系统引导。
下图是 Starlink NOR 的简化分布情况:
图3-1 Starlink nor flash 分区分布
可以看到,在NOR Flash分区中,有两个u-boot ELF二进制文件(u-boot ELF binary 0和u-boot ELF binary 1),这通常是因为采用了双引导分区(dual-boot partition)的设计,以提高系统的稳定性和可靠性。
下图是 Starlink NAND flash介绍:
图3-2 Starlink nadn flash 块分区分布
从图3-2可以发现,每个 2048 数据页包含一个额外的 64 字节尾部,这些 OOB 块应该与实际数据分开并正确处理。
四、Starlink固件分析
1. 在进行固件处理后,就可以得到UBI image的镜像文件,程序可从文末尾github获取。
图4-1 nand flash固件提取python程序
$ file test_out.bin
test_out.bin: UBI image, version 1
2. 使用 ubi_reader 分析和提取此图像:
$ ubireader_display_info test_out.bin UBI File --------------------- Min I/O:2048 LEB Size:126976 PEB Size:131072 TotalBlockCount:1024 DataBlockCount:407 LayoutBlockCount:4 InternalVolumeBlockCount:0 UnknownBlockCount:613 First UBI PEB Number:0 Image:1911121817 --------------------- ImageSequenceNum:1911121817 VolumeName:kernel VolumeName:ubi_rootfs VolumeName:rootfs_data PEB Range:512-1023 Volume: kernel --------------------- Volume: ubi_rootfs --------------------- Volume: rootfs_data --------------------- ****** Image:1899964099 --------------------- ImageSequenceNum:1899964099 VolumeName:kernel VolumeName:ubi_rootfs VolumeName:rootfs_data PEB Range:0-511 Volume: kernel --------------------- Volume: ubi_rootfs --------------------- Volume: rootfs_data ---------------------
3. 由于典型的 NAND 可能总是包含一定数量的坏扇区或翻转位,这些错误可以通过 OOB 纠正,通常由 NAND 控制器完成,正确的解决方案是使用一些真正的硬件 NAND 控制器或nandsim(NAND 闪存模拟器驱动程序),这里我们使用nandsim。
sudo modprobe nandsim id_bytes=0x98,0xd1,0x90,0x15,0x76,0x14,0x01,0x00 parts=512,512 sudo nandwrite -k -a -o --input-skip=69206016/dev/mtd1 'W25N01GV@WSON8.BIN' sudo modprobe ubi mtd=/dev/mtd1,2048,0,2 sudo mount -t ubifs /dev/ubi2_2 /mnt/ubi2_2
4. 现在可以读取数据了,数据读取后分析如下,简化的 NAND 布局如图4-1。
两个相同的镜像用于冗余和简单的固件升级过程。
-
卷 0包含带签名的Linux 内核FIT 映像。
-
第 1 卷是带有 OpenWRT 操作系统和 SpaceX 软件的squashfs rootfs 映像。
-
第 2 卷是一个带有路由器配置文件的r/w ubifs映像。
图4-2 nand flash镜像文件分布
注解:
1. SquashFS文件系统是一个只读的文件系统,通常用于在嵌入式系统中存储和分发操作系统、应用程序和数据。在这个例子中,Volume 1是一个SquashFS文件系统,其中包含了预安装的OpenWRT操作系统和SpaceX软件。因为SquashFS文件系统是只读的,所以Volume 1是一个只读文件系统,不能被直接写入或修改。如果您需要修改操作系统或安装新的软件包,则需要重新创建一个可写的文件系统,并将其挂载到适当的位置上。在Linux系统中,常用的可写文件系统包括ext4、Btrfs、XFS、JFS等。
虽然SquashFS文件系统的内容是固定的,但它具有许多优点,如快速启动、高效存储、压缩和加密等。SquashFS通常用于存储和分发只读的操作系统和应用程序。如果需要修改系统或添加新的软件包,则需要使用其他可写文件系统。
2. UBIFS(Unsorted Block Image File System)是一种针对闪存设备设计的文件系统。与传统的文件系统如EXT4不同,UBIFS是为了更好地适应闪存设备的特性而设计的。具体来说,UBIFS支持闪存设备的特殊要求,如自动坏块管理、物理擦除块大小匹配、挂载时间和可靠性等方面的优化。
五、总结
1. 本文主要介绍了 SpaceX 推出的 Starlink 路由器设备的硬件固件安全分析方法,以及其相关的通信协议和安全机制。
2. 本文所提到的固件及相关资料可从下面链接获取:
https://github.com/MasterTaiBai/Sat-Hacking
Sat-Hacking愿景:成为一名合格的卫星黑客需要长时间的学习和实践。只有通过持续的努力,掌握各种卫星安全知识和技能,才能真正成为一个专业的卫星白帽子。
在此祝愿安全爱好者及从业人员都能够取得成功,实现自己的梦想,为网络安全贡献自己的力量!文章来源:https://www.toymoban.com/news/detail-685402.html
文章来源地址https://www.toymoban.com/news/detail-685402.html
到了这里,关于Sat-Hacking(4):Starlink路由器逆向分析-上篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!