第二章:IMS网络架构与协议基础

各位同学好,我是老周。今天咱们聊聊IMS的核心网元和协议。说实话,IMS这个体系刚接触时确实有点绕,但搞懂了核心网元之间的关系,后面攻击链的分析就顺了。

我个人习惯把IMS比作一个通信的"中央调度室"。你想想看,一个电话要打通,中间要经过多少环节?IMS就是把这些环节标准化、IP化了。

2.1 IMS核心网元

IMS的核心网元,说白了就是几个关键角色。我挑最重要的三个讲:P-CSCF、S-CSCF、HSS。这三个你搞明白了,IMS架构就懂了一半。

2.1.1 P-CSCF(代理呼叫会话控制功能)

P-CSCF是用户接入IMS的第一道门。它就像小区门口的保安,所有进出流量都要经过它。

  • 位置:位于用户和IMS网络之间,通常是用户归属网络或拜访网络
  • 职责:负责SIP消息的转发、压缩、安全验证
  • 关键点:它能看到用户的IP地址、端口号,是攻击者最喜欢盯上的目标

重要提醒:P-CSCF是IMS网络的"第一道防线"。我在项目中遇到过,有人通过伪造SIP REGISTER消息试图绕过P-CSCF的验证。嗯,这里要注意,P-CSCF的IPSec策略配置不当,很容易被利用。

2.1.2 S-CSCF(服务呼叫会话控制功能)

S-CSCF是IMS的大脑。它负责用户的注册、会话控制、业务触发。说白了,用户能不能打电话、能不能用增值业务,都是S-CSCF说了算。

  • 位置:位于IMS核心网络内部
  • 职责:用户注册认证、路由决策、触发应用服务器
  • 关键点:它维护用户的会话状态,是攻击者伪造身份的目标

实战经验:我曾经在测试中发现,S-CSCF在处理大量并发REGISTER请求时,如果iFC(初始过滤准则)配置过于复杂,CPU会飙升到90%以上。这就是典型的DoS攻击入口。

2.1.3 HSS(归属用户服务器)

HSS是IMS的用户数据库。它存着所有用户的签约信息、认证向量、位置信息。你可以把它想象成通信运营商的"户籍系统"。

网元 存储内容 攻击风险
HSS 用户身份、认证密钥、业务签约 数据泄露、身份伪造
S-CSCF 会话状态、路由信息 会话劫持、DoS
P-CSCF 用户IP、端口、安全关联 流量拦截、中间人攻击

注意:HSS一旦被攻破,整个IMS网络的用户数据就全暴露了。我曾经参与过一个安全审计项目,发现HSS的Diameter接口居然没有启用TLS加密...这相当于把用户数据裸奔在网络上。

2.2 SIP协议基础

SIP(会话发起协议)是IMS的核心信令协议。它负责建立、修改、终止多媒体会话。说白了,就是打电话时的"握手"过程。

2.2.1 SIP消息结构

SIP消息分为请求和响应两类。请求消息包括INVITE、REGISTER、BYE等,响应消息有1xx(临时)、2xx(成功)、3xx(重定向)等。

// 一个典型的SIP REGISTER请求
REGISTER sip:ims.example.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK74b43
From: <sip:user1@ims.example.com>;tag=12345
To: <sip:user1@ims.example.com>
Call-ID: 1234567890@192.168.1.100
CSeq: 1 REGISTER
Contact: <sip:user1@192.168.1.100:5060>
Expires: 3600
Content-Length: 0

你看这个REGISTER消息,From和To字段都是用户标识,但攻击者可以伪造这些字段。我见过最典型的攻击就是伪造REGISTER消息,冒充合法用户注册到IMS网络。

2.2.2 SIP认证机制

SIP使用HTTP Digest认证机制。流程是这样的:

  1. 用户发送REGISTER请求(不带认证信息)
  2. 网络返回401 Unauthorized,带上nonce值
  3. 用户用密码和nonce计算响应值,再次发送REGISTER
  4. 网络验证通过,返回200 OK

关键点:这个认证过程有个漏洞——如果攻击者截获了第一次的401响应和第二次的REGISTER请求,就可以发起离线字典攻击。我曾经在渗透测试中,用这种方法在3小时内破解了5个弱密码。

2.3 Diameter协议基础

Diameter是IMS中用于AAA(认证、授权、计费)的协议。它替代了老旧的RADIUS协议,支持更灵活的扩展。

2.3.1 Diameter消息结构

Diameter消息由消息头和AVP(属性值对)组成。每个AVP包含一个属性类型、长度和值。

// Diameter消息头结构
Version: 1 (8 bits)
Message Length: 3 bytes
Command Flags: 8 bits
Command Code: 3 bytes
Application ID: 4 bytes
Hop-by-Hop ID: 4 bytes
End-to-End ID: 4 bytes
AVPs: variable length

2.3.2 关键Diameter命令

命令代码 命令名称 用途
257 MAR (Multimedia-Auth-Request) 请求认证向量
258 MAA (Multimedia-Auth-Answer) 返回认证向量
263 SAR (Server-Assignment-Request) 注册S-CSCF
264 SAA (Server-Assignment-Answer) 确认注册

实战技巧:Diameter协议的攻击面主要在AVP篡改。比如攻击者可以修改MAR消息中的User-Name AVP,尝试冒充其他用户。我建议在Diameter接口上启用TLS或DTLS,并且对AVP值做完整性校验。

2.4 IMS核心网元交互流程

下面这张图展示了用户注册时,P-CSCF、S-CSCF、HSS之间的交互流程。我特意用SVG画了这张图,方便大家理解。

IMS用户注册流程 UE (用户) P-CSCF S-CSCF HSS 1. REGISTER 2. REGISTER 3. MAR 4. MAA 5. 401 Unauthorized 6. 401 Unauthorized 7. REGISTER (带认证) 8. REGISTER (带认证) 9. SAR 10. SAA

这张图展示了完整的IMS注册流程。你看,从用户发起REGISTER,到P-CSCF转发,再到S-CSCF向HSS请求认证向量,最后返回401挑战,用户再次携带认证信息注册...每一步都可能成为攻击点。

安全提醒:我曾经在运营商现网中发现,有些IMS网络在P-CSCF和S-CSCF之间没有启用IPSec或TLS。这意味着攻击者可以在中间截获SIP消息,甚至注入伪造消息。这是非常危险的安全隐患。

2.5 本章小结

IMS的核心网元P-CSCF、S-CSCF、HSS各有分工,也各有弱点。SIP协议负责信令交互,Diameter协议负责认证授权。搞懂这些基础,后面讲攻击链构建时你就能理解攻击者为什么选某个网元下手了。

嗯,今天就到这里。记住一句话:IMS安全,从理解协议开始。


专注资料整理