首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IC卡——数据存储结构分析

WARNING!!! 本文具有相当的攻击性以及复现性,仅供技术参考与教学用途研究,切勿用于非法用途,参考此文进行犯罪的相关人员与本人无关。

——免责声明。参考刑法修正案:构成非法提供控制计算机信息系统的程序、工具罪,两罪量刑都是三年以下有期徒刑或者拘役,并处或者单处罚金,情节严重的,处三年以上七年以下有期徒刑,并处罚金。非法获取计算机信息系统数据罪

最近,在上次针对学校内IC卡分析结束之后,我这次针对某储值IC卡进行了一次数据的分析整理。

在M1卡的16个扇区内的某一个扇区内的字段中存储着IC卡内的信息,例如使用时间、使用次数、Money等信息,想要修改卡内的信息就要将卡片内的记录数据导出,每个扇区第一个字段的16个字节是扇区的秘钥对,我们要是想要导出数据就要通过穷举的方法测试出秘钥对,只有知道秘钥对后才可以导出卡片内文件

某IC卡 还是针对IC卡做了一些必要的加密来保证安全,但是同样存在着一些问题:比如没有针对全扇区加密导致Nested authentication漏洞容易被利用,其次KeyA和KeyB中,KeyA的设置过于简单,容易被暴力破解。

设备:Proxmark 3

一、获取数据

上手过程按照国际惯例先扫了扫默认密码区,结果发现密码区防护做的相当的好,每个M1卡都有一个唯一的序列号,我们称为“UID”,是32位的,也就是4个字节。

注:其中每个data数据区为一个“块”。这样我们可以计算一下:16b* 4(块)*16(扇区)=1024B 就是1K。

第0扇区的块0(即绝对地址块),它用于存放厂商代码,已经固化锁死,不可更改。原来在实验室见过一个厂商代码没有锁死的M1被我玩了好久。。。。。

在全扇区加密时,通常用前三个“块”(0,1,2号块)存放数据,用最后一个”块“(3号块)存放密码。

其中密码分为A密码和B密码:前6个字节存放A密码,中间4字节为控制字段,后6字节存放B密码。

图片4.png

·M1卡是典型的高频卡,工作频率为13.56MHz,一般调频(FM)收音机接收的广播频率在87MHz到108MHz之间。而我们常说的路由器工作在2.4GHZ中。这个时候注意一个小科普,很多人分不清5G路由和5GLTE。导致很多人认为5G路由就是5G通讯技术的路由,这里进行一个更正 .一般路由是工作在2.4GHZ 频段下面的通讯信号,而所谓的5G路由是工作频率在5.8GHZ下的路由器。而5GLTE指的是第五代通讯技术,而逆向工程最好的方法就是了解他的基础结构,我们来看一下M1卡的工作通讯机制

言归正传,来看看M1卡的通讯通信速率:106KBPS,也就是说可以在10毫秒的时间内完成读写内容。

工作半径:100mm。大约在100mm以内的距离,可以使用读卡器对m1卡进行操作(一般写距离小于读距离)。

在使用proxmark3对M1卡进行破解时 ,我先用了默认密码扫描,结果发现卡的安全是很好的,没有默认密码

于是使用了有卡嗅探,网上很多人都在用proxmark3去暴力破解或者RPNG漏洞利用,对于proxmark3来说真的是大材小用。Proxmark3可以通过抓取卡与读卡器之间的通讯来解开相应的密码

破解中间我们可以看下M1卡的通讯工作流程图以更加好的了解工作原理:

图片12.png

这一过程比较简单,受益于Proxmark3的强大功能,通过PRNG和其他扇区的默认密码,很快就得出了全部扇区的数据,其中只有5扇区有数据存在。

ATQA : 00 04

UID : 01 02 03 04

SAK : 08 [2]

TYPE : NXP MIFARE CLASSIC 1k | Plus 2k SL1

proprietary non iso14443-4 card found, RATS not supported

第五扇区:

B9 27 00 00 46 D8 FF FF B9 27 00 00 14 EB 14 EB

B9 27 00 00 46 D8 FF FF B9 27 00 00 14 EB 14 EB

52 27 00 5A AA 16 01 00 32 27 00 00 14 EB 14 EB

32 21 80 12 34 56 FF 07 80 69 70 50 02 02 21 60

此时金额为101元

二、数据分析

这一般是最漫长的步骤,同样也是最烧脑的步骤。

这里我拿着水卡进行了多次消费,分别记录下每次的金额信息并进行对比

通过对比我们发现,在第五扇区标记处发生了变化,这里一开始还对我造成了误导。因为如果只看上图,仅仅计算标红的数字是不能得出结果的,经过多次实验,我发现第二位应该有所不同。

如果把这两位一起看,那么结果自然就出来了。

这张卡的金额是98.30元。我们将十六进制的66 26取倒序再转换为10进制,正好就得到了以分为单位的价格值,而中间的99D9正是6626按位取反后的结果(校验位)。

三、测试

我们尝试改变一下卡内金额,将66 26改为 AF 99(十进制:39343),也就是393.43元。

测试成功

四、总结

经过这次分析,我们发现一些现在仍在广泛使用的IC卡 Mifare经典芯片(简称MI芯片) 存在着不小的安全隐患,同样在密码的设置上一些公司并没有深思熟虑。

2009年,工业和信息部发布了《关于做好应对部分IC卡出现严重安全漏洞工作的通知》,要求各地各机关和部门开展对IC卡使用情况的调查及应对工作。主要应用于IC卡系统的MI芯片的安全算法已遭到破解!目前全国170个城市的约 1.4亿张应用此技术的IC卡也都将面临巨大的安全隐患。

对此的解决方案也有很多种,最好的就是更换CPU卡,此类卡片目前还没有破解方法。并且可以不把卡片内作为金额的存储区,而是存储在远程服务器,M1卡只存储卡号,这样就避免了金额被篡改的风险。

在此提醒各位想要对IC卡动手的朋友:勿贪图小利,勿非法使用,遵守法律法规

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180722G08GYF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券