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。终端一看,哦,对方不支持宽带,那就用窄带吧。通话建立后,音质直接降级。

关键点:攻击者不需要破解加密,只需要在IMS网络中的某个节点(比如P-CSCF或SBC)上修改SDP内容即可。

我举个例子。正常的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那行直接被删了。终端没得选,只能用窄带。

避坑指南:我曾经在现网排查过一起投诉,用户说“换了手机后通话变差了”。结果发现是IMS侧配置错误,把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模式。嗯,这就是典型的“带宽限制攻击”。

注意:EVS降级攻击比AMR-WB降级更隐蔽。因为EVS本身有“EVS-AMR切换”机制,攻击者可以利用这个机制,让终端误以为网络不支持EVS,自动回退到AMR。用户完全察觉不到。

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也在列表里,但优先级被降低了。

个人经验:我在测试中发现,有些终端对编码器顺序非常敏感。比如某款手机,只要AMR-NB排在第一位,它就一定选AMR-NB,哪怕后面有更好的编码器。这个行为可以被攻击者利用。

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内容,然后放行。终端和核心网都察觉不到。

编解码器降级攻击流程图 主叫终端 攻击节点(SBC) 被叫终端 SDP Offer (AMR-WB, EVS) 修改后SDP (仅AMR-NB) 被叫回复 SDP Answer (AMR-NB) 转发Answer 通话建立,音质降级 AMR-NB 4.75kbps 攻击动作:删除AMR-WB/EVS 修改b=AS带宽限制

防御思路其实不复杂。我个人建议从这几个方向入手:

  • SDP完整性校验:在IMS核心网侧,对SDP内容做哈希校验。如果发现SDP被篡改,直接拒绝通话建立。
  • 编码器白名单:在SBC上配置只允许特定的编码器组合。比如只允许AMR-WB + EVS,不允许纯AMR-NB。
  • 带宽声明验证:检查b=AS字段是否合理。如果终端声明支持EVS,但带宽只有12kbps,这明显不合理,直接拦截。
  • 信令监控:部署SIP信令监控系统,实时检测SDP修改行为。我见过一个方案,用机器学习模型检测SDP中的异常模式,效果不错。
重要提醒:编解码器降级攻击最难防的地方在于——它不破坏信令完整性。SIP信令本身是加密的(IPSec或TLS),但攻击者如果在信任域内部署恶意节点,就能在解密后修改SDP再重新加密。所以,信任域边界的安全防护至关重要。

好了,这一章的内容就到这。编解码器降级攻击,说白了就是“让好声音变差”。攻击手法虽然多,但核心都是围绕SDP协商做文章。你只要把SDP的完整性保护好,把带宽声明验证做严格,大部分攻击都能防住。

专注资料整理