1. IMS网络基础架构与SIP协议核心原理
大家好,我是老周。在IMS安全这个领域摸爬滚打了十几年,今天咱们来聊聊最基础的东西——IMS网络架构和SIP协议。说实话,很多人一上来就研究各种攻击手法,结果连SIP消息都抓不明白。我个人习惯是,先把地基打牢,后面才能玩得转。
1.1 IMS网络到底长什么样?
IMS,全称IP Multimedia Subsystem,说白了就是一套基于IP的多媒体会话控制系统。你想想看,传统的电话网络是电路交换,一条线占死了才能通话。IMS不一样,它把控制面和用户面彻底分离了。
我在项目中遇到过不少刚入行的朋友,总把IMS和VoIP混为一谈。其实IMS是架构,VoIP只是它承载的一种业务。嗯,这里要注意区分。
核心观点:IMS的本质是“控制与承载分离”。控制面负责信令处理,用户面只管媒体流传输。这种解耦设计,让IMS能灵活支持语音、视频、消息等多种业务。
1.2 IMS的三大核心层
IMS架构分三层,我习惯叫它“三层蛋糕模型”。每一层各司其职,缺一不可。
| 层级 | 名称 | 核心网元 | 主要职责 |
|---|---|---|---|
| 第一层 | 业务层 | AS、SCP、MRF | 提供增值业务,如彩铃、呼叫转移 |
| 第二层 | 控制层 | CSCF、HSS、SLF | 会话控制、用户鉴权、路由选择 |
| 第三层 | 接入层 | P-CSCF、SBC、AGW | 用户接入、NAT穿透、媒体代理 |
控制层是IMS的大脑,尤其是CSCF(呼叫会话控制功能)家族。P-CSCF是用户的第一道门,S-CSCF负责真正的会话逻辑,I-CSCF则像个路由器,把请求分发到正确的S-CSCF。我曾经在排查一个呼叫失败问题时,发现就是I-CSCF的路由表配置错了,折腾了两天。
1.3 SIP协议——IMS的“通用语言”
SIP(Session Initiation Protocol)是IMS的信令协议。说白了,它就是用来建立、修改和终止多媒体会话的。你发微信、打电话、开视频会议,背后都是SIP在干活。
SIP的设计借鉴了HTTP,也是请求-响应模式。一个典型的SIP消息长这样:
INVITE sip:user@imsdomain.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK74b43
Max-Forwards: 70
From: <sip:alice@imsdomain.com>;tag=1928301774
To: <sip:bob@imsdomain.com>
Call-ID: a84b4c76e66710@192.168.1.100
CSeq: 1 INVITE
Contact: <sip:alice@192.168.1.100>
Content-Type: application/sdp
Content-Length: 142
v=0
o=alice 2890844526 2890844526 IN IP4 192.168.1.100
s=-
c=IN IP4 192.168.1.100
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
你看,INVITE是请求方法,后面跟着URI和版本号。Via字段记录了消息经过的路径,这个在安全分析中特别重要。我建议你抓包时多看看Via头,很多攻击痕迹都藏在这里。
个人经验:SIP消息的Call-ID是唯一标识一个会话的。我曾经通过追踪Call-ID,在日志里找到了一个恶意注册的完整链路。记住,Call-ID不能重复,否则会话会乱套。
1.4 SIP的四大核心方法
SIP方法很多,但真正核心的就四个。其他的都是锦上添花。
- INVITE:发起会话请求。这是最常用的方法,也是攻击者最喜欢伪造的。
- REGISTER:用户注册。告诉网络“我在这里,我的地址是xxx”。
- BYE:终止会话。挂电话用的。
- CANCEL:取消尚未建立的会话。比如你拨号后对方还没接,你挂了,就是CANCEL。
为什么说REGISTER重要?因为IMS网络里,用户必须先注册才能使用业务。攻击者如果伪造REGISTER请求,就能冒充合法用户。我在一次渗透测试中,就成功用伪造的REGISTER劫持了一个VoIP账号,嗯,那次的教训很深刻。
1.5 IMS网络边界在哪里?
搞安全,首先得知道“边界”在哪。IMS网络的边界,就是接入层和外部网络之间的那道墙。具体来说,有这几个关键点:
- P-CSCF:用户接入IMS的第一跳,所有SIP流量必经之地。
- SBC(会话边界控制器):部署在IMS网络边缘,负责NAT穿透、拓扑隐藏、DoS防护。
- IBCF(互联边界控制功能):不同IMS网络之间的边界网关,负责互通和安全策略。
你想想看,攻击者想攻击IMS核心网,第一步就是突破这些边界设备。所以,P-CSCF和SBC的配置,直接决定了整个网络的安全水平。
避坑指南:我曾经见过一个项目,SBC的拓扑隐藏功能没开,结果攻击者直接从SIP消息的Via头里拿到了核心网的真实IP。嗯,那之后他们花了三天时间重新配置防火墙规则。记住,SBC的拓扑隐藏一定要开,这是最基本的。
1.6 一张图看懂IMS架构与SIP流程
下面这张SVG图,是我自己画的IMS核心架构和SIP注册流程。你看一遍,基本就明白数据是怎么跑的了。
你看这个注册流程,UE先发REGISTER到P-CSCF,P-CSCF转发给I-CSCF。I-CSCF去HSS查一下,看看该分配给哪个S-CSCF。然后S-CSCF返回401要求认证,UE再带认证信息重发REGISTER。最后S-CSCF验证通过,返回200 OK。
这个流程里,每一步都可能被攻击。比如伪造REGISTER、篡改401响应、重放认证信息等等。后面我们会详细讲这些攻击手法和防御措施。
1.7 小结:理解边界,才能守住边界
IMS网络的基础架构,说白了就是三层模型加SIP协议。你只要记住:接入层是边界,控制层是核心,业务层是价值。攻击者想搞破坏,要么从边界突破,要么在SIP消息里做手脚。
我个人习惯是,每接触一个新网络,先画一张架构图,标出所有边界点。然后抓SIP流量,看看消息是怎么跑的。这样做一遍,心里就有底了。
嗯,今天就先聊到这。下一节我们会深入SIP消息的各个字段,看看哪些地方最容易出问题。