1 PM3介绍

proxmark3是一款开源的RFID安全研究平台黑色按钮从图中我们可以看到左上方有一颗黑色按钮,这个按钮就是Proxmark3的功能键,主要用于启动嗅探模式以及停止进程功能,其中内置高频和低频天线,能够识别和读取大部分的RFID卡片,并且国产的PM3还可以通过转接头等工具和手机等智能设备进行连接,从而实现跨平台的使用。

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

2 RFID破解

前面对ID与IC之间的差别进行比较时得知,ID卡内的卡号读取无任何权限,易于仿制.IC卡内所记录数据的读取,写入均需相应的密码认证,甚至卡片内每个区均有不同的密码保护,全面保护数据安全。所以这里对于RFID卡片的破解主要目标就是IC卡。

这里我们使用典型的飞利浦公司的16扇区64扇块M1卡作为实验对象,首先看一下这种卡片内部的数据存储形式。

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

常用的M1卡主要有荷兰恩智浦(NXP)公司生产的S50 和S70,都是属于MifareClassic家族的。以S50为例,国内兼容的最好的厂家是上海复旦微电子生产的FM11RF08芯片,区别是NXP原装S50芯片的前15个扇区的密码块的控制位是:FF078069,最后1个扇区的密码快的控制位是:FF0780BC。

国产复旦FM11RF08芯片的所有扇区的所有控制位均为:FF078069,其次看芯片第0扇区第0块的代码,从第10位开始看,如果后面是08040062636就是复旦的芯片,如果后面是08040023569就是贝岭芯片。

MifareClassic 1k共有16个扇区,分别为0-15个扇区;每个扇区有4块,分别为0-3块,每个块有32个字符;0扇区的0块为只读块,只存储厂商代码和UID号。

其他每个扇区的前3块为数据库,最后一块为密码块。密码块的前12个字符为A区密码,中间8个字符为控制位,后面12个字符为B区密码。

控制位主要是读卡器在验证卡的时候所用到的,不同的控制位表示不同的验证方式。

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

结合上图,我们可以来计算一下MifareClassic 1K的真实容量,首先1扇区的0块为只读,所有扇区的3块都是固定的没有容量,那么真实容量就是:

32(每个块的容量)×3(每个扇区可写的块)×16(共16个扇区)-32(除去0扇区0块)=1504字节

1504字节比1k多出了480个字节,所以MifareClassic 1K 的真实容量将近1.5K

默认口令破解

IC卡在制造时制造厂商为了方便会将除0扇区之外的扇区的所有密码默认设置为FFFFFFFFFFFF,这就是IC卡片的默认密码,我们可以使用PM3对卡片的默认密码进行爆破。

早期的PM3要把高频天线连接到Proxmark3的天线接口,并且连接完成之后要查看一下天线与PM3连接之后的工作电压是否正常;国产的PM3工具在设计时就将高频天线和低频天线安装到一起,在使用时只需要实用工具对其电压等进行探测是否正常。由于PM3是一款开源的硬件产品,最早在2000左右就已经开始有人开始对其进行研究,所以现在相对的技术已经非常成熟,在外文资料中经常会看到一个PM3对应的利用工具,这个工具分为两种,一种是命令行下的利用工具,另外一种是英文的可视化图形界面。

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

但是这两款软件都有其对应的缺陷,在经过国人的二次开发之后推出了PM3 GUI版的利用工具。

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

软件中继承了绝大多数常见的软件,能够对RFID进行快速攻击。

首先使用数据线将PM3与电脑连接,并在设备管理器中查找相对应的串口。

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

连接成功后检测工作电压

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

将IC卡放置在高频卡读卡器位置,天线电压发生变化

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

高频天线电压下降非常明显,这就说明我们现在所持有的卡片为高频IC卡,下面尝试对器破解,首先先读取卡片类型。

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

什么是proprietary non-iso14443a card found,RATS not supported?

有时候Proxmark3在读取部分MIFARE Classic卡UID的信息时,因为无法得到RATS的返回信息,会判断为非ISO14443a标准的卡.国内有太多MIFARE Classic类的卡,并不是NXP出产的,所以Proxmark3就会出现了这样子的提示!

同时还会提示是否是中国后门卡,这也是因为IC可修改UID的卡片是中国人首先研究出来的,所以被统称为中国后门卡。后面我们会有详细的介绍。

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

通常当我们拿到相关的卡的时候,我们应该先用chk命令去检测一下测试卡是否存在出厂时遗留的默认Key,因为使用默认的Key导致恶意用户可以使用其进行卡的信息读取以及修改。

已知的部分默认Key列表

nffffffffffff

nb0b1b2b3b4b5

n000000000000

na0a1a2a3a4a5

naabbccddeeff

n714c5c886e97

na0478cc39091

PM3程序中内置了一个默认密码列表,并会自动阐释使用者以列表中的密码进行探测。

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

并且通过默认密码扫描功能成功读取了除1扇区和2扇区的山区密码

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

这是利用嵌套认证漏洞使用任何一个扇区的已知密匙,获取所有扇区的密匙,此漏洞成功率较高,这个漏洞也被称作知一密求全密,我们现在已经知道其中的几个扇区的默认密码,使用PM3的知一密求全密的功能对扇区1、2进行破解

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

成功破解出1、2扇区的密码。

利用PRNG漏洞破解

MIFARE Classic采用的是Crypto-1私有加密算法,其算法的特点就是对称式的密码算法或者说是私钥密码系统。其主要组成部分是伪随机数发生器(PRNG)、48位的线性反馈移位寄存器(LFSR)以及非线性函数。由于算法当中的Filter Function的设计出现缺陷,导致改变线性反馈移位寄存器的后8位数值就有可能得到所对应的Keystream。这个缺陷类似于802.11b WEP算法,不同的明文有极高的可能性被相同的Keystream,使得整个加密算法出现了漏洞。

Proxmark3基于PRNG的安全缺陷是进行随机数碰撞,利用PRNG的安全缺陷我们可以很快速地得到对应的密钥,从而进行进一步的破解操作。

如果我们无法进行基于PRNG的安全缺陷破解的时候,很大可能是因为卡类增加了对应的机制(增加了防碰撞机制)以及修复了漏洞。

命令:hfmf mifare当输入命令后,需要耐心等待,整个过程花费的时间有快有慢。

结果出现后,首先要判断的是Found invaidKey还是Found vaidkey,如果是invaidkey的话,就是代表基于PRNG的漏洞出现的Key是错误的,并非正确的Key来的。但是最起码可以证明卡是存在PRNG漏洞的。接下来就是记住数值当中的Nt,这个数值将会被利用来进行第二次的PRNG漏洞的攻击测试

命令:hfmf mifareNT值

当输入命令后,窗口会再次进入进度状态,依然请记住耐心等待结果,并且如需停止,请按黑色按钮

因为基于PRNG的漏洞进行的破解,所以有时候会出现多次Nt的循环,这是很正常的结果,我们需要不断的利用Nt去进行真正Key的破解。整个过程是漫长而乏味的

RFID伪造

前面提到过中国后门卡,这里给大家讲解一下中国后门卡的原理的发展。

在早期RFID技术开始兴起时,卡片的价格还比较高昂,随着后期这项技术的关注程度越来越高,中国的很多厂商也考试对这项技术进行研究,并很快研究出了和M1系列卡片功能一致且价格极其低廉的卡片,但是后期有一部分人发现这种卡片在使用时有的需要实现相同功能,但是卡片又没有办法复制,所以就开始研究一种能够复制UID的卡片,并在后期成功研制出能够进行复制的卡片,这就是早期的CUID卡,这种卡片能够在正常使用时间内无限次的修改卡片的UID,并能够实现和市场上流通的卡片相同的功能。

后来很多厂商发现了这一问题,开始研究如何对后门卡进行预防,随后出现一大批能够检测中国后门卡的方案,其中大部分方案都是利用中国后门卡的自身的功能对其中的uid进行修改测试,如果机器判断能够修改UID,即停止对这张卡进行服务。

后来研究人员又对后门卡进行升级,然后推出了FUID卡,这种卡片和CUID卡相类似,但是它有一个特性就是在出场之后只能对其UID进行一次修改,一次修改完毕之后机会将0扇区锁死,无法再次修改,这种方案成功绕过了场上的检测机制。ID卡片的发展机制与之类似。

下面进行IC卡的复制实战,首先将卡中数据全部读取并写入到编辑区

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

放上空白的S50卡片,并点击克隆到空白S50卡片,待写入成功之后即可将数据写入到空白卡中。并能够使用复制之后的卡片进行河源卡一样的操作。

RFID嗅探

RFID嗅探也是一种非常常见的RFID攻击方式,对于一些卡片我们无法使用默认密码或者PRNG漏洞攻破其密码,但是我们仍然可以使用嗅探的方式对其进行攻击,从而嗅探出密码。

点击GUI软件中的现场有卡嗅探按钮,或者在命令行下输入hf 14a snoop

然后将卡片读卡器和PM3按照如下顺序进行放置

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

待嗅探完成之后按下PM3左侧按钮,并在命令行下输入hf list 14a命令查看嗅探结果。

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

并使用工具计算出扇区密码

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

【原创】Proxmark3系列教程1——PM3用法-LMLPHP

——by laohei

无线安全技术交流:QQ:2834283053

04-30 23:52