SIM卡是如何工作的?

逆向工程 固件 记忆
2021-06-30 03:02:15

我了解 SIM 卡具有内存,并且其中部分或全部内存卡还包含微处理器。

它们充当的不仅仅是闪存的外围设备。

我希望能够读取内容并提取我的联系人和消息作为备份,所以我买了一个插入 USB 端口的 el-cheapo “SIM 卡读卡器”。但是当我插入它时,它就好像它根本不存在一样。

那么我怎样才能访问数据呢?

其次,我知道它们会影响手机的基带部分,包括操作频率以及识别自身 (IMEI) 和访问特定网络(T-Mobile、AT&T、Verizen)所需的任何代码。同样,它显然不仅仅是闪存。

所以我的问题是,它们究竟是如何工作的,以及如何从手机卡中读取数据?

2个回答

SIM 卡是一种通用集成电路卡 (UICC)。

它们究竟是如何工作的

根据Karsten Nohl 的演讲《移动网络攻击进化》,SIM 卡包含一个嵌入式实时操作系统、一个文件系统和一个 Java VM:

演示幻灯片 1

以下是 UICC 的技术规范,其中准确描述了它们的工作原理:

ETSI TS 102 221 V8.2.0 (2009-06) 智能卡技术规范、UICC-终端接口以及物理和逻辑特性

我怎样才能访问数据?我怎样才能进入我自己的卡?

这个 DefCon 演示文稿“DEF CON 21 - Karl Koscher 和 Eric Butler - SIM 卡的秘密生活”视频解释了很多关于 SIM 卡以及如何与它们交互的内容。

演示幻灯片

与 SIM 卡接口 1

他们也遇到了麻烦:

与 SIM 卡接口 2

他们发现SIM Alliance Loader软件...

与 SIM 卡接口 3

...但决定改用GlobalPlatform,这要复杂得多。为了使用 GlobalPlatform 与 SIM 卡接口,演讲者借鉴了Karsten Nohl 研究中提出的技术

在这篇文章中找到了一些很好的答案:

什么是 SIM 卡(以及接下来会发生什么)?(howtogeek.com)

摘抄:

SIM 卡上存储了什么?

SIM 卡存储了 15 位国际移动用户识别码 (IMSI),用于在运营商的移动网络上识别该卡。IMSI 是查找过程的重要组成部分,它决定了移动设备连接到的网络。

除了 IMSI,还会发送一个 128 位的值身份验证密钥 (Ki) 以使用 GSM 蜂窝网络验证您的 SIM 卡。Ki 由运营商分配并存储在其网络上的数据库中。

SIM 卡还能够存储 SMS 消息以及最多 500 个联系人的姓名和电话号码,具体取决于您拥有的 SIM 卡的内存大小。如果您因任何原因必须更换手机,您都可以通过 SIM 卡轻松传输您的联系人。

大多数 SIM 卡包含 64-128 KB 的存储空间。

> SIM 卡如何工作?

从本质上讲,SIM 卡可作为您手机访问运营商网络的凭据。由于 SIM 卡包含此信息,因此您可以将其插入任何具有相同运营商的手机或未锁定的手机,以访问网络。

这是它的工作原理:

当您启动设备时,它会从 SIM 获取 IMSI,然后将 IMSI 中继到网络以请求访问。

运营商网络在数据库中搜索您的 IMSI 和相关的 Ki。

假设您的 IMSI 和 Ki 得到验证,运营商然后生成一个随机数,使用您的 Ki 使用 GSM 加密算法对其进行签名以计算 SRES_2,并创建一个新的唯一编号。

然后,网络将该唯一号码发送回设备,然后设备将其传递给 SIM 卡以在相同的算法中使用,从而创建第三个号码。

然后将该号码中继回网络。

如果两个号码匹配,则 SIM 卡被视为合法并被授予访问网络的权限。

因此,如果您的手机屏幕坏了,在修复过程中,您可以取出 SIM 卡并将其放入备用手机中,并且仍然可以从您的网络接听电话、短信和数据。