第二章: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认证机制。流程是这样的:
- 用户发送REGISTER请求(不带认证信息)
- 网络返回401 Unauthorized,带上nonce值
- 用户用密码和nonce计算响应值,再次发送REGISTER
- 网络验证通过,返回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注册流程。你看,从用户发起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安全,从理解协议开始。