GSM Hack(手机信号劫持)

写点很多人都感兴趣的东西.关于GSM通信网络监听的问题,在那一年广州黑市上出现相关设备就闹得沸沸扬扬.一时大众惶恐自危.有些所谓的资深专家就跳出来说"是不可能的,GSM网络是安全的".这可能是移动通信公司最大的危机.虽然那些专家说的话,我们可一笑置之.但也确实不见很简单的事,不是随便就可以实现的.
记得几年前某次我正在说一个CASE的执行方案,说到关于监听SSL通信的相关数据.有个新来的程序员很白目,大声的提醒我SSL是加密的,这不可能实现……我很怕跟这些照本念书型的技术人员打交道,因为老师告诉他们1就是1,书本上告诉他们2就是2.他们自己怎么也不会去想"为什么不可能是3?"
对于一个信息安全工作者,看待任何事物,都应该是"有罪论".这不是先入为主的思想.而是事物的本质.同样,GSM通信网络体系也是这样.暂且把那些资深专家的话和常规理论丢一边去.为了详细分析如何实现,我们先来学习些基本的知识.

这是一个简单的GSM通信网络系统结构方框图.我们暂且把他分为五个部分:MS、BSC、NSS、OSS、PSTN.下面来介绍和本文有关的几个部分.
MS:移动台(手机)
BSS:基站子系统模块
BTS:基站收发台
BSC:基站控制器
NSS:网络子系统模块
OMC:操作维护中心
MSC:移动交换中心
VLR:漫游用户位置储存器(后面会做详细介绍)
HLR:本地用户位置储存器(后面会做详细介绍)
AUC:鉴权中心(后面会做详细介绍)
EIR:设备标志储存器(后面会做详细介绍)
OSS:操作支持系统(也叫运营支撑系统)
和本文关系不大,就不做详细介绍了.主要为网络管理维护,计费和用户卡资料管理.当然如果你要做实地渗透,关系就大了.
PSTN:公共交换电话网,我们所用的坐机就属于这个网络.这基本是现今最大的网络,也是其他一些网络的基础.
我们基本已对GSM网络有了个基本的了解.对于要进行空中线路侧劫持,我们还得对另外一个重要部分进行了解.那就是移动用户识别卡,也就是我们所说的SIM卡、手机卡.SIM卡里储存有四类数据,第一类是固定数据:国际移动用户识别号(IMSI)、鉴权密钥(KI)、鉴权和加密算法.第二类是暂存的网络数据:位置区域识别码(LAI)、移动用户暂时识别码(TMSI)、禁止接入的公共电话网代码.第三类是业务代码:个人识别码(PIN)、解锁码(PUK)、计费费率.和我们要进行的分析有关的重点是第一类和第二类数据.
做完前面的介绍,我们现在开始进行GSM空中线路侧劫持实现分析.首先我们来看一下GSM的通信流程和详细的呼叫流程、信令流程.

这是一个(MS)手机呼叫(MS)手机请求建立通信的信令基本流程.整个过程从MS向BTS请求信道开始.首先MS将在随机接入信道(RACH)向BSS发送信道请求消息,以便申请一个专用信道(SDCCH),BSC为其分配相应的信道成功后,在接入允许信道(AGCH)中通过立即分配消息通知MS为其分配的专用信道,随后MS将在为其分配的SDCCH上发送一个层三消息—CM业务请求消息,在该消息中CM业务类型为移动发起呼叫,该消息被BSS透明的传送至MSC,MSC收到CM业务请求消息后,通过处理接入请求消息通知VLR处理此次MS的接入业务请求,(同时,由于在BSC和MSC之间用到了SCCP有连接服务,为建立SCCP连接,MSC还将向BSC回连接确认消息),收到业务接入请求后,VLR将首先查看在数据库中该MS是否有鉴权三参组,如果有,将直接向MSC下发鉴权命令,否则,向相应的HLR/AUC请求鉴权参数,从HLR/AUC得到三参组,然后再向MSC下发鉴权命令。MSC收到VLR发送的鉴权命令后,通过BSS向MS下发鉴权请求,在该命令中含有鉴权参数,MS收到鉴权请求后,利用SIM卡中的IMSI和鉴权算法,得出鉴权结果,通过鉴权响应消息送达MSC,MSC将鉴权结果回送VLR,由VLR 核对MS上报的鉴权结果和从HLR取得的鉴权参数中的结果,如果二者不一致,拒绝此次接入请求,此次呼叫失败;如果二者一致则鉴权通过,鉴权通过后,VLR将首先向MSC下发加密命令,然后通知MSC该MS此次接入请求已获通过,MSC通过BSS通知MS业务请求获得通过,然后MSC向MS下发加密命令,该命令内含加密模式,MS收到此命令并完成加密后,回送加密完成消息,到此MS完成了 整个接入阶段的工作。
可以看出,如果我们要进行空中线路侧劫持,劫持者是处于MS和BTS之间的位置.聪明的朋友肯定可以想到我前面提过的SSL监听.是的,在SSL监听中我们是用(MIM)中间人攻击方式实现.同样,在这里也可以.GSM协议中最大的问题是单向鉴定.也就是基站要求鉴定手机,而手机根本不鉴定基站.通俗点说,手机是个有奶便是娘的孩子,只要一喂奶它就伸嘴咪奶喊娘.对于手机,劫持者冒充基站.对于基站,劫持者冒充手机.在转换中间,我们可以干任何我们想干的事.看到这里,有的朋友要说我明白了.其实不然,没那么简单.还有些问题我们没有考虑进去.
我们再回过头来看完成接入阶段工作完成后的语音通信工作.当主叫手机拨打需要呼叫
MSISDN
号码,也就是被叫手机号码,或者是被叫手机呼入.在手机与基站的通信过程中,除了主叫过程中出现的被叫MSISDN号码以外.主叫手机是不发送本机的MSISDN号码的.被叫过程中,基站也不会向被叫手机发送被叫手机的MSISDN号码的.这一切都会被我们前面介绍到的SIM卡中的IMSI(国际移动用户识别码)所替代.也就是说,如果劫持者需要劫持某部指定号码的手机,是不可能的.你根本不知道所需要监听的手机是哪部?谁都不认识谁.MSISDN和IMSI的对应关系储存在HLR,只有它知道.劫持者要搞定这个问题,只有两个办法,一个是入侵MSC,向HLR查询其号码对应关系.另一个是事先去拿到被监听者的SIM卡,提取其中的IMSI,但这个提取过程,因为SIM卡芯片的安全算法保护,一般破解时间平均需要2到7个小时.当然,如果你有超级计算资源,这个时间可以再快点.
下面是详细的鉴权过程图,可以清楚的看到我上面所说

头疼了吧.实际应用中肯定有困难的地方.但实际应用中也有对劫持者来说,好的一面.我们知道GSM协议通信中制定了加密体系的.但可笑的是,移动公司在绝大部分地区,根本没开加密模块.如果不是GSM采用了跳频技术,通信不是一直保持在一个频率上,我们用台频谱分析分析仪就可以监听了.虽然不是这种最理想的情况,也使劫持者在做中间人方式的空中线路侧劫持时,省了很多麻烦.
最后还要说个坏情况.在有些情况下,手机与基站之间的通信,如呼叫,被叫,位置更新时.甚至IMSI都不会发送.只是用一个称做TMSI(临时识别码)代替.这个TMSI是由VRL分配,TMSI与IMSI的对应关系只有它知道.
最终结论:GSM空中线路侧劫持是完全可以实现的.有一定的无线电基础,GSM协议知识,加上些并不昂贵的设备就可以实现.但要实际情况应用起来,还是有诸多困难.GSM空中线路侧劫持除了可以用来监听外,还可以用来大规模的IMSI盗取,甚至盗打电话或对被劫持者的跟踪 。

参考文章:《GSM Hacker资料汇总

link:http://www.zxboy.com/article.asp?id=158

91ri.org:看过《幽灵》的朋友应该知道《幽灵》的第一集中就演示了神奇的GSM劫持,小编当时一直对那种技术特别向往,今天发现了这份资料,发上来与大家共享,有兴趣的同学可以看看。

本文由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理,转载请注明出处。