1. 前言
因工作需要,整个了PM3,简单写下收集到的资料吧。具体的攻击效果和实际利用的话,懒得打码处理放出来了。
2. 硬件设备
- 变色龙电源开关
- 变色龙切换键
- 变色龙电源键
- 变色龙USB口
- PM3停止键
3. 软件使用
3.1 UID卡基本操作
USB连接后,会默认选择好端口,状态提示已连接
放置UID卡于IC卡读卡区域,先读卡类型,然后一键自动解析
未加密卡,一键自动解析数据即可
拿到解密数据,即可换卡,然后选择写UID卡,一键复写。
3.2 CUID卡操作
CUID卡操作与UID卡相同,但解析数据后显示不太相同。CUID卡获取到密码显示在密码区(0-15 A/B)变蓝色并打钩(UID不显示蓝色也不打钩)
4. 基本知识
4.1 IC卡和ID卡判断
- 光照法
圆形大多是ID卡,方形大多是IC卡
- NFC法
拿一部带有NFC功能的手机打开NFC,卡片靠近手机会响的是IC卡,不会响的是ID卡。
- 借助工具
把卡放在低频区读ID/HID或放在高频区读卡类型,哪个能读出来就是哪个型号。
ps:卡片外形和型号无关,相同的芯片可以封装成完全不同的外形。
ID和IC是2种不同型号的卡,不可以相互替用,各有各的复制卡。
4.2 高频卡
4.2.1 M1 S50卡介绍
目前最常见的高频卡,也是我们口中俗称的IC卡。M1卡存储的数据大小为8k,分为16个扇区,每个扇区4块,每个块为16个字节,以块为存取单位。每个扇区中都有独立的一组密码及访问控制,每张卡有唯一的一个32位的序列号。每张卡的第0扇区的第0块用来表示厂商代码,不可更改。
中间4字节控制字是管理密码权限,用来设置A密码和B密码的功能。默认不修改的时候,可以用A密码读写所有数据。A密码不可读出,B密码可以用A密码读出。密码不一定可以读取,由控制字决定。
4.2.2 M1 UID卡介绍
- M1 UID卡是国内针对M1 S50卡特制的变种卡,使用效果同M1 S50完全一致,但对0扇区块的数据可以随意修改。因此UID号也可以随意修改,厂家信息也可以随意修改。如图显示”YES”表示是UID卡,但是有些兼容性不好的UID卡会显示NO,兼容性不好的卡使用两种软件都可以写入,但是读出数据时,中文GUI读不出,英文GUI可以读出缺失最后一块的不完整数据。
- UID卡修改0扇区0块数据是靠指令进入工厂模式,可以直接对全卡任何数据编辑,不需要密码即可读写卡,写过的卡不用清楚也可以直接重复写,同时不怕写坏卡,即使写错0块,写坏扇区控制字,也可以随时修复回来,丝毫不影响后续使用。
优点:UID的卡可以完美赋值M1 S50卡,做到UID号也完全一样。读卡机如果有验证UID号也可通过。
缺点:现在新的读卡系统,有通过检测卡片对特殊指令的回应,可以检测出UID卡,因此可以拒绝UID卡的访问,来达到屏蔽复制卡的目的。
4.2.3 FUID卡
FUID卡是针对UID卡做的优化。新的读卡系统,通过检测卡片对特殊指令的回应,可以检测出UID卡,因此可以拒绝UID卡的访问,来达到屏蔽复制卡的功能。FUID可以修改0块,但只可以修改一次,写错也没办法更改,也不能重复利用。修改后和M1卡完全一样,很难被屏蔽检测。
4.2.4 CUID卡
CUID卡是针对FUID卡做的优化。CUID卡可以重复修改0块,但是它和UID卡的区别是,UID卡是通过指令修改0块,CUID使用的是常规密码验证的方法写0块,其他扇区和标准M1卡相同。缺点是,还是有可能会被检测出来,而且如果不小心写错了UID号的校验位导致无法读卡,没办法修复只能报废。
4.2.5 UFUID卡
UID卡和FUID卡的结合版,可以手动控制0块锁死,0块锁死前为UID卡,锁死后就变成了FUID卡。我们一般使用CUID卡即可,不必购买更高成本的FUID和UFUID,除非你确信自己操作无误且CUID卡无法通过验证。
4.3 低频卡
4.3.1 ID卡介绍
ID卡是我们的俗称,内部芯片的全名叫做EM1400或EM41XX。每张卡出场就有独一无二的ID号,不可改写。
4.3.2 T5577卡
T5577 卡是一种可以写入数据可以加密的低频卡。最特别之处是,写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡。T5577一共有8个块,每个块只能存8位数。第0块是用来设置卡片类型和调制方式的,决定了卡片是ID卡还是HID卡,如果随意修改会导致读不到卡。最后一个块,在没有加密时是数据区,加密后,其数据就变成了密码。结构如下
4.4 IC卡结构
4.4.1 IC卡数据结构
4.4.2 IC卡日期格式
序号 | 名称 | 十六进制 | 十进制 | 备注 |
---|---|---|---|---|
1.康拓系统时间 | 四位日期 4位1 | C79F | 2099.12.31 | 转2进制,1100 011 ,1100, 11111->99,12,31 |
2.立林日期 | 4位2 | E3FC | 2099.12.31 | E3转二进制去最高位转十进制为99,FC转二进制留后数转十进制为12月 |
3 | 卡拉德日期 6位3 | 03A9E7 | 2099.12.31 | ???? |
4 | 明码日期6位 | 991231 | 2099.12.31 | 年.日.月 |
5 | 明码日期倒6位 | 311299 | 2099.12.31 | 日.月.年 |
6.富士通 | 暗码倒六位 | 1F0C63 | 2099.12.31 | 1F-0C-63转10进制31-12-99 |
7 | 暗码6位1 | 630C1F | 2099.12.31 | 63-0C-1F转10进制99-12-31 |
8 | 暗码6位2 | 833C1F | 2099.12.31 | 833-C-1F转10进制2099-12-31 |
9 | 暗码6位3 | 833CF8 | 2099.12.31 | 833-C-F8/8 |
10 | 明码正8位 | 20991231 | 2099.12.31 | 2099-12-31 |
11 | 明码倒8位 | 31129920 | 2099.12.31 | 31-12-9920 |
12 | 暗码8位1 | 14630C1F | 2099.12.31 | 14-63-0C-1F转10进制20-99-12-31 |
13 | 暗码8位2 | 08330C1F | 2099.12.31 | 0833-0C-1F转十进制2099-12-31 |
14 | 暗码倒8位1 | 1F0C6314 | 2099.12.31 | 1F-0C-63-14转10进制31-12-99-20 |
15 | 暗码倒8位2 | 1F0C3308 | 2099.12.31 | 1F-0C-3308->倒序1F-0C-0833转十进制31-12-2099 |
16 | 暗码倒8位3 | 33080C1F | 2099.12.31 | 3308-0C-1F->倒序0833-0C-1F转十进制2099-12-31 |
4.5 M1卡破解原理及方式
4.5.1 mifare卡的基本认证协议
当 MIFARE Classic卡接近读卡器的磁场区域时,卡片会接收到读卡器发来的寻卡指令,然后按照防冲突协议发出自己的卡号UID(寻卡过程)。收到UID后,读卡器会选择这张卡(选卡过程)。接着读卡器发出对某一块的认证请求,然后就开始了一个标准的三步认证协议。卡片产生一个随机数nT并以明文方式发送给读卡器。金接着读卡器发出他的随机数nR和对卡片的应答aR。最后卡片返回一个对读卡器的应答aT。从nR开始,所有的数据都会被加密,也就是说nR,aR,aT会与密钥流ks1,ks2,ks3抑或以后再发送出去。过程如图
4.5.2 Crypto1算法
MIFARE卡的安全性,主要依赖于基本认证协议和流加密算法Crypto1。无论是认证还是加密,都需要卡中密钥的参与,密钥流由Crypto1算法生成。Crypto1算法由1个48bit的线性反馈移位寄存器和1个两层的20bit输入1比特输出的非线性函数组成。48bitLFSR的密钥初始化以一定的方式产生流秘钥。
国外研究者提出了一些不同的攻击方法,荷兰奈梅亨Raboud 大学F. D. Garcia 教授等人提出的攻击方案是其中效率较高的。这种攻击方法主要是利用了密码结构本身的弱点:非线性函数的抽头只取奇数位,从而把密钥搜索空间从48 位降低到20 位。文献的研究结果表明,在获得一组完整的基本认证数据的条件下,攻击者就可以恢复出原始密钥。
4.5.3 MIFARE系统的攻击过程
在现实环境中,MIFARE 应用系统开发商根据实际需要,往往以三种不同的方式来实现上述基本认证协议。我们对于MIFARE Classic 卡的攻击直接建立在对这三种认证方式的攻击之上。为此,我们首先需要侦听MIFARE Classic卡与读卡器之间的交互数据。利用这些数据和F. D. Garcia给出的Crypto1 攻击方法,即可破译卡中的相应扇区密钥,并利用扇区的访问控制策略实现卡内数据的复制和篡改。
侦听交互数据
我们使用侦听工具来截获卡与读卡器之间的通信数据。为了恢复出密钥,我们需要截取一次合法卡与读卡器之间的完整的基本认证数据。
攻击基于基本认证协议的三种认证方式
实际中,不同的应用系统所使用的认证方式是不同的,大致上可以分为三类:第一类,无密码认证;第二类,单扇区认证;第三类,多扇区认证。
1. 无密码认证
对于一些简单的系统或者一个系统中的某些简单的应用(如某些门禁),只验证明文卡号的合法性,不使用任何密码保护,所需的其他数据均从后台数据库中取出,而非从卡中读出。因此,它没有认证部分的流程,而只有寻卡和选卡部分的流程。这种认证过程可用如图所示的流程来表示。
其中,a ~ f为一次完整的寻卡选卡流程,但f之后并没有认证过程,而是又重新进行寻卡选卡(g ~ h),此后也一直进行此过程。也就是说,这些系统没有使用MIFARE 卡的安全特征,而是单纯的读取卡号。如果卡号不在应用系统定义的黑名单中,则以此卡号在白名单中查找,找到则返回所需信息,找不到则认为认证失败。显见,攻击者只要能制作或找到一张卡号相同的卡,则该卡就会被系统误认为是合法的。
我们对此类认证方式下的交互过程进行了仿真实验,所侦听到的通信过程及数据如表1所示。
2. 单扇区认证
有些系统的交互流程是每次寻卡选卡后都只与一个特定扇区进行认证。这类系统或者只使用了一个扇区,或者认证新的扇区时都会重新进行寻卡选卡。这类认证协议如图所示,其中a~f 与图中一致。注意到从g 开始读卡器发送认证指令,h~j 是一个完整的基本认证过程,此后开始传输加密的指令以及数据(即第k 步);与一个扇区的交互完成后,读卡器根据应用系统的设计要求,可以重新开始寻卡过程。如此反复进行,直到交互结束。
我们通过仿真实验给出了单扇区认证方式下的通信过程及数据。可以看出,读卡器在与卡进行成功认证(第10 步)后发送了经过加密的指令(即第11 步),然后卡返回了一个18 字节长的加密数据(第12 步)。
这里,可以通过表中第 08~10 步的数据算出一个密钥0x4C4D0A2C0CF3。这个过程在一台普通的计算机上大概需要8M 内存并在几秒内可以完成。接着我们就可以解密出:第11 步的明文为30 04 26 EE,表示读04 块。接下来第12 步为04 块中的16 字节数据和两字节的校验。
3. 多扇区认证
相比前两种认证方式,多扇区认证具有更好的安全性,因此往往被一些安全要求较高的应用系统所采用。该认证方式的特点是:第一次扇区的认证采用基本认证协议方式,从第二次扇区认证开始,所有的交互过程都是加密的,直到一次完整的交互结束。这个过程如图2(c)所示,其中a~k与图2(b)中一致。注意到,第k步完成后读卡器并没有发送新的寻卡指令,而是直接发送加密的认证请求,读卡器接着发送的随机数也是加密的(第m步),这与前面的认证过程不同,之后都与前面的认证过程相同。这时,由于第二次认证请求卡片再发送随机数都是密文的,使得我们无法获得随机数明文数据。因此,我们通过穷举所有可能的随机数(2的16次方个)来计算密钥,这时我们大约需要做2的16次方次单扇区认证解密的离线计算时间。通过一些如校验位等的漏洞可以减少尝试的随机数,以提高破译密钥的速度。
表3给出了我们实验仿真的多扇区认证的过程。
第13步读卡器直接发送了加密的认证指令,而第14步是一个加密的随机数。根据第0810 步的数据,我们花费了几秒的时间就计算出第一步认证的密钥是0x307E00DFD5D6。再根据第1416 步的数据穷举卡发送的随机数,计算出第二步认证的密钥为0x2A9E0E770EFF。这次我们大概花费几个小时的离线计算时间。接着我们依次解密出:第17 步的明文为30 08 4A 20,表示读08 块;第18 步为08 块中的16字节数据和两字节的校验。
复制、篡改卡片
从理论上讲,获得了MIFARE Classic 的密钥,卡片的安全性就已经丧失。对于攻击者来说,他们会利用密钥来复制一张相同的卡或者将此卡片按照自己的目的进行修改,给实际应用带来危害。
对于攻击者来说,获得密钥之后只需一台支持MIFARE Classic 卡的读卡器就可以将一张合法卡的内容全部复制出来,写入另外一张空白卡片中,而系统并没有办法区分这两张卡片是不同的。实际中,尽管MIFARE Classic 空白卡片的UID 是预先固定的,但攻击者可以使用其他类型的支持MIFARE Classic 标准的卡片或者一些硬件设备来模拟MIFARE Classic卡。因此,从根本上说,UID 也是可以修改的。
攻击者还可能篡改卡的内容,就是直接改写卡内的数据。通过对卡内数据(如金额)的存储格式以及是否有完整性保护或者备份进行分析,攻击者就可以对卡片中的内容进行有目的的篡改。对于存在完整性保护的卡片(即有数据的校验等机制),复制仍然是无法抵御的,因为复制同样也把正确的校验位复制到新的卡中。对于篡改,攻击者可以重放历史数据,以达到修改数据的目的。
其他攻击方法
前面所提到的攻击都是基于可以同时与合法的卡或读卡器接触,但是攻击者仍可以使用其他攻击方法,不同时与卡或者读卡器接触。如攻击者可以分别与卡和读卡器交互,先与卡通信获得UID,再与读卡器交互,破译密钥;在读卡器不检测UID 合法性的系统中,攻击者可以直接用非法UID 与读卡器交互也能破译所需密钥;攻击者还可以在只获得合法的卡片,在不需要合法读卡器的情况下,破解出卡中的密钥。
5. 配置文件
5.1 default_keys.dic
1 | # |
5.2 default_pwd.dic
1 | # known cloners |
6. 参考文档
1 | 常见RFID卡片介绍、破解思路 及 Proxmark3简介: |
发布时间: 2022-11-21
最后更新: 2023-10-06
本文标题: PM3使用
本文链接: https://foxcookie.github.io/2022/11/21/PM3使用/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!