SIM卡安全

前言

关于SIM卡克隆不是什么新鲜技术,跟朋友也吹牛过,也演示过,更写过稿子,本文基于原来的稿子修改,作为普及,特此将我这些低级无聊的拿不出场合的烂东西厚脸拿出来吹牛一番。

一卡对一号,SIM卡中存储了一些通信过程中的重要信息,作为通信过程中的身份验证和身份识别,之外,卡中一般还存储了联系人和短信,SIM也自带了一种非常简单的处理器,用于完成通信过程中的加密运算。

克隆SIM卡

据个人了解,SIM卡克隆技术最先是从台湾引进大陆的,而克隆SIM在国外也有些流行的。SIM克隆指的是通过一个专针对于SIM卡的读卡器,然后读出信息,将关键信息写入在一张支持可读可写的SIM空白卡中即可完成克隆过程(注意我们现在所用的SIM卡是不支持可写操作的)。看似很简单,似乎就是将电脑里的东西拷贝到U盘这样一个过程,但事实上是比较复杂的,因为SIM卡厂商也肯定意识到这点,不会让你读出某个关键数据,而这个关键数据我们称为KI,用来在通信过程中验证加密。这个我们后面说,先来看下目前市面上常见的SIM读卡器,如图1所示:

图1

图1中是市面上比较常见的两种读卡器,在淘宝以及手机市场之类的地方都可以购买到。图2是我所使用的SIM空白卡,上面印有蝴蝶的图案,大家都称它为“蝴蝶卡”,还有”猴子卡”等命名方式的卡片,之间的最大区别就是容量不同而已。

图2

下图是本人从淘宝上购买来的装备,两张空白的“蝴蝶卡”,一个SIM读卡器,如图3:

图3

上文中说过,理论上我们可以通过读卡器将相应的信息读取出来,然后写入到一张空白的SIM中即可完成克隆,但实际上并非如此,这点是厂商考虑到的,就好比银行卡一般是无法克隆的。

其实在通讯过程中,我们只需要三个信息即可,IMSI、ICCID和KI。IMSI即“国际移动用户识别码”,用于标示用户;ICCID即“集成电路卡识别码”,用于标示SIM卡;KI是用来加密的,它的用途后面我们说。IMSI和ICCID具体的格式我们不作介绍,有兴趣的读者可以查阅通信方面的书籍,我们只用了解是什么即可。其中最为重要的是、也是整个克隆过程中唯一要解决的就是KI,我们先看看整个通信鉴权过程。

GSM鉴权

所谓鉴权,就是指鉴别用户的合法性,在两个人通话或者发送短信之前,是需要用SIM卡中的信息向基站发出鉴别的,确保你的号码是合法的。这里说句题外话,普通手机通信是不与卫星打交道的,网上的一些吹牛的、一些不法骗子的所谓什么卫星定位(有GPS就可以)、卫星监控之类的幌子都只当笑话看看就行了。

手机通信直接交互的是基站,手机是如何找到基站的呢?基站其实不停在向外发送广播信息,手机就是接受到广播信息才知道基站的存在,中间其实还有一些较为复杂的过程,就不谈论了。

在与另外一个用户建立通信的时候,需要鉴权,这里以移动来说明。首先移动那边保存了我们SIM卡中的部分信息的,包括KI。在鉴权的时候,首先由基站发送一个随机数,即RAND()给手机,然后SIM卡收到随机数以后,用自身的CPU来做一些算饭,将A3与RAND()加密后返回给基站,基站收到以后,也用同样的KI做相同的运算,如果正确,则是合法用户。之后的通话和短信还分别用A3与RAND()加密后的值再来用A5和A8算法加密。这里很明显可以得出:

1)、通信内容是加密处理过的,也就是这不是以前大哥大的年代了,架一根天线就可以听到别人的通话内容了;

2)、KI是不在空中传播的,所以通过空中拦截电磁波找KI是不行的;

3)、加密是由基站产生的随机数,并且算法是作为国际保密的,教科书和专业书里是没有这类算法的,A3、A5、A8只是一个算法代号,不具体指什么算法。我们知道SIM卡里也有简单的处理器,理论上咱们可以动动电路逻辑来找算法,但实际是不行的。

解决KI的问题

但是总有解决的办法,现在已经有很成熟的方法来破解SIM中的KI值了。是通过一定的算法来暴力破解的,所以破解时间有从几十分钟到几天甚至几个星期都可能的,这具体取决于您所使用的卡片的安全系数,咱总结了一下SIM安全性的发展,如下:

1)、2005年上半年之前,那时的卡甚至可以几分钟内就读取出来的,安全性很差。

2)、2005后半年~2009年之前,那时SIM卡安全性依旧不是很高,用一定算法破解出KI也用不了太久,我2008年的卡也就两个小时破解出来了。

3)、2009年10月至今,SIM卡有相应的保护措施,并且有种自我保护的措施,只要破解到一定次数后,会自动毁卡。但是,现在也已经有针对这样卡的破解软件了,只不过不是百分之百成功而已。

一张比指甲盖还大一点的卡片,经过这么多发展,想必是很多读者都不知道的。就好像从Windows 2000到现在Windows7及Windows
2008中,底层的许多安全机制的改进是普通用户所不知道的。

克隆的具体实践

我这里只是针对移动的SIM卡演示,以下内容不一定适合联通之类的,相关具体内容请网上搜索。克隆SIM卡我们只需要如下几步:

1)、识别你卡的年代,相信大部分读者在几年前就有手机号了,所以你可以自己回忆一下是什么时候办的卡,然后对照上方我总结的三个阶段。还可以取下你的SIM卡,在卡上面有一窜数字,其中第11位和12位就是你卡片的年代了,我的十一位和十二位是“08”,所以是08年的(动感地带卡)。

2)、将SIM卡片正确插入到SIM读卡器中,连入电脑(本人的读卡器请参考图3,以及图2左边的),并且安装SIM读卡器的驱动。如果你是在淘宝上购买的SIM卡,店家一般会送程序以及SIM卡的驱动的。注意我没在Windows7中成功安装驱动,而是在虚拟机中的Windows
XP里成功安装了驱动程序。建议读者在Windows XP中完成实验。

3)、在“设备管理器”的COM口中,找到SIM读卡器的COM口,一般是COM3。

4)、运行破解工具,本人所使用的是“SIMMaster
2011”,然后在端口中选择“COM3”,速率一般是“19200”,低于这个速率只有慢速破解了。

5)、如果连接成功,在“连接”按钮旁边有一个“防爆模式”,如果您的卡片是老卡片,可不必选择,这样破解速度会快得多。之后连接,程序界面会显示您卡片的ICCID、IMSI。然后点“开始扫描”即可。

接下来就是漫长的等待,谁也不知道会破解多久,甚至不知道是否成功,更不知道您的卡片是否会被烧毁,请做好最坏的心理准备——包括重新补卡。

在破解过程中请不要强行断开读卡器或者强行结束破解程序的进程,如果要关机或者关闭程序,请先停止破解,然后再正常退出程序,再次打开并且连接此卡时,程序会自动接着上一次进度开始破解。如果成功,结果将是如图4中的,图4中是我成功破解了我的SIM卡中的8组KI值。

图4

从图中我们可以看到,我的卡片一共花费了61025次的尝试才成功,扫速度是每小时44488次(大约值),没有开启防爆模式。

之后进行最后一步,写卡,从SIM的大卡片上取出SIM卡片,然后再次插入读卡器,运行卖家提供的对应的写卡软件,然后连接COM3,将ICCID、KI、IMSI依次填入,之后写入到卡里,只要成功了,就可以正常使用这张卡了。如图5:

图5

利用克隆卡劫持短信和来电

虽然破解需要数小时,但我们依旧要注意自身卡片的安全,如果被不法份子手持你的卡片几个小时,那么他很可能会成功克隆你的SIM卡。利用克隆过的SIM卡,我们可以成功完成短信和来电的劫持。

我们先来谈下两张SIM同时使用,电话和短信应该流入在哪一张卡片的手机里。很多人说是最后开机的那部手机,其实是错的。在通信过程中,我们是和基站建立的单对单的通信(有点像TCP),也就是说,谁先和基站建立通信的,最后信息和电话就会流入先建立通信的那一部持卡手机里。而开机的时候手机往往需要向基站注册信息,所以才有了所谓的最后开机的那部收到信息和电话。

我们来模拟这样一个场景:用户A是持卡人,用户A1是不法份子。在夜黑风高的时候,用户A正睡得熟呢,同寝室的用户A1趁他熟睡的几个小时内偷偷取下他的SIM卡,然后在用户A不知不觉中克隆了他的SIM卡。第二天用户A1见用户A正在等待一条有机密信息的短信,于是,用户A1在用户A收到短信之前,利用这张克隆过的卡片偷偷随意拨打了一个号码,比如10086,此时用户A1和基站建立了单对单的通信,刚好机密信息来了,却被用户A1给劫持了。等得焦急万分的用户A打了个电话过去催对方,于是这时用户A又和基站建立了单对单的通信,对方此时重发短信过来,用户A成功收到了,于是他大声欢呼。

克隆卡的危害以及案例

我们知道,只要克隆了SIM卡,如果是自己有了两部手机,为了方便切换而克隆,倒是非常方便,本人正是这样做的。但是如果被不法份子克隆以后,危害是很大的,因为这时拿到克隆卡的人完全可以像原本的合法用户那样去使用这张卡,比如手机找回密码、密码保护之类的措施,只要我们最后向基站建立连接,就可以收到一些验证码、重设密码等信息——因为被劫持了。我们甚至还可以消费这张卡里的话费——当然你每个月要是有公司报销话费,两个人用一张卡耗话费也不错。

这里我简单说下两个案例:

第一个是,我们见过很多利用克隆技术来行骗的人,声称只要克隆了对方的手机卡,就可以监听对方的短信和电话了。刚才上面已经说了,能做的只是劫持,是不可以监听的!甚至有更搞笑的骗子,只要网上汇几百块钱,然后告诉他手机号码,过几天就寄一份克隆好的卡片给你。这招除非是移动内部人员所为,普通人是根本无法实现的,前面我们破解KI都花了几个小时,更不说告诉对方一个号码就可以完成克隆。

第二个例子,现在很多流入市场的所为“黑卡”,就是外面随便买的,不是经过移动营业厅正规办理的卡片,以稍微低的价格买的卡中,有一些正是克隆卡,现在有一种读卡器,不需要将SIM卡从大卡片上拆下,就可以读取并破解,然后再将卡片流入市场并出售,这些不法份子不定期用这些克隆的过的卡片,如果发现卡片已经被启用了,那么就经常发送一些垃圾广告短信,笔者正是受害人之一,针对这样的情况,我们只用去营业厅补办一张卡即可,因为新卡的IMSI是不一样的,并且补卡的时候移动会更新你原本的IMSI,这样克隆卡就没法用了。

防范总结

讲这么多,我只是想用实例突出SIM的安全性很重要,因为其重要程度不比其他账号的安全性差,很多人在没有实例面前总会认为别人是在空谈理论,给出实例后,可能会让人瞠目结舌。针对SIM卡的安全,个人认为应该非常注意SIM卡不要流入他人之手;另外便是,如果你的卡是很多年前办理的,应该以卡片遗失的借口去移动营业厅花一二十块钱重新补办一张新的卡片,并且养成一两年补办一次的习惯,这样才保证卡片所用的技术是最新的,并且万一不小心被人偷偷克隆过厚,这种方法也可以直接让他的克隆卡失效。

本文若有错误,请大家指出,我的电邮是[email protected]。

SIM卡安全,布布扣,bubuko.com

时间: 2024-10-13 02:55:58

SIM卡安全的相关文章

Android如何获取SIM卡信息

android 获取sim卡运营商信息 TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager 的使用 TelephonyManager 提供设备上获取通讯服务信息的入口,应用程序使用这个类的方法来获取电话的服务商或者状态.程序也可以注册一个监听器来监听电话状态的改变. 不需要直接实例化这个类,使用Context.getSystemS

[android] 手机卫士绑定sim卡

读取sim卡的序列号,保存起来,一旦sim发生变更了,认为是小偷的sim卡,发出警告 读取sim卡序列号 获取TelephonyManager对象,通过getSystemService(TELEPHONY_SERVICE) 调用TelephonyManager对象的getSimSerialNumber()方法,得到String类型的序列号 把序列号保存在SharedPreences里面 需要加权限 android.permission.READ_PHONE_STATE 检测sim卡是否变更 使用

Android 获取手机SIM卡运营商

直接上代码: /** * 获取SIM卡运营商 * * @param context * @return */ public static String getOperators(Context context) { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); String operator = null; String IMSI = tm.getSub

android sim 卡短信读写

由于对短信读写操作的api 被隐藏了 , 我们需要使用<Java反射机制的学习>一文中提到的反射的方法得到隐藏API .这有一个用例大家可以下载http://zhushou.360.cn/detail/index/soft_id/1608427 查看效果 android写sim卡短信 /*** * 1) byte[] smsc : 短信服务中心的地址,个人认为在复制到SIM卡过程中可以为空. * 2) byte[] pdu : 中文翻译是协议数据单元,这个参数最为重要,一会我们会做详细地解释说

Android 通过反射及AIDL获取双卡手机SIM卡相关信息,及注册监听

在Android 5.0之前,虽然也有手机是双卡手机,但是双卡方案都是ODM厂商自己做的,或者是有芯片厂商提供的源码完成.因此,如果要在4.4甚至更早之前的手机上获取双卡信息,基本上不是一向巨大的工程.虽然之前尝试过使用反射方法去获取 高通的"android.telephony.MSimTelephonyManager"类 MTK的"com.mediatek.common.telephony.ITelephonyEx.aidl"类, 打印出函数的方法和参数以及类属性

10.SIM卡

绑定sim卡 ublic class Setup2Activity extends BaseSetupActivity { private SettingItemView sivSim; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setup2); sivSim = (Setti

检测是否安装有sim卡

ios7测试ok [CTSIMSupportGetSIMStatus() isEqualToString:kCTSIMSupportSIMStatusNotInserted]可以判断是否插入了sim卡.前提是把下面的代码随便复制到一个头文件里面,然后引入CoreTelephony.framework即可.extern NSString* const kCTSMSMessageReceivedNotification;extern NSString* const kCTSMSMessageRepl

三种尺寸:手机SIM卡使用指南

毫无疑问目前卖的最火的手机非iPhone 5s莫属,相信仍有不少网友目前处于观望之中,由于iPhone 5s和iPhone 5c采用与iPhone相同的Nano-SIM卡,因此不少新用户在使用之前也徒生了一道工序,就是需要更换Nano-SIM卡,究竟这种SIM卡跟我们以往接触的标准SIM卡和Micro-SIM又有什么区别呢?又有何种渠道才能更换Nano-SIM卡呢? 区分三种SIM卡 在了解SIM卡种类之前,我们先来简单介绍一下SIM卡的功能,众所周知SIM卡就是我们在使用手机时插入的识别卡,S

MICRO SIM卡(SIM小卡)尺寸图及剪卡图解

如今使用MICRO SIM卡的手机越来越多.近期刚刚买了一个手机到手才发现尼马使用的是MICRO SIM卡.再去买剪卡器吧,十几二十块用一次就废了,去营业厅吧.又比較远,懒的出门.怎么办呢,自己剪!这里说是剪卡,实际并没有使用剪刀.而是使用壁纸刀,由于我们不仅仅是制作MICRO SIM卡,还有卡套. 工具原料 一把壁纸刀,一把尺,一张买电话卡时的卡片 MICRO SIM卡(SIM小卡)尺寸图 首先制作一张MICRO SIM卡大小的卡片 从上图可知MICRO SIM卡的长边等于SIM卡的短边.所以