首页 > 代码库 > [分析]研究人员重置交通卡数据搭乘免费火车之重置攻击

[分析]研究人员重置交通卡数据搭乘免费火车之重置攻击

经过9个小时的休整我又踏上了飞往福州的路上,经过四天的休息并且远离网络的日子,我终于回到家了!昨天在史上最强安全资讯网站看到研究人员重置交通卡数据搭乘免费火车的新闻。而当中的某些内容有所偏差,所以就冲动地写下了这一篇小小的文章。

 

研究人员利用基于NFC的城铁交通卡的漏洞,开发出一个Android应用程序,可以让持卡者免费搭乘城铁。

 

首先,大家知道什么是NFC吗?

NFC是Near Field Communication缩写,即近距离无线通讯技术。
由飞利浦公司和索尼公司共同开发的NFC是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC 和智能控件工具间进行近距离无线通信。NFC 提供了一种简单、触控式的解决方案,可以让消费者简单直观地交换信息、访问内容与服务。

NFC和RFID本质上是有区别的,前者是兼容后者的,而前者主要是基于移动终端设备使用的,例如现在我们使用的Google Android Phone就是有NFC的功能,因其兼容RFID的原因,所以NFC是可以读取基于ISO14443A/B的Tag(标签)以及日本的Felica标签(也是ISO14443A标准)。并且从Google开始引入NFC技术之后,就一直对外宣传Google Android Phone是可以NFC模拟RFID Tag的,但是因为一些安全的原因,其系统底层的驱动并未发布,所以在市面上暂时是没有任何基于交通系统的RFID Tag是可以模拟的。而文章提到的问题就出现了“研究人员利用基于NFC的城铁交通卡的漏洞”,这应该说的是基于RFID的城铁交通卡而并非是基于NFC的。

重放/重置攻击顾名思义就是利用原有数据进行重写利用,从而绕过消费终端设备的限制,而该攻击手法主要是针对以下两种模式:

1、基于UltraLight卡的重放/重置攻击 

首先,MIFARE ultralight是不存在加密的,所以是不需要认证的,攻击者只需要针对数据进行识别,从而找到相关的数据进行修改就可以达到不断使用的效果,但这个和我们理解的重放/重置攻击是不一样的。因为攻击者只是基于该卡的数据进行了很详细的分析,从而利用手机进行修改,而并非在修改前保存卡内的数据,然后进行数据覆盖操作而达到重放/重置攻击。

 

2、基于CLASSIC/PLUS卡的重放/重置攻击 

因为CLASSIC/PLUS卡是经过加密的,所以首先攻击需要破解卡的加密算法,然后分析卡内的数据以及架构,利用NFC手机的程序(例如NFC-War)去读取卡内/修改卡内的数据,从而达到修改的效果。而重放攻击就是针对破解后备份卡内的数据,当卡内的数据使用完后重新复写/复制到卡内,这样子就好像我们所使用的Ghost镜像一样,不断的修复数据,攻击者就可以利用NFC手机+卡的备份数据覆写完成重放/重置攻击。

 

以上两种攻击模式的问题在于,因为消费终端设备并未对消费卡进行验证而导致的,而这样子的漏洞在我们国内也非常常见的。

文中刚刚提到Google Android Phone尚未发布NFC模拟功能,我们将会在完整版的NFC-War当中发布NFC模拟卡的功能,使得NFC-War可以做到破解卡 ——> 得到卡的数据 ——> NFC手机模拟卡进行重放攻击等。