2014年2月,美国驻乌克兰大使遭遇了尴尬的泄密事件。他与美国助理国务卿维多利亚·努兰的一次秘密谈话被贴到了YouTube上,谈话中努兰对欧盟嗤之以鼻。
谈话是通过加密电话进行的,美国官方对媒体称怀疑通话在乌克兰被窃听,但没说明是如何被窃听的。有人认为,移动数据网络SS7中的漏洞是窃听得以进行的根源——SS7是电信公司用以路由通话和短信的骨干基础设施的组成部分。
乌克兰政府在事发数月后发布了一份少有人注意到的报告证实了此说法。尽管没有提到大使,该报告披露称,那年4月中有3天时间里,12部身份不明的手机位置数据被神秘地通过SS7漏洞发送到了俄罗斯电信公司。其中几部手机用户的短信和通话被转到了俄罗斯,极有可能被窃听并录音。
电信行业对SS7漏洞问题知之已久,却一直没什么动作,因为很多人觉得这个风险只是理论上的。但乌克兰窃听事件掀起了波澜。几家电信安全公司设计出SS7攻击检测的方法,由此发现了多家电信用户网络中的可疑活动,揭示出SS7攻击确实是真是存在的。
上个月,新闻媒体《60分钟》再掀公众对SS7的关注。节目中展示了两名德国研究员在美国国会议员 Ted Lieu 的同意下,利用SS7监听其通话的过程。议员呼吁召开国会听证会讨论SS7漏洞问题,联邦通信委员会(FCC)也表示计划就此问题进行审查。
那么,SS7到底是什么,又为什么会如此脆弱呢?
图片显示的是西欧某系统利用SS7,通过向用户的运营商发送位置请求,在2分钟内追踪到某个用户的情形。1分钟后,对同一个用户的追踪请求便通过SS7从多个国家的不同系统蜂拥而至。
SS7入门
SS7,也被称为7号信令系统,指的是一种数据网络,也是一系列管理数据交换的技术协议或规则。它出现于上世纪70年代,目的是跨运营商网络跟踪和连接固话。不过,现在通常用于手机计费和发送短信,附带跨运营商和区域交换中心路由手机和固话呼叫。SS7是电信骨干网的一部分,但却不是语音通话流经的网络,它是带有不同功能的独立管理网络。可以用客运火车系统来打比方,SS7就是工作人员使用的维护隧道,而不是普通列车使用的主隧道。
当今,SS7被用于设置漫游,以便能在所属运营商范围之外也能拨打电话收发短信。域外运营商会通过SS7向所属运营商发送获取手机唯一ID的请求以便跟踪手机,还会请求手机通信被重定向到它的网络以便投递呼叫和短信。这是一种确保跨网络通信的手段。
问题点
问题在于,SS7是基于信任的。电信公司收到的任何请求都被认为是合法的。因此,任何能登入SS7网络服务器或网关的人,都可以向电信公司发送位置漫游和重定向请求,而电信公司多半会遵从请求——即使漫游请求是从圣彼得堡或孟买发出而你的手机却在纽约。这就使得攻击者可以远程窃听立法者、公司高管、军方人员、激进分子和其他人士。值得注意的是,通过劫持你的短信和通话,攻击者也就能够获取Gmail和其他服务通过短信发送的双因子身份验证登录码。已经知道用户名和密码的攻击者就能在你收到之前拦截验证码,登录你的账户。
而谁可以登入SS7呢?全世界数百家电信公司都可以。政府情报机构也可以访问这一网络,无论电信公司允许与否。商业公司也可以将SS7电话追踪服务售卖给政府和其他客户。有能力收买电信员工的犯罪团伙同样可以使用SS7,攻破了有漏洞的SS7设备的黑客也行。
直到2014年12月,乌克兰窃听事件几个月后,德国混动通信大会上两名研究员展示了SS7脆弱性之时,电信公司才开始实现阻挠SS7攻击的方法。其中一位名为恩格尔的独立研究员早在2008年就演示过用SS7追踪电话的方法,只不过该方法不如2014年混沌大会上展示的那么精炼。后者令北欧监管机构向运行商提出了在2015年底实现缓解SS7攻击的要求。
用现有技术就可以防止大量SS7攻击。确实有一些案例是需要一两年时间来实现防御机制,但至少,北欧和世界上其他地方的电信网络里是存在基本防御措施的。
美国的两家运营商,T-Mobile和AT&T,却不在此列。在电视新闻节目《60分钟》里,研究人员展示了这两家运营商对SS7攻击是不设防的。威瑞森和Sprint采用不同的协议交换大部分数据,因此,理论上没那么脆弱。但所有手机网络将最终迁移到一个名为Diameter的信令系统。该系统采用了与之前的SS7网络相同的许多概念和设计,包括让SS7备受煎熬的信任机制。
怎样黑掉SS7才可以追踪通话和短信?
为追踪用户,攻击者会向用户运营商发送随时询问(Anytime Interrogation)请求以获取到用户手机的唯一ID,并确定手机使用哪个移动交换中心(MSC)——通常一个MSC负责一个城市。运营商使用这些信息确定你的位置,用距你最近的蜂窝塔路由你的通话和短信。通过不断发送随时询问请求可以获取到这些信息和你的GPS坐标,攻击者便能追踪你的手机,还能用谷歌地图追到你当前所在的街区。
运营商可以通过封锁域外“随时询问请求”来阻止此类非法追踪行为。但是,还有其他几种通过SS7获取位置信息的方法,这些别的方法就没那么容易封锁了。
这并不是假设性的,现实案例确实存在。有报道描述过一起SS7追踪行动就是从多个系统发起的位置信息请求。大概是为了避免被怀疑,攻击者从全球多个SS7系统而不是单一SS7系统,对同一用户发出了追踪请求——因为从同一系统发出很多请求实在是太明显了。这些系统每天向某些手机用户发出数千次询问请求,但攻击者试图追踪的其他手机却每天只询问1或2次。
很明显,发送请求越多,暴露可能性越高。但这些都是低流量高价值类型的目标,只要保持低流量,就有机会不被人注意到。
欧洲国家的另一起行动,则是通过四家欧洲电信公司的系统追踪了中东和欧洲的手机,显示出这几家电信公司在追踪行动中难逃干系。不过,若是间谍系统或国家系统,他们实际上也没多少选择的。
窃听
研究人员描述利用SS7窃听通话和短信的3种技术。其中一种是去年在澳版《60分钟》里演示的,研究人员从德国向澳洲的运营商发出了将某位政客语音信箱重配置成转发给该研究人员的请求。其实,只要将网络设置成请求来源地与用户手机所在区域不符就拒绝接受,便能很容易地阻止此类攻击。可惜,几乎没有运营商进行此类匹配检查。
另一种方法是滥用重写拨出号码功能。举例说明一下,如果你正在国外,拨打手机联系人中的号码,重写功能会识别出这是一个国际电话,并自动附带上国别区号。
附加国别区号的功能是通过将号码识别为“错误”并发回带国别区号的“正确”号码来实现的。很方便,对吧?但攻击者可以利用这个功能让系统用他的号码替换掉任何号码。一有电话接入,他就转发至正确的号码,而他自己则在中间窃听并录音。
第三种方法则利用了手机不接电话或短信时通常不会和网络通信的特性。这段长长的静默时间里,攻击者可以骗你的运营商说你正在德国,任何发往你手机的通信都应重定向到德国。最终,你那在美国的手机肯定有被唤醒的时候,也会告诉运营商位置。但攻击者也可以发送另外的信息否认此事实。
只要每5分钟来这么一次,你能单独接到电话或短信的机会就非常非常少,绝大多数时候都是攻击者接管了你的通信。或许一段时间后你会从账单上发现漫游异常,但那时候,你的隐私已经不存在了。
不是什么高明的窃听手法。还得支付漫游费。但这种方法真的很实用。
有何对策?
此类攻击用个检测用户反常位置变更的算法就能轻松破解,毕竟,没人会每5分钟就在美国和德国之间来回飞不是?但遗憾的是,没有哪家运营商实现了这些聪明的检测方法。
个人能做的有限。Signal、WhatsApp或Skype的加密服务是可以用来保护你的个人通信的,但攻击者也可以向你的运营商发送数据使用禁止请求,阻止你使用这些服务。
然后,在没有WiFi的地方,你能用的就只剩下短信和电话了——让你处于SS7窃听攻击威胁之下。
电信公司对SS7攻击也不是无动于衷,但大多数仍然只是解决了最容易的那几种方法。
目前,他们处于必须实现更复杂的防火墙和算法来检测并封锁更高级攻击的阶段。攻击者想成功更难了,但防御者想阻止攻击一样更难了。攻防消长一直在继续。