
信令系统7(SS7)是一套已经使用了数十年的电话信令协议,使全球电信网络能够交换呼叫建立、路由和控制信息。然而,随着网络的发展,针对它们的威胁也在不断演变。在本文中,我们将详细探讨 SS7 攻击——从 SS7 协议的基本原理,到现实世界中的利用案例、防护措施以及供那些希望了解这些攻击技术基础的技术代码示例。
本长篇指南适用于网络安全专业人士以及希望深入了解当今电信基础设施中最被低估的漏洞之一的爱好者。我们将涵盖基本概念、先进的利用技术以及带有实用代码示例和命令的缓解策略。
关键词: SS7 攻击,信令系统7漏洞,电信安全,短信拦截,双因素认证 (2FA),网络安全,网络协议分析,Bash,Python
在过去的十年中,网络安全威胁经历了巨大的演变,利用了所有可用的数字基础设施。其中一个较为不为人知但日益危险的漏洞出现在 SS7 网络中。虽然 SS7 设计于数十年前,但它仍是现代电信系统的骨干。其过时的安全模型使其容易受到各种攻击,允许恶意攻击者拦截电话和短信、跟踪实时位置,甚至可能绕过双因素认证保护措施。
这篇博客文章将作为对 SS7 攻击的广泛技术概述,从基本原理入手,逐步扩展到高级利用技术。我们还将分享实用的代码示例(包括 Bash 和 Python),以展示如何在受控环境中对 SS7 活动的某些方面进行监控、分析及模拟。
SS7(信令系统7)在20世纪70年代被标准化,并成为全球电信信令的标准。最初的设计用于支持公共交换电话网络(PSTN)中的呼叫路由和计费流程,后来发展为支持诸如短信传输、漫游以及号码转换等多种功能。
其广泛采用部分原因在于其可靠性——SS7 确保无论电话始发地在哪里,呼叫和短信都能得到正确的路由。然而,长久的发展也伴随着风险。SS7 协议的许多组件设计时所考虑的主要威胁模型是意外配置错误,而非有意的网络攻击。
从本质上讲,SS7 是一套供电信网络交换路由信息和管理网络服务的协议。其组件包括:
这些组件协同工作,从而实现了呼叫的建立、终止、短信路由和位置更新等任务。由于几乎所有电信运营商都使用 SS7,其设计中固有的漏洞可能带来全球性的影响。
SS7 攻击利用了该协议缺乏强大认证机制的弱点。一些常见的攻击途径包括:
缺乏端到端认证:
SS7 协议在设计时假设网络上的所有节点都是可信的。一旦获得网络节点的访问权限,攻击者便可以在没有适当验证的情况下注入恶意消息。
弱加密实践:
历史上,SS7 网络并没有采用强加密措施,使得信令数据易于被截获。
全球互联性:
SS7 网络在跨国界之间实现无缝互联,一个网络中的漏洞可能允许攻击者从任何国家访问其它网络中的数据。
多个文献记录的漏洞利用案例展示了 SS7 攻击的后果:
金融交易中的短信拦截:
许多金融机构依赖短信形式的双因素认证 (2FA) 来进行交易授权。在一些高调案例中,攻击者拦截了这些短信,从而未经授权地访问银行账户或实施欺诈性交易。
定位追踪用于定向攻击:
在一个显著案例中,攻击者利用 SS7 漏洞追踪了一位高调目标的位置,从而使得对其进行实体监控和协调攻击成为可能。
流氓运营商员工:
鉴于每个移动运营商都拥有对 SS7 的访问权限,出于恶意的内部人员可以操纵信令消息,实施电话号码劫持或服务中断攻击。
这些案例强调了 SS7 漏洞的严重性,表明个人和企业都需要意识到这些风险。
SS7 攻击经常涉及针对特定电话号码拦截语音通话或短信。攻击者可以:
重定向呼叫路由:
通过发送伪造的 SS7 消息,攻击者可以更改呼叫的路由信息,将其从原定接收者转接到受控设备。
短信拦截:
类似地,攻击者可以请求将短信重新定向到他们控制的号码。这在短信用于发送 2FA 验证码时尤其危险,从而为攻击者绕过重要安全措施提供了途径。
利用 SS7 固有的功能(例如位置更新消息),攻击者可以:
确定实时位置:
SS7 网络会不断更新手机的位置以便于服务管理。通过访问这些更新信息,恶意攻击者可以推断出个人当前位置。
绘制运动轨迹:
随着时间的推移,攻击者可以追踪一个人的位置历史,揭示可以被用于定向钓鱼或实体攻击的模式。
攻击者还可以对移动网络发动拒绝服务攻击,通过:
过载信令信道:
发送大量恶意信令消息可能会导致合法通信延迟或丢失。
服务中断:
通过破坏信令消息,攻击者可能会暂时中断呼叫和短信的路由,导致网络可用性的大范围中断。
许多组织,包括金融机构和大型科技公司(例如 Stripe),依赖短信双因素认证 (2FA)。虽然这种方法便捷,但在 SS7 攻击下存在显著漏洞:
验证码拦截:
攻击者拦截含有认证验证码的短信,从而可以冒充用户进行操作。
账户劫持:
一旦获得 2FA 验证码,攻击者能够绕过其它安全层级,未经授权地访问敏感账户或金融系统。
改用认证器应用:
基于时间的一次性密码 (TOTP) 应用,例如 Google Authenticator 或 Authy,提供了更为安全的替代方案。
使用硬件安全密钥:
像 YubiKey 这样的物理设备增加了一道免受 SS7 漏洞侵害的安全防线。
运营商层面的安全增强:
网络运营商可以实施加强监控和异常检测系统,以标记可疑的 SS7 活动。
通过理解 SS7 攻击对基于短信的 2FA 的影响,用户和组织可以对其安全态势作出更明智的决策。
由于 SS7 深深嵌入在传统系统中,因此缓解其漏洞具有一定挑战性。然而,有几种策略可以降低风险:
避免使用短信进行 2FA:
在可能的情况下,禁用基于短信的双因素认证,转而采用如硬件令牌或认证器应用等更安全的替代方案。
保持警觉:
了解最新的 SS7 漏洞信息,并订阅来自可信来源的相关安全通告。
定期检查账户:
频繁审查账户活动,以发现可能表明未经授权访问的异常情况。
增强网络监控:
实施异常检测系统,以追踪可能表明 SS7 攻击的不寻常信令模式。
严格的访问控制:
将对 SS7 网络元素的内部访问权限限制为仅限可信人员,并建立严格的审计记录。
安全协议升级:
虽然 SS7 本身已经过时,但运营商可以在其基础上增加额外的安全层(例如加密以及网络管理界面的双因素认证)。
运营商之间的协作:
鉴于 SS7 实现了全球互联,运营商必须在威胁情报共享和事件响应方面密切协作。
研究与培训:
定期参与网络安全培训和模拟演练,以确保团队为应对高级利用场景做好充分准备。
尽管这些措施可以降低风险,但必须理解 SS7 的基本设计本身就使其固有地易受攻击。长期解决方案可能需要对全球电信信令基础设施进行彻底改革。
对于希望深入了解 SS7 漏洞的安全专业人员来说,下面提供一些代码示例和扫描命令,模拟 SS7 交互和日志记录的部分流程。
下面的 Bash 脚本模拟了扫描日志文件以寻找异常网络信令活动的过程。该示例代码仅用于教育目的——在未获得适当授权的情况下,请勿在生产环境中使用。
#!/bin/bash
# ss7_log_scanner.sh
# 该脚本扫描日志文件中是否存在可疑的 SS7 活动模式
LOG_FILE="/var/log/ss7_signaling.log"
SUSPICIOUS_PATTERNS=("UpdateLocation" "RouteInfo" "Refusal" "Redirect")
echo "启动 SS7 日志扫描..."
if [[ ! -f "$LOG_FILE" ]]; then
echo "未找到日志文件: $LOG_FILE"
exit 1
fi
while IFS= read -r line; do
for pattern in "${SUSPICIOUS_PATTERNS[@]}"; do
if echo "$line" | grep -q "$pattern"; then
echo "检测到可疑活动: $line"
fi
done
done < "$LOG_FILE"
echo "扫描结束。"
下面是一个 Python 脚本示例,用于解析 JSON 格式日志文件中的 SS7 信令消息。该示例演示了如何自动检测潜在 SS7 攻击的过程。
#!/usr/bin/env python3
import json
import sys
# 定义 SS7 信令消息中可疑的关键字
SUSPICIOUS_KEYS = ['UpdateLocation', 'Redirect', 'RouteInfo', 'UnauthorizedAccess']
def parse_log(file_path):
try:
with open(file_path, 'r') as f:
data = json.load(f)
except Exception as e:
print(f"读取日志文件出错: {e}")
sys.exit(1)
suspicious_events = []
for event in data:
# 假设每个 event 是一个表示 SS7 消息的字典
for key in SUSPICIOUS_KEYS:
if key in event.get("message", ""):
suspicious_events.append(event)
break
return suspicious_events
def main():
if len(sys.argv) != 2:
print("用法:python ss7_parser.py <日志文件路径>")
sys.exit(1)
log_file = sys.argv[1]
events = parse_log(log_file)
if events:
print("检测到可疑 SS7 事件:")
for event in events:
print(json.dumps(event, indent=4))
else:
print("未检测到可疑事件。")
if __name__ == '__main__':
main()
这些示例可以扩展或改编成更复杂的监控方案。在实际场景中,将异常检测与 SIEM(安全信息与事件管理)系统整合,可以为电信网络提供自动化和可扩展的监控。
为了更深入地了解,网络安全专业人员可以通过模拟实验室来探索 SS7 攻击。下面是模拟实验室环境可能包含的内容:
实验室环境搭建:
模拟攻击:
实验室分析工具:
学习成果:
尽管高级实验室需要大量的搭建工作,许多培训平台如今已提供专门面向电信安全的虚拟环境,为红队和蓝队成员提供宝贵的实战经验。
随着我们逐步迈入5G及更高时代,传统 SS7 协议与新技术的融合带来了显著的安全挑战。以下是为使电信安全面向未来应考虑的因素:
向安全协议过渡:
增强互操作性与协作:
投资于安全运维:
法规与合规:
用户教育:
SS7 攻击对全球电信和整个网络安全构成了严重威胁。从拦截电话和短信,到跟踪实时位置,再到通过短信双因素认证实现未经授权访问,这些攻击的危害无处不在。了解 SS7 协议中存在的漏洞以及攻击者使用的实际技术,对于电信运营商和终端用户都至关重要。
尽管 SS7 协议多年来实现了无缝通信,但其固有的设计缺陷——主要是缺乏强有力的认证和加密措施——给攻击者留下了可乘之机。通过详细的说明、实践代码示例以及模拟实验室演练,本文旨在使网络安全专家具备理解和缓解 SS7 相关风险的必要知识。
总之,只要 SS7 仍然是电信基础设施的一个重要部分,增强对其漏洞的认知以及采取积极的安全措施都是不可或缺的。通过逐步淘汰基于短信的认证并实施多层安全防护策略,可以在行业致力于开发更安全的信令与通信替代方案的同时,降低相关风险。
国际电信联盟(ITU)– SS7 概述:
https://www.itu.int/en/ITU-T/ss7/Pages/default.aspx
ETSI TS 101 220 – 信令系统7 (SS7) 消息传输部分:
https://www.etsi.org/deliver/etsi_ts/101200_101299/101220/
维基百科 – 信令系统7:
https://en.wikipedia.org/wiki/Signaling_System_No._7
美国国家标准与技术研究院(NIST)关于电信安全的特别出版物:
https://www.nist.gov/publications/telecommunications-security
Immersive Labs – 关于 SS7 利用的研讨会与实验室(模拟环境):
https://www.immersivelabs.com
SANS 研究院 – SS7 漏洞与攻击技术概述:
https://www.sans.org/reading-room/whitepapers/telecom/ss7-hacking-passwords-37115
本文全面介绍了 SS7 攻击的技术基础——从基本信令协议功能到实践代码示例及模拟实验室环境。通过了解这些机制,防御者可以更好地保护网络并提高整体网络安全性。