0x01
在上次的分析过后,我们将进一步分析一下校园卡的刷卡系统安全隐患。毕竟除了充值系统,校园一卡通还是有很多应用场景的。
0x02 分析
我们使用Proxmark3读取一张校园一卡通。
可以看到,校园一卡通的卡片只有第一行存在数据,也就是说刷卡机和门禁系统只校验卡片的UID来判别身份。 的确,这样让开发系统时极大的减小了负担,但同样也具有极大的安全风险。 进一步读取卡类型:
可以知道,校园IC卡使用了NXP MIFARE CLASSIC技术,卡片大小Plus 2k SL1共16扇区。 科普一下IC卡原理中的UID部分:
IC卡 (Integrated Circuit Card,集成电路卡),也称智能卡(Smart card)、智慧卡(Intelligent card)、微电路卡(Microcircuit card)或微芯片卡等。它是将一个微电子芯片嵌入符合ISO 7816标准的卡基中,做成卡片形式。IC卡与读写器之间的通讯方式可以是接触式,也可以是非接触式。根据通讯接口把IC卡分成接触式IC卡、非接触式IC和双界面卡(同时具备接触式与非接触式通讯接口)。 UID卡片完全兼容mifare 1k卡片。卡片的block0(UID所在的block)可以任意修改,重复修改。block0直接用普通mifare读写器修改,不需要特殊设备。卡片的默认密码为12个F,即FFFFFFFFFFFF。 密码破解的几种方法: 1)密钥列表当中的12个0是不存在的,还有就是16进制有Z的吗?看来是我土了! 2)关于认证嵌套漏洞,这个因为作者文章忽略了权限的部分,所以我可否忽略?因为没有权限,何来认证嵌套漏洞呢? 3)DarkSide攻击,仅仅是基于IC卡类别当中NXP公司所发布的MIFARE CLASSIC系列(S50/S70)而不是所有的IC卡!文中没有说明问题究竟是存在于哪里,我也曾经说过关于这个方面的问题,什么是PRNG漏洞,以及PRNG漏洞和WEP的关系!所以不再多说 4)正常验证过程获取Key,首先SAM并非是正常,而是在不安全的对称性算法当中增加了一个安全模块,去加密彼此之间的通信安全,但就是基于读卡器返回的数值是明文而存在了关于监听攻击的内容,文中好像把我之前关于SAM部分非监听部分的内容拿出来说之后,而没有注意究竟问题是什么!
这里我们就采用UID卡。
0x03 复制
我们分析数据的CardCode字段。发现其正好是UID的十六进制倒序。所以写一个小程序(Python)来做转换。
x = input("ID:\\n")
a = hex(x)
UID = a\[8\]+a\[9\] + a\[6\]+a\[7\] + a\[4\]+a\[5\] + a\[2\]+a\[3\]
print UID
顺便再拿出八百年前的校验码计算器:
好了。现在,可以复制了。 我们将修改后数据填入Proxmark3上位机内,克隆至UID卡。完工。
0x04 测试
拿到大叔面前:
7774.0 嗯。