Sat-Hacking(4):Starlink路由器逆向分析-上篇

在本篇文章中,我们将探讨 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愿景:成为一名合格的卫星黑客需要长时间的学习和实践。只有通过持续的努力,掌握各种卫星安全知识和技能,才能真正成为一个专业的卫星白帽子。

在此祝愿安全爱好者及从业人员都能够取得成功,实现自己的梦想,为网络安全贡献自己的力量!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值