核心网协议基础: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核心网中的位置和关系。你仔细看看,就能明白它们是怎么协同工作的。
好了,这五个协议的基础知识就讲到这里。记住,每个协议都有它的“软肋”。SIP的文本编码容易注入,Diameter的会话绑定可能被绕过,GTP的隧道可能被劫持,HTTP/2的多路复用可能被利用,PFCP的规则可能被篡改。
你想想看,这些漏洞一旦被利用,后果是什么?用户数据泄露、网络瘫痪、甚至被植入后门。所以,搞懂它们,不是为了攻击,而是为了更好地防御。