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


    1 PM3介绍

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

     

    2 RFID破解

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

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

     

     

    常用的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区密码。

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

     

    结合上图,我们可以来计算一下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对应的利用工具,这个工具分为两种,一种是命令行下的利用工具,另外一种是英文的可视化图形界面。

     

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

     

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

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

     

    连接成功后检测工作电压

     

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

     

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

     

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

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

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

     

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

    已知的部分默认Key列表

    nffffffffffff

    nb0b1b2b3b4b5

    n000000000000

    na0a1a2a3a4a5

    naabbccddeeff

    n714c5c886e97

    na0478cc39091

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

     

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

     

     

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

     

     

    成功破解出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卡的复制实战,首先将卡中数据全部读取并写入到编辑区

     

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

    RFID嗅探

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

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

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

     

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

     

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

     

    ——by laohei

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

  • 相关阅读:
    [leetcode] Weekly Contest 170 Summary
    [Scala] java使用scala的jar包问题:Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Short
    [git] Updates were rejected because the tip of your current branch is behind its remote counterpart.
    [Android] Installation failed due to: ''pm install-create -r -t -S 4590498' returns error 'UNSUPPORTED''
    CTF 常见操作总结
    记项目管理大作业Web项目Mandrian的全流程[其一] 整体分析: 功能划分, 组织结构
    [leetcode] 题解记录 11-20
    [leetcode] 题解记录 1-10
    记一次配置阿里云ECS GPU计算型gn5实例
    shell脚本 入门 —— 符号篇
  • 原文地址:https://www.cnblogs.com/jayway0day/p/9212403.html
Copyright © 2020-2023  润新知