4、编解码器降级攻击:AMR-WB降级为AMR-NB、EVS降级为AMR、编解码器协商劫持、带宽限制攻击
好,咱们今天聊点硬核的。编解码器降级攻击,说白了就是让VoLTE通话“听起来变差”。你想想看,用户明明用的是高清语音,结果一打电话,对方说“你声音怎么像对讲机?”——嗯,这很可能就是被攻击了。
我个人习惯把这类攻击归为“隐形破坏”。它不让你断话,也不让你掉线,就是让你体验变差。用户投诉起来,运营商还很难定位。我在项目中遇到过好几次,排查到最后才发现是SDP协商被动了手脚。
4.1 AMR-WB降级为AMR-NB
AMR-WB(Adaptive Multi-Rate Wideband)是VoLTE高清语音的标配。它的采样率是16kHz,听起来清晰、自然。而AMR-NB(Narrowband)只有8kHz,声音像电话线里传出来的——说白了就是“老式电话音质”。
攻击者怎么干?很简单。在SIP信令的SDP协商阶段,把AMR-WB的编码选项删掉,只留下AMR-NB。终端一看,哦,对方不支持宽带,那就用窄带吧。通话建立后,音质直接降级。
我举个例子。正常的SDP里是这样的:
m=audio 49152 RTP/AVP 97 98
a=rtpmap:97 AMR-WB/16000
a=rtpmap:98 AMR-NB/8000
a=fmtp:97 mode-set=0,1,2,3,4,5,6,7
a=fmtp:98 mode-set=0,1,2,3,4
攻击后变成:
m=audio 49152 RTP/AVP 98
a=rtpmap:98 AMR-NB/8000
a=fmtp:98 mode-set=0,1,2,3,4
看到了吗?AMR-WB那行直接被删了。终端没得选,只能用窄带。
4.2 EVS降级为AMR
EVS(Enhanced Voice Services)是比AMR-WB更先进的编码器。它支持超宽带(32kHz)甚至全带(48kHz)采样。说白了,EVS能让对方的声音像在你耳边说话一样真实。
攻击者把EVS降级为AMR,手法跟上面类似。但这里有个坑——EVS有多个模式:EVS-NB、EVS-WB、EVS-SWB、EVS-FB。攻击者可以只保留最低的EVS-NB模式,甚至直接降级到AMR-NB。
我见过一个案例。攻击者利用SDP中的“带宽信息”字段做手脚。正常EVS需要48kbps左右的带宽,攻击者把带宽限制到12kbps,终端自动选择低码率模式,音质自然就差了。
// 正常SDP带宽声明
b=AS:48
// 攻击后
b=AS:12
终端收到这个带宽限制后,会认为网络资源不足,于是选择AMR-NB 12.2kbps模式。嗯,这就是典型的“带宽限制攻击”。
4.3 编解码器协商劫持
这个就有点意思了。编解码器协商劫持,不是简单地删除编码选项,而是“篡改”协商过程。
正常流程是这样的:主叫发SDP offer,列出支持的编码器列表。被叫回复SDP answer,选择其中一个。攻击者可以劫持这个流程,比如:
- 修改优先级:把低质量编码器的优先级调高,终端会优先选择它。
- 插入虚假编码器:攻击者可以插入一个不存在的编码器,导致协商失败,然后终端fallback到默认的低质量编码器。
- 修改fmtp参数:比如把AMR-WB的mode-set改成只支持低速率模式(比如6.6kbps),音质自然下降。
我给你们看一个真实的劫持案例。攻击者在SBC上部署了一个脚本,专门修改SDP中的编码器顺序:
// 原始SDP offer
a=rtpmap:97 AMR-WB/16000
a=rtpmap:98 AMR-NB/8000
a=rtpmap:99 EVS/16000
// 劫持后
a=rtpmap:98 AMR-NB/8000
a=rtpmap:97 AMR-WB/16000
a=rtpmap:99 EVS/16000
终端收到后,看到第一个编码器是AMR-NB,就会优先选择它。虽然AMR-WB和EVS也在列表里,但优先级被降低了。
4.4 带宽限制攻击
这个攻击手法更直接。攻击者不需要修改编码器列表,只需要修改SDP中的带宽声明。
VoLTE通话的带宽声明通常用b=AS字段表示。攻击者把这个值改得很小,比如:
b=AS:8 // 只有8kbps
终端收到后,会认为网络只能提供8kbps的带宽。那它只能选择AMR-NB 4.75kbps模式——这是最低质量的编码模式。声音听起来像“机器人说话”,断断续续的。
还有一种更狠的。攻击者修改b=TIAS(Transport Independent Application Specific)字段,这个字段用于限制传输带宽。改小之后,终端连RTP包都不敢发太大,只能用小包,音质自然差。
| 攻击类型 | 修改字段 | 效果 | 检测难度 |
|---|---|---|---|
| AMR-WB降级 | 删除rtpmap:97 | 窄带通话 | 低 |
| EVS降级 | 修改b=AS | 超宽带变窄带 | 中 |
| 协商劫持 | 修改编码器顺序 | 优先选择低质量编码器 | 高 |
| 带宽限制 | 修改b=AS/b=TIAS | 强制使用低码率模式 | 中 |
4.5 攻击流程与防御思路
下面这张图是我画的攻击流程。你看,攻击者通常部署在IMS网络的边缘节点,比如SBC或P-CSCF。它拦截SIP信令,修改SDP内容,然后放行。终端和核心网都察觉不到。
防御思路其实不复杂。我个人建议从这几个方向入手:
- SDP完整性校验:在IMS核心网侧,对SDP内容做哈希校验。如果发现SDP被篡改,直接拒绝通话建立。
- 编码器白名单:在SBC上配置只允许特定的编码器组合。比如只允许AMR-WB + EVS,不允许纯AMR-NB。
- 带宽声明验证:检查b=AS字段是否合理。如果终端声明支持EVS,但带宽只有12kbps,这明显不合理,直接拦截。
- 信令监控:部署SIP信令监控系统,实时检测SDP修改行为。我见过一个方案,用机器学习模型检测SDP中的异常模式,效果不错。
好了,这一章的内容就到这。编解码器降级攻击,说白了就是“让好声音变差”。攻击手法虽然多,但核心都是围绕SDP协商做文章。你只要把SDP的完整性保护好,把带宽声明验证做严格,大部分攻击都能防住。