找回密码
 注册
搜索
查看: 1258|回复: 4

[CDMA资料] 公布一个CDMA网络安全漏洞

[复制链接]
发表于 2008-12-22 10:35:37 | 显示全部楼层 |阅读模式
其实CDMA鉴权机制加上使用UIM卡,如果按标准做,安全性超过GSM鉴权几个数量级,
      
   但是在实际使用中被人为的降低了。
   
       标准做法,一般鉴权使用由AKEY临时生成的SSDA和随机数RAND进行鉴权,当某次使用
      
   SSD的一般鉴权失败时,应该认为SSDA已经泄密,系统自动启动基于AKEY的SSD更新过程,
   
   更新UIM卡内SSDA,还有就是由系统主动定时发起SSDA更新。
   
        
   现在的情况是,

   1,因为更新SSD和使用随机RAND会耗费系统资源,

   2,各地都有鉴权中心,原来运营商一直未很好解决漫游两地SSD更新交换数据问题,手机

   在外地时如果一次鉴权失败(例如呼叫鉴权手机掉电,信号不好,交换不成功),启动SSD更新,

   因为两地交换数据的问题,异地更新不成功,此时机主在回原地之前都不能使用手机。

   运营商不好好正面解决这个问题,而是偷懒,所谓网络优化,去掉了异地甚至本地使用SSD的一般

   鉴权失败后的基于AKEY的SSD更新过程,甚至去掉了定时更新SSD过程,只在新开户,换卡,投诉

   时进行SSD更新,系统实际降低到只依靠SSD进行鉴权,一直使用本是临时的SSD,把临时安全措施

   当长期安全措施,安全程度大打折扣。

   
       一般的呼叫鉴权,鉴权算法我们看成一个黑盒,输入4个参数,

       1,RAND,由网络发送到手机,标准协议应该每次都是随机数,但现实情况,大部分地区都是拨出固
       定为0,甚至有些地区呼入时也为0。

       2,SSDA,这个由AKEY临时生成,标准协议应该一般鉴权失败就更新,或定时更新,但现实情况,
       部分地区从来不更新,哪怕某次鉴权失败(意味着可能有并机无正确AKEY使用)。

       3,呼出时电话号码后6位数,呼入时MIN码后3字节

       4,ESN(UIM ID)
   得到 AUTHR,发送到鉴权中心,鉴权中心也有这4个参数,同样的鉴权算法,也计算出AUTHR与手机发
   来的AUTHR比较一致时鉴权成功,可以继续通话。
   
   
       在一个所谓的网络优化后的网络,由于参数1,2,4都固定了,参数3意味你接听电话时也是固定不变,
      
   你播出电话时已知,上网#777,发短信时固定,鉴权结果AUTHR可以跟踪UIM卡数据得到。
   
        1,用串口调试器软件或单片机飞线到UIM卡数据口捕获数据得到AUTH
        
        2,做一个特别的手机软件,自动记录拨出号码和接听,短信时对应AUTH。
        
        UIM卡MIN号和ESN(UIM ID)可以在手机工程模式看到,或用上述特别手机自动记录。
        
        之后
        
        用上述特别手机,在鉴权结果AUTH出来后做判断修改为上面捕获的预设AUTHR,
        
        就可以

         1,无限并机冒充原机拨打,冒充机主,银行电话,充值什么的..........

         2,做无限并机上网卡。

         3,冒充机主拦截电话,特别是特制手机使用无卡鉴权的话,鉴权计算速度比真实机主的UIM卡
   
       鉴权快并首先返回系统,结果就是真实机主的手机永远都不会再响,只有冒充的手机会响。

   
   最简单的实现条件就是有人拿到你的UIM卡放到这种特制手机并拨出几个电话,发发短信,上一次WAP,
   
   打入一个电话,几分钟后就能复制了,这个速度比GSM的SIM卡复制需要几个小时快多了,所以更容易实现.
   
       在一个山寨横行,手机源码不受控的年代,做一个这样的特制手机并不是很难的事情,只要在源码
   
   上加入十几行代码就能实现,也就是一两个小时的事情,甚至反汇编,仿真器跟踪现成手机并修改也只
   
   要几天时间。


        又想到一个方案
      
      条件
      1,从不进行鉴权失败后的SSDA更新
      2,RAND固定为0

     UIM卡一般鉴权指令
     发送:

    A0 88 00 00 11   进入一般鉴权计算模式

    回应:88

    发送:         

    00 RAND(四字节) 18   DIGITS(三字节) 10 UIMID(四字节) 00 00 00  发送一般鉴权参数(可以跟踪此条指令查看RAND项是否每次都是0来判断当地网络是否存在漏洞)

    回应
    9F 03
    发送:

    A0 C0 00 00 03          读出鉴权结果AUTHR

    正确回应:

    C0 AUTHR(三字节) 90 00

    我们不用知道UIM卡现在的SSDA,

    DIGITS在拨出时就是拨出号码后6位,不足6位前面用MIN后六位补(HEX),呼入时为MIN后六位
   
    DIGITS拨出号码时超过6位时共有999999+1=1000000个组合,
   
    写一个UIM卡PC软件输入DIGITS的所有组合并记录对应AUTHR建立数据库,如果UIM卡一秒能做10次鉴权计算,大概20-30小时能
   
    算完所有组合,大概生成2-3M数据库,将此数据库导入特制手机就能实现部分地区网络情况下的UIM卡复制,攻破鉴权机制,

    如果有条件还可以做一个有3-4M容量的特制UIM白卡,重写程序,将数据库导入后查表给出AUTHR,这样的卡在任何UIM卡手机

   上都能使用。

       对此安全漏洞,并无利用和实际操作,此漏洞只是本人实际测试手机SSDA更新时发现(实测某些地区人

为引起一般鉴权失败后从来没有SSDA更新,对测试工作造成很大不便),但觉得理论上完全可行,希望新电信接手CDMA网络后尽快修补

这一漏洞,还用户 一个安全的CDMA网络,特别是在现在手机支付逐渐盛行的情况下。
发表于 2008-12-23 19:29:24 | 显示全部楼层
SSDA 失败  那SSDB如何处理呢 ? 在一个CDMA  NAM中的参数是有好几个的, Synx也是一个同步的参数。  可能搂住的地方使用的CDMA网络是加密度不够的,直接默认是0码。  如果你想尝试测试  可以在手机端 用SPC里面的东西配合测试的,这样可以看到整个鉴权的过程,在发送和接收的同时双向加密,不知道搂住时如何侦听的   我也想知道下
点评回复

使用道具 举报

 楼主| 发表于 2008-12-24 00:14:32 | 显示全部楼层
SSDB是用于语音加密,与鉴权基本无关,而且更加耗费系统资源,而且测试过中国的CDMA网并未启用此SSDB的语音加密,测试方法就是用无卡机开鉴权,修改手机代码,SSDB参数不管更新与否
从源头强制修改为固定0X1111111111111111,在我去过的所有城市,包括一线城市,全部都能正常通话,


其实还有一个通话计数器功能也未启用,当两个SSDA相同手机分别呼叫时,虽然鉴权成功,但上传到系统的计数器值必然与系统记录不同,

根据此点就可以判定有并机存在,系统也应该进行SSDA更新,但用两张UIM白卡写入同样号码和鉴权参数后,从未发生过SSDA更新,只是两手机不能

同时拨号,接听时只有一个会响。


以上网络漏洞已经证实SSDA不更新的有浙江,福建,四川,其它地区未有业务往来,没有证实,但估计很多地区都是这样,
亲身实测证实RAND固定为0的有哈尔滨,廊坊,福州,因为本人只去过这些地方业务实测,但这几个城市并不是在同一地区
所以我敢说此现象应该更加普遍。


证实无以上漏洞的只有深圳。

判定SSDA不更新方法:
联通无卡机已经使用过的,用QUALCOMM DM软件强制将SSDA改0后如果2次以上都不能通话的,需要客服投诉后才能解决的就是。

判定RAND恒为0的方法
UIM卡手机捕获上面的鉴权指令看RAND项是否恒为0,或者用路测软件连接手机很容易就能看到。
点评回复

使用道具 举报

发表于 2009-9-27 02:27:32 | 显示全部楼层
楼主实在是太强了
点评回复

使用道具 举报

发表于 2009-10-14 13:24:20 | 显示全部楼层
强!楼主有这种手机吗?
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-6 19:29 , Processed in 0.049023 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表