2017年5月,德国电信运营商O2 Telefonica向《南德意志报》确认:黑客入侵了一家境外运营商的信令网络,利用SS7协议的老漏洞,半路截走银行发给客户的短信验证码,把客户的网银账户洗劫一空。这不是科幻剧本,而是全球移动通信史上第一次被官方坐实的“信令层盗刷”实战案例。本文以Veritasium对31C3经典演示的解读视频、The Register对德国案的报道、FCC CSRIC正式报告与GSMA FS.11防火墙规范为权威锚点,拆解SS7为什么不设防、攻击者如何用几条MAP信令截走验证码、以及为什么防了十年这张网还在流血——最后落到一线核心网工程师今天就能落地的防护清单。
先把SS7是啥说透。SS7(Signalling System No.7,七号信令系统)是ITU在1975年立项、1980年前后固化为Q.700系列建议的公共信道信令体系。它不是用户面协议——你打电话听到的声音、上网刷的流量都不走它,但接续这些业务的“指令”全靠它:A拨B的号码,MSC问HLR要路由,VLR做位置更新,短信在网间辗转寻址,国际漫游时归属国问拜访国“这人在不在你那儿”——全都是SS7里的MAP(Mobile Application Part)、CAP、ISUP消息在跑。
换句话说,SS7是移动通信网的神经系统。语音和数据是肌肉,SS7是让肌肉动起来的神经电信号。
问题出在它的设计年代。上世纪七十年代末,能用上SS7的只有各国邮电部门和少数几家国有运营商,全世界能互联的网屈指可数。所以协议设计者们做了一个影响至今的假设:能接到这张信令网里的,都是自己人。于是SS7从底层就没有认证——没有握手、没有签名、没有加密,一条MAP消息说“我是某某HLR”,网络就信了。信令里唯一的“地址”是SCCP的全局码(GT),本质上就是个电话号码,谁都可以往消息里填一个别人的GT冒充他。
这个假设在1980年代成立。但今天,全球有超过800家移动运营商通过国际信令转接点互联,还有成百上千的MVNO、漫游伙伴、信令中转商(transit hub)层层转接。任何一个环节被渗透——哪怕是一个小国的、安全投入寥寥的运营商——攻击者就等于拿到了“自己人”的门禁卡。GSMA自身的文档也承认这一点:SS7互联的安全前提是“圈内可信”,而这个前提早已不复存在。
更微妙的是,这套老协议在5G时代不但没退场,反而更忙了。VoLTE的IMS信令互通、物联网设备的国际漫游、5G用户回落到4G/2G的场景,都还压在MAP/CAP/Diameter这些“信令老三样”上。网龄五十年的协议,还在给最新的业务扛大梁——这就是一切故事的开端。
SS7的漏洞不是2017年才被发现。它被世界性曝光,是在2014年12月27日的汉堡,第31届混沌通信大会(31C3)。
当天Saal 1厅有两场演讲,如今都成了通信安全史的教材。第一场是德国安全研究员Tobias Engel的《SS7: Locate. Track. Manipulate.》,视频至今挂在CCC官方档案站media.ccc.de上,演讲摘要的原话是:攻击者可以从世界另一端,以最高50米的精度跟踪你的手机号码,编制出你的详细行动轨迹,而你毫无察觉。Engel现场演示了如何通过SRI-SM(为短消息发送路由信息)、ATI(任意时间查询)这类再普通不过的MAP操作,把任意号码的实时位置问出来——因为SS7不会追问“你凭什么问”。
同场大会上,SR Labs创始人Karsten Nohl(就是2011年破解GSM加密、2013年捅穿UMTS加密的那位)做了Mobile Self-Defense报告,把SS7能干的事列得更全:截听短信、定位坐标、操纵通话前转、实施各类欺诈。ZDNet当时的报道称,那一届大会至少有三场演讲都在讲SS7监视,安全圈把这届大会称为“移动隐私的崩塌时刻”。
这段历史之所以值得今天再讲一遍,是因为科普频道Veritasium后来做了一期《Exposing The Flaw In Our Phone System》(我们电话系统的命门),直接引用Engel的31C3原始演讲,把这套攻击原理讲给了千万级观众——这期视频至今仍是理解SS7攻击最通俗的入口。视频里有一句话值得每个通信人记下:问题不在某个bug,而在协议本身从不验证“你是谁”。 Bug可以打补丁,架构性的裸奔没法靠补丁救。
演示归演示,2014年时多数人还抱着侥幸:搞学术的黑客会玩,罪犯玩不转——毕竟你得先搞到一张国际信令网的入场券。两年半后,德国把这张入场券的账单寄给了所有人。
先说一个黑色幽默式的时间巧合:美国FCC的CSRIC V第十工作组(Legacy Systems and Services Risk Reduction)从2016年6月开始评估SS7和Diameter风险,最终报告《Legacy Systems and Services Risk Reductions》的落款时间是2017年3月。而实战案发,就发生在前后的几个月里。
按照O2 Telefonica后来向媒体确认的说法(The Register、CyberScoop、Help Net Security等多家媒体在2017年5月报道),整个攻击是一场漂亮的两段式组合拳:
第一段,老派的钓鱼。 攻击者向德国多家银行的网银用户发送鱼叉式钓鱼邮件,骗到网银用户名和密码。这一段跟SS7毫无关系,纯社工,但对攻击者来说这只是半张票——德国网银转账要过短信二次验证(mTAN),验证码会发到用户手机上,光有密码转不了账。
第二段,信令层的截杀。 据Help Net Security披露的O2声明,攻击者在2017年1月拿到了一家外国移动运营商网络的访问权。有了这个跳板,攻击者就成了“合法”的信令参与方,可以代表那张境外网向德国网发任意MAP消息。接下来他们对目标号码操纵短信路由,把本该落到用户手机上的mTAN,从半路劫走送到攻击者自己控制的接收端。用户这边手机安安静静,一条验证码都没收到;银行那边显示“验证码已发送成功”;账户里的钱被转进攻击者开设的空壳账户。
整个链条里,最讽刺的是第三段:事后的茫然。 2017年5月2日《南德意志报》曝光后,O2确认了攻击事实,但多家银行的第一反应是甩锅——银行界协会公开表示“运营商网络的问题与银行无关”,运营商则表示“我的信令防火墙没有违规记录,攻击是从境外伙伴网进来的”。被害人夹在中间,钱已经出了境。
把整个事件拉成时间线,会比单独看任何一段都更让人后背发凉:
| 时间 | 事件 | 关键点 |
|---|---|---|
| 1980年前后 | ITU固化SS7的Q.700系列建议 | 设计前提:入网者皆可信,无认证机制 |
| 2014-12-27 | 31C3大会Engel与Nohl公开SS7定位/拦截/操纵全套手法 | 全球首次大规模公开演示,精度可达50米 |
| 2016-06 | FCC成立CSRIC V WG10评估SS7/Diameter风险 | 监管机器启动,但只是“建议”层面 |
| 2017-01 | 攻击者入侵一家境外运营商网络获得信令跳板 | 一张“自己人”门禁卡到手 |
| 2017年1-2月 | 德国多家银行用户遭盗刷,mTAN被信令层劫走 | SS7漏洞首次被官方坐实的规模化变现 |
| 2017-03 | FCC CSRIC最终报告发布 | 白纸黑字的警告,与案发几乎同期 |
| 2017-05-02 | 《南德意志报》曝光,O2确认攻击 | 全球媒体哗然,2FA信任危机爆发 |
| 2017-08 | FCC发布公共通知敦促业界落实建议,CISA同步发警报 | 从“研究”升格为“敦促”,仍无强制力 |
| 至今 | GSMA FS.11防火墙规范迭代至v6.0 | 防火墙普及了,但本质是“过滤”而非“认证” |
这张表里最该圈出来的,是2014年到2017年1月之间那两年多。手法已经全世界公开,监管已经开始写报告,而攻击者用来练手和变现的,恰好就是这两年。
把德国案的信令层拆开看,你会发现攻击的“ payloads”其实朴素得惊人——没有0day,没有 exotic协议,用的全是网络里每天跑几亿条的合法消息。下面这张时序图是教科书式的短信拦截链:
sequenceDiagram
participant A as 攻击者假网元
participant H as 归属HLR/HSS
participant B as 银行短信网关
participant U as 受害用户手机
A->>H: 伪造updateLocation 自称用户新拜访地
H->>A: 接受注册 返回鉴权向量
B->>H: SRI-SM 查询短信路由
H->>B: 路由指向攻击者登记的假地址
B->>A: 验证码短信落入侵方
Note over A,U: 用户手机全程安静 无任何异样
A->>A: 持验证码登录网银转走资金
逐步翻译成人话:
第一步,鸠占鹊巢。 updateLocation(MAP的UL操作,或GPRS域的updateGPRSLocation)本来是用户换城市开机时,新VLR向HLR报到用的。攻击者从境外跳板网发出这条消息,谎称“用户漫游到了我这儿”。HLR按照协议老老实实更新签约数据——从此,归属网认为该用户“人在”攻击者的地盘。
第二步,请君入瓮。 SRI-SM(Send Routing Info for Short Message)是短信接续的第一跳:银行短信中心要把mTAN发给用户,先问HLR“这个号现在该把短信送到哪个MSC”。由于第一步已经得手,HLR给出的答案正是攻击者登记的假MSC地址。
第三步,半路截杀。 银行短信网关按HLR的指引,把验证码短信递送到攻击者控制的“MSC”。短信在信令层完成了一次完全“合法”的投递——只是收件人换成了攻击者。
第四步,变现。 攻击者用钓鱼得来的密码加上刚截获的mTAN登录网银,转账到空壳账户。用户手机上没有未读短信、没有漏接来电,话费账单也不会有任何异常——这就是SS7攻击最可怕的地方:受害者侧零痕迹。
除了短信拦截,公开研究里被反复演示的手法还有一整族,每种都对应几条平平无奇的信令操作:
| 攻击手法 | 所用信令操作(公开研究披露) | 能干什么 | 防火墙对策方向 |
|---|---|---|---|
| 静默定位 | SRI-SM、ATI、PRN 探测响应差分 | 以小区级精度绘制目标行动轨迹 | 拦截对非本网用户的探测类查询 |
| 短信验证码拦截 | updateLocation/updateGPRS + SRI-SM | 劫持mTAN,攻破双因子认证 | 校验VMSC地址归属、严控位置更新来源 |
| 通话劫持 | insertSubscriberData 写呼叫前转 | 把受害者来电全部转走或转录音 | 签约数据变更仅限归属网元发起 |
| 拒绝服务 | 大量purgeMS、异常位置更新 | 把用户"注销"出网络,手机假死机 | 限制单GT消息频率与操作组合 |
| 鉴权向量套取 | sendAuthenticationInfo 冒充VLR | 批量索取鉴权五元组辅助克隆研究 | 鉴权向量仅向有签约关系的网元发放 |
看完这张表,很多干过核心网的人会有一种生理不适:这些操作名,哪一个不是割接、排障、放号时天天敲的?攻击者不需要发明任何新东西,他只需要混进你的“自己人”名单,然后像一名内部运维一样使用你的网络。 Veritasium那期视频里把这点讲得非常直白:这套系统的每一环都是按“运营需求”设计的,只是当年没想过“运营者”这个词有一天会被冒用。
德国案之后,全球的应对可以概括为三层,每一层都起了作用,每一层都有天花板。
第一层:GSMA的行业规范。 案发后成为事实标准的,是GSMA的FS.11规范——《SS7 Interconnect Security Monitoring and Firewall Guidelines》,目前迭代到第6版。FS.11把所有SS7消息分成三类:Cat 1是必须过滤的明显恶意消息,Cat 2是可疑需按策略处置的,Cat 3是需持续监测的,并给出了几十条具体的过滤规则模板(比如“非本网用户发起的SRI-SM必须丢弃”“ATI只允许签约伙伴的特定GT发起”)。配套的FS.19把同一套思路搬到了Diameter域。这套规范是十年里最实在的成果——今天你随便找一家像样的运营商,信令互联点上都有按FS.11规则集配置的防火墙。
第二层:监管的敦促。 FCC CSRIC 2017年3月的最终报告给出了“监测+过滤+信息共享”的最佳实践清单,CTIA代表美国运营商表态支持;2017年8月FCC公共安全局发文敦促全行业落实,CISA同月发布警报。欧洲方向,ENISA和各国NIS部门也把SS7列入关键基础设施风险清单。但请注意所有这些文件的动词:敦促、建议、鼓励——没有任何一个司法辖区把SS7防护写成了带罚则的强制义务。
第三层:防火墙本身。 这是问题最深的一层。一家安全公司2026年3月的技术分析(Sbytec)说得很扎心:SS7防火墙能过滤MAP消息,但依然无法认证查询的真正来源——因为GT可以伪造、转接商可以中转,800多家运营商因漫游互通的架构设计天然保留互信接入;FS.11又是自愿部署,没有执行机制。换句话说,防火墙是把“裸奔”升级成了“穿着门帘跑步”:穷凶极恶的直连攻击大多挡住了,但只要攻击链条里有一环是“合法但被渗透的运营商”,消息就带着正经的漫游转接外衣进来,规则再细也只能靠启发式去猜。
一线干过信令互联的都懂这种拧巴:规则收紧,误杀国际漫游和携转用户,投诉电话直接打到省政府;规则放松,监视告警天天狼来了。SS7防护的真难题不是技术,是每一次规则调整都在“安全”和“业务连续性”之间走钢丝。
讲了十年故事,最后给还在守核心网的兄弟们一份今天就能对照的东西。以下条目全部来自FS.11公开规则集和FCC/CSRIC最佳实践,按性价比排序:
先堵钱袋子相关的。 优先上严的三条:一是位置更新类操作的来源校验——境外GT对本地号段发起updateLocation/updateGPRS,必须是该网真实漫游伙伴,且对应号段确实在该国;二是SRI-SM的进向管控——外部网替你网号码问路由的,直接进黑名单;三是insertSubscriberData只出不进——签约数据写入只允许归属网自身的HLR/HSS地址,境外消息带这类操作一律拦截。这三条覆盖了验证码拦截和通话劫持两个最值钱的场景。
再把“人”管起来。 GT白名单不是配一次就完的:漫游协议新增、转接商变更、IMS漫游开闸,每一起都会改变合法信令的“长相”。信令防火墙的规则库要跟着互联互通部的协议台账走——规则和商业协议脱节,是误杀告警的第一大来源。
然后让网络学会“多疑”。 FS.11的Cat 3监测别只当报表用:SRI-SM单GT查询频率、同一境外GT一天内定位探测的命中数、夜间突发的大批量sendAuthenticationInfo,这些基线一旦建成,德国案那种“境外网替一批德国号码集体改路由”的动作,在第一条消息就会炸出来,而不是等用户报案。
最后是长期解。 真正能关掉这扇门的,是把互联信令从“无认证”搬到“强认证”的架构:4G/5G时代的Diameter可以走IPSec+证书,5G SBA漫游接口N32由SEPP对端做TLS+OAuth2令牌校验——从“我信你说是谁”变成“密码学证明你是谁”。但这条路的钱和协调成本决定了它只能随网演进、按互联关系逐条迁移,老的MAP信令还会在很多年的过渡期里继续跑。标准允许多种实现和分阶段迁移,具体防护能力以各运营商与设备商官方文档为准——这话不是免责,是现实。
还有一条最容易被忽视的:把信令防火墙的告警接进SOC,而不是接进一个三个月才看一次的月报。德国案里银行和运营商之间那种“验证码发了、用户没收到、责任各说各话”的扯皮,本质上是没人对“信令层的异常”拥有端到端的可见性和责任。这个洞,设备和规范都填不了,只能靠组织填。
回看这五十年,SS7的故事其实是一个关于“假设失效”的经典剧本:1979年的设计者假设接入这张网的都是国家电话公司,这个假设支撑了全球通信四十年的繁荣;而当“接入权”变成可以在暗网外闱谈价的商品、当一个小国运营商的运维电脑也能被钓鱼攻陷时,地基上的假设塌了,楼上的每一层都在跟着晃。
2014年汉堡的那场演讲把问题摊在了阳光下,2017年的德国案把学费账单寄到了银行和运营商手上,2017年之后的FS.11和各路防火墙确实把门槛抬高了一大截——今天再想低成本扫全网定位,比十年前难多了。但只要互联信令的底层仍是无认证的信任模型,“被渗透的伙伴网”这条路就永远敞着。5G时代的SEPP、N32和后继协议正在把“证明你是谁”写进架构,这是这条流血五十年的伤口真正愈合的开始。
在那之前,每一次你收到的银行短信验证码,依然跑在一张默认“来者皆友”的网上。它大多数时候相安无事——不是因为协议安全,而是因为防火墙后面的工程师们,还在一条规则一条规则地打补丁。这份工作不性感,但这就是运维。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
