核心网协议基础:SIP、Diameter、GTP、HTTP/2、PFCP

各位同学,今天我们来聊聊核心网的几个关键协议。说实话,这些协议是5G核心网的“骨架”,你搞懂了它们,就等于拿到了渗透测试的入场券。

我刚开始接触核心网时,面对一堆协议栈,头都大了。后来发现,其实每个协议都有它的“脾气”。摸透了,就好办了。

SIP协议:语音的“信使”

SIP,全称会话初始协议。说白了,它就是用来建立、修改和终止多媒体会话的。VoLTE电话、视频通话,都离不开它。

核心特点:

  • 文本编码:像HTTP一样,是纯文本的。这意味着你可以直接用telnet或nc去“抓”它。
  • 请求-响应模型:客户端发请求(INVITE、ACK、BYE等),服务器回响应(100 Trying、200 OK等)。
  • 无状态:服务器默认不保存会话状态。嗯,这里要注意,很多安全漏洞就出在“状态”管理上。

实战要点:

我在项目中遇到过,很多IMS网络对SIP消息的合法性检查不够严格。比如,你可以构造一个畸形的INVITE请求,里面塞满特殊字符,看看服务器会不会崩溃。

// 一个简单的SIP INVITE请求示例
INVITE sip:user@example.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK123456
From: <sip:attacker@evil.com>;tag=abc123
To: <sip:user@example.com>
Call-ID: 1234567890@192.168.1.100
CSeq: 1 INVITE
Contact: <sip:attacker@192.168.1.100>
Content-Type: application/sdp
Content-Length: 150

// SDP内容省略...

避坑指南:我曾经在测试时,直接复制了网上找到的SIP包,结果发现里面的IP地址写死了。你想想看,这能通吗?一定要根据实际环境修改IP和端口。

Diameter协议:AAA的“老大哥”

Diameter是RADIUS的升级版。它负责认证、授权和计费。在4G核心网里,它连接MME、HSS、PCRF等网元。

关键点:

  • 二进制编码:比SIP复杂,但效率高。每个消息由消息头和AVP(属性值对)组成。
  • 可靠传输:基于TCP或SCTP,不像SIP那样用UDP。
  • 端到端安全:支持TLS和DTLS。但很多现网为了性能,会关闭加密。这就是你的机会。

注意:Diameter协议有一个“会话绑定”的概念。如果攻击者能伪造一个会话ID,就能冒充合法用户。我见过一个案例,攻击者通过抓包获取了会话ID,然后直接重放,绕过了认证。

// Diameter消息结构(十六进制)
// 版本: 0x01
// 消息长度: 0x0000A0
// 命令码: 0x0108 (CER - Capabilities-Exchange-Request)
// 应用ID: 0x00000000
// 逐跳标识符: 0x12345678
// 端到端标识符: 0x87654321
// AVP列表: ...

GTP协议:用户面的“搬运工”

GTP,GPRS隧道协议。它负责在核心网和无线接入网之间传输用户数据。说白了,你的手机上网数据,就是通过GTP隧道“搬”到核心网的。

两个版本:

  • GTP-C:控制面,负责隧道管理(创建、删除、修改)。
  • GTP-U:用户面,负责实际数据传输。

我个人习惯,在测试GTP时,重点关注GTP-C。因为控制面消息一旦被篡改,整个隧道都可能被劫持。

攻击面:

GTP协议本身没有强认证机制。攻击者可以伪造GTP-C消息,创建一条指向自己服务器的隧道。这样,用户的所有流量都会经过你的“中间人”服务器。

// GTP-C 创建会话请求(简化)
// 版本: 1
// 消息类型: 32 (Create Session Request)
// 长度: 0x0040
// TEID: 0x12345678
// IMSI: 310150123456789
// APN: internet
// ...

HTTP/2协议:5G的“新宠”

5G核心网全面拥抱HTTP/2。SBI(基于服务的架构)接口,全部跑在HTTP/2上。这意味着,你以前学过的Web渗透技术,现在可以搬到核心网上了。

为什么是HTTP/2?

  • 多路复用:一个连接可以并发处理多个请求,效率高。
  • 二进制分帧:比HTTP/1.1的文本协议更高效,但调试起来也更麻烦。
  • 服务器推送:服务器可以主动向客户端推送资源。嗯,这里要注意,如果推送了不该推送的东西,就是信息泄露。

实战技巧:我建议你使用gRPC工具来调试HTTP/2接口。因为5G核心网的很多接口都基于gRPC。你可以直接调用gRPC方法,而不需要关心底层的HTTP/2帧结构。

// HTTP/2 帧结构(十六进制)
// 长度: 0x000010
// 类型: 0x01 (HEADERS)
// 标志: 0x04 (END_HEADERS)
// 流ID: 0x00000001
// 负载: ...

PFCP协议:用户面的“控制器”

PFCP,分组转发控制协议。它是5G核心网中,控制面(SMF)和用户面(UPF)之间的接口。说白了,SMF通过PFCP告诉UPF:“这个用户的流量,你要这么转发。”

核心概念:

  • 会话:一个PFCP会话对应一个UE(用户设备)的数据流。
  • 规则:包括PDR(包检测规则)、FAR(转发行为规则)、URR(使用量报告规则)等。
  • 节点:SMF和UPF都是PFCP节点。

安全风险:PFCP消息如果被篡改,攻击者可以修改转发规则,把用户流量导向恶意服务器。我曾经在测试中,通过伪造PFCP会话建立请求,成功劫持了一个用户的流量。

// PFCP 会话建立请求(简化)
// 版本: 1
// 消息类型: 1 (Session Establishment Request)
// 长度: 0x0080
// SEID: 0x1234567890ABCDEF
// 节点ID: 0x0A000001 (SMF的IP)
// PDR列表: ...
// FAR列表: ...

知识体系总览

下面这张图,是我自己画的。它展示了这五个协议在5G核心网中的位置和关系。你仔细看看,就能明白它们是怎么协同工作的。

5G核心网协议栈 UE (用户设备) RAN (无线接入网) 核心网控制面 (AMF, SMF, NRF等) 核心网用户面 (UPF) 空口 N2/N3 N4 SIP (VoLTE) Diameter (4G) GTP (用户面) HTTP/2 (5G SBI) PFCP (N4) 协议功能说明 SIP: 建立/修改/终止多媒体会话 (VoLTE电话) Diameter: 认证、授权、计费 (4G核心网) GTP: 用户数据隧道传输 (GTP-C控制面, GTP-U用户面) HTTP/2: 5G SBI接口的基础协议 (基于服务的架构) PFCP: 控制面(SMF)与用户面(UPF)之间的接口协议 攻击面:协议伪造 | 消息重放 | 会话劫持 | 信息泄露 | 拒绝服务

好了,这五个协议的基础知识就讲到这里。记住,每个协议都有它的“软肋”。SIP的文本编码容易注入,Diameter的会话绑定可能被绕过,GTP的隧道可能被劫持,HTTP/2的多路复用可能被利用,PFCP的规则可能被篡改。

你想想看,这些漏洞一旦被利用,后果是什么?用户数据泄露、网络瘫痪、甚至被植入后门。所以,搞懂它们,不是为了攻击,而是为了更好地防御。

专注资料整理