关于卡片破解的事情,我在先前有过一段时间的研究,但之前没有做过系统的总结,也没有对破解过程做过记录。最近刚好有这方面需求,所以想着重新捡起来一下,对这方面做一份总结。
市面上常用的RFID卡片可以分为以下几种类型。
一、ISO 14443 -Type A标准高频卡片
1、Mifare S50 (M1)
M1卡的使用频率为13.56Mhz,这是目前最常用的高频卡,属于IC卡的一种。它的每张卡有独一无二的UID号,可存储或者修改数据,类似卡片有(学生卡。饭卡,公交卡,门禁卡)
M1卡的结构和存储数据可以参考下图。M1卡储存的数据大小为8k,分为16个扇区,每个扇区分4个块,每个块为16个字节,以块为存取单位。每个扇区都有独立的一组密码及访问控制,每张卡有唯一的一个32位的序列号。每个扇区的0,1,2块为数据块,用来存储数据,第3块为控制块,包括了密钥A、存取控制、密钥B,每张卡的第0扇区的第0块用来存储厂商代码,不可更改。
按照图中,校验位的计算方法如下。
前 4 个字节为 UID 卡号,第 5 个字节为校验字节,校验字节 = 前 4 个字节单独连续异或。
比如 DD ^ DC ^ 8B ^ C9 = 43。
中间4字节控制字是管理密码权限,用来设置A密码和B密码的功能。默认不修改的时候,可以用A密码读写所有数据。A密码不可读出,B密码可以用A密码读出。密码不一定可以读取,由控制字决定。
这个卡又分 非加密卡 、半加密卡 和 全加密卡。
非加密卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF。
而加密卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密卡,所有扇区都加密的卡称全加密卡。
2、Mifare UID(UID)
UID卡是属于M1卡的变异版本,可修改UID卡,俗称的魔术卡,可以克隆完整的 M1 S50 的数据。它实际上用起来和M1 S50完全一样,只是多了一个功能,就是0扇区块的数据可以随意修改。因此UID号也可以随意修改,厂家信息也可以随意修改。UID卡修改0扇区0块数据是靠指令进入工厂模式,可以直接对全卡任何数据编辑,不需要密码即可读写卡,同时不怕写坏卡,即使写错0块,写坏扇区控制字,也可以随时修复回来,不影响后续使用。
3、CUID
CUID卡是针对UID卡做的优化。CUID卡可以重复修改0块,但是它和UID卡的区别是,UID卡是通过指令修改0块,CUID使用的是常规密码验证的方法写0块(写错了之后重写需要清卡),其他扇区和标准M1卡相同。但如果写错了UID号的校验位会导致无法读卡,这会使卡报废。
4、FUID
FUID卡是针对UID卡做的优化。新的读卡系统,通过检测卡片对特殊指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能。FUID可以修改0块,但只可以修改一次,写错也没办法更改,也不能重复利用。修改后和M1卡完全一样,很难被屏蔽检测。
5、CFUID
鉴于FUID卡写错的成本太高,又发展出了这种卡。 CFUID卡 0扇区固化前可随意修改(相当于UID卡),固化(锁卡)后就跟M1卡完全一样。
二、ISO 14443 -Type B标准高频卡片
跟ISO 14443 -Type A 标准 的不同主要在于载波的调制深度及位的编码方式。TYPE A采用开关键控(On-Off keying)的Manchester编码,TYPE B采用NRZ-L的BPSK编码。
TYPE B与TYPE A相比,具有传输能量不中断、速率更高、抗干扰能力强的优点。RFID的核心是防冲突技术,这也是和接触式IC卡的主要区别。ISO14443-3规定了TYPEA和TYPE B的防冲突机制。二者防冲突机制的原理不同,前者是基于位冲突检测协议,而TYPE B通信系列命令序列完成防冲突。
目前的二代身份证,社保卡,护照都是基于此标准,研究这个标准最初是为了能读出身份证信息或者护照。
三、低频卡
1、ID卡
说到低频卡,最广泛使用的便是ID卡了。这种卡片的频率一般在125khz左右,特点是只能读不能写。一般是以EM4XX开头的,而EM4095芯片就是专门用来读取ID卡的功能模块。
现在广泛采用的多是一种无源、唯一序列号的 ID 卡片,制造厂家在产品出厂前已将此序列号固化,不可更改。它的工作原理是卡上有环行线圈,线圈连接IC组成谐振电路,其频率与读写的发射频率相同。读写器发送电磁波使ID卡谐振电路产生共振并产生电流作用于 ID 芯片,这就是 ID 卡的读写原理。国内目前所说的 ID 卡俗称通常指与 EM4100 完全兼容的ID低频芯片卡,也有人称为 EM 卡。
ID 卡多使用在公司,小区安防等,针对具体应用,可将持卡人的个人资料送入后台计算机,建立数据库并配置应用软件,使用时通过读卡器将读到的卡号送至后台计算机,从数据库中调出持卡人的个人资料,而后根据具体进行操作。
由于ID 卡的构造简单,根据设备的频段读取设备信息,然后根据读取的信息,重新写入到新卡中,ID 卡因为没有存储和加密的功能,所以读出的只是一串号码,把号码重新写入到新卡就可以完成复制了。
2、T5577(可修改ID卡)
这种类型的卡片,特点是可以用来克隆ID卡,出厂设置就是空卡。直接往里面写数据即可完成卡片克隆,所以没有太多可展开的内容。
四、破解思路
当然,想要破解RFID卡片,首要的便是分清楚卡的类型是什么,我们主要可以将卡的类型分为IC卡和ID卡两种类型。
ID卡的攻击思路如下:
读卡片ID→换白卡→写入ID卡号→克隆完成→攻击成功
非常简单,因为ID卡总体上不涉及过多加密过程。
IC卡****的总体思路如下: 漏洞测试→获取全卡数据→换上UID卡→写入数据→攻击成功 如果执行数据修改,思路如下: 漏洞测试→读全卡数据→解密卡片数据→破解厂商算法→修改数据→攻击成功。
IC卡****攻击思路如下: 1.获得任意扇区的密码 1.1 PRNG漏洞攻击得到0扇区的密码 1.2 默认密码扫描获得密码 1.3 嗅探读卡机和卡片交互的时候获得密码,这种方式需要现场进行交互,不太方便。
2.利用 MFOC漏洞,可以暴力破解得到所有扇区的密匙。
以上这些思路,利用proxmark3工具即可完成。
后续待补充实际攻击案例。
参考链接
1、https://cloud.tencent.com/developer/article/1490410