揭秘5G空口安全:Sni5Gect 5GNR 嗅探与漏洞利用工具深度解析
项目概述
Sni5Gect 是一个专注于 5G 新空口(5G NR, New Radio)协议分析、流量嗅探以及潜在漏洞利用的 C/C++ 开源项目。在当前的移动通信安全研究中,能够直接在物理层或 MAC/RLC 层捕获并分析 5G 信号是极其困难的,因为这通常需要昂贵的商业设备(如 Keysight 或 Rohde & Schwarz)。
Sni5Gect 的核心目标是降低 5G 空口安全研究的门槛,通过结合软件定义无线电(SDR)硬件(如 USRP 或 BladeRF)与自定义的协议栈解析逻辑,实现对 5G 信号的实时截获、解码以及针对特定协议缺陷的攻击模拟。
核心功能模块
1. 信号嗅探 (Sniffing)
项目实现了对 5G NR 下行链路(DL)和上行链路(UL)的同步与捕获。 * PSS/SSS 搜索:通过主同步信号(PSS)和次同步信号(SSS)快速锁定小区 ID 和物理层参数。 * PBCH 解码:解析物理广播信道(PBCH),获取 MIB(主信息块),从而确定系统带宽、子载波间隔(SCS)等关键参数。 * SIB 提取:进一步解码系统信息块(SIB1, SIB2 等),获取小区配置、接入控制信息及邻区列表。
2. 协议分析 (Protocol Analysis)
Sni5Gect 不仅仅是捕获原始 IQ 数据,它还包含了一个轻量级的 5G 协议栈解析器: * MAC 层解析:分析 MAC PDU,识别调度请求、随机接入过程(RACH)等。 * RLC/PDCP 层分析:尝试对更高层的数据包进行重组和解密(在已知密钥或弱加密情况下)。 * NAS 层分析:分析非接入层信令,包括注册请求(Registration Request)和身份验证过程。
3. 漏洞利用 (Exploitation)
这是该项目的核心竞争力所在,它提供了一系列针对 5G 协议实现缺陷的 PoC(概念验证): * 拒绝服务攻击 (DoS):通过发送伪造的 RRC 连接释放(RRC Connection Release)消息,强制目标 UE(用户设备)断开连接。 * 身份泄露 (Identity Leakage):利用协议在某些阶段未加密传输 IMSI/SUPI 的漏洞,通过伪基站诱导 UE 泄露永久标识。 * 中间人攻击 (MITM):通过操纵 SIB 信息,诱导 UE 接入伪造的基站,从而拦截或篡改流量。
技术架构
项目采用 C/C++ 编写,旨在保证处理高采样率信号时的实时性。其整体架构可分为三层:
- 硬件抽象层 (HAL):利用 UHD (USRP Hardware Driver) 或 SoapySDR 接口与 SDR 硬件通信,负责 IQ 数据的采集与发送。
- 信号处理层 (DSP):使用 FFT、滤波和同步算法,将时域信号转换为频域,并提取物理层符号。
- 协议逻辑层 (Logic):将提取的比特流根据 3GPP TS 38 系列标准进行解析,并执行特定的攻击逻辑。
实例演示:如何利用 Sni5Gect 进行基础嗅探
虽然该项目需要特定的硬件支持,但其逻辑流程如下:
场景:捕获目标小区的 SIB1 信息
步骤 1:环境配置
确保安装了 uhd 驱动并连接了 USRP 设备。
# 检查硬件连接 uhd_find_devices
步骤 2:启动嗅探模式 运行项目编译后的二进制文件,指定目标频点(ARFCN)。
./sni5gect --mode sniff --freq 3500MHz --bandwidth 20MHz --cell-id 123
步骤 3:分析输出 程序将开始扫描 PSS/SSS。一旦同步成功,控制台将输出如下信息:
[+] PSS/SSS Sync Successful!
[+] Cell ID: 123, PCI: 456
[+] Decoding MIB... Done.
[+] Decoding SIB1...
- PLMN: 460-00
- Tracking Area Code: 00101
- Cell Selection Info: [Detailed Params]
场景:模拟 RRC 连接释放攻击(PoC)
警告:此操作仅限在受控的实验室环境下进行,严禁在公共网络尝试。
步骤 1:锁定目标 UE 通过嗅探 RACH 过程,获取目标 UE 的临时标识(C-RNTI)。
./sni5gect --mode sniff --capture-rnti # 假设捕获到 C-RNTI: 0x1A2B
步骤 2:构造并发送伪造消息
使用攻击模块发送一个伪造的 RRCConnectionRelease 消息。
./sni5gect --mode exploit --attack rrc-release --rnti 0x1A2B --freq 3500MHz
结果:目标 UE 接收到该消息后,会认为基站要求其断开连接,从而导致设备掉线。
关键依赖与编译
若要运行此项目,通常需要以下环境:
* 编译器:GCC 9+ 或 Clang
* 库:
* UHD (Universal Software Radio Peripheral)
* Volk (Vector Optimized Library of Kernels)
* Boost (用于异步处理和数据结构)
* CMake (构建系统)
编译流程:
mkdir build && cd build cmake .. make -j$(nproc)
安全研究建议
使用 Sni5Gect 进行研究时,建议遵循以下路径:
- 学习 3GPP 标准:重点阅读 TS 38.331 (RRC 协议) 和 TS 38.300 (整体架构)。
- 搭建隔离环境:使用法拉第笼(Faraday Cage)防止信号外泄,避免干扰公共通信网络。
- 分析流量模式:先尝试使用 Wireshark 配合项目导出的 pcap 文件分析 5G 信令流。
总结
Sni5Gect 是一个极具价值的 5G 安全研究工具。它将复杂的 3GPP 协议实现转化为可执行的代码,使得研究人员能够直观地观察 5G 空口的交互过程。通过该项目,我们可以深刻意识到即便在 5G 时代,物理层和信令层的安全漏洞依然存在,这为未来的网络增强和防御提供了重要的参考。



还没有评论,来说两句吧...