Proxmark3使用案例

来自RadioWar Wiki
跳转至: 导航搜索

使用Proxmark3进行MIFARE Classic卡的安全测试

Proxmark3的MIFARE安全测试是很多朋友都非常重视的一部分,所以我们特地以这个部分进行介绍,告诉大家如何当你完成前期操作之后,进行MIFARE CLassic卡类的安全测试操作。

首先,我们要把高频天线连接到Proxmark3的天线接口。当我们连接完成之后,我们就需要查看一下天线与Proxmark3是否连接正常并且正常电压为多少?

命令:hw tune  这个命令大概需要几秒的时间进行回显

Hw tune.jpg

有些朋友会问,当我输入完hw tune之后,是不是接下来就是输入hf tune呢?

我个人认为当你输入完hw tune之后就没有必要再次输入hf tune,这是多此一举的操作。并且hf tune的命令实际上是为了当你需要调试手工高频天线而使用的。

当你输入完hw tune之后,窗口所显示的HF antenna后面的数值就是现在非工作状态下的电压,当你把相关的卡放在高频天线上面/下面的时候,电压就会所变化了(依然是非工作状态下)。

Hw tune2.jpg

从图中我们可以看到,当卡没有放到天线的情况下电压为9.22v,而卡放在天线之后电压将为3.9v,现在的电压依然是为非工作电压,但是从这个现象当中我们会得到很多非常有意义的数据。

Hw tune3.jpg

变化出来了!第三张hw tune的结果为8.57v,是因为我把一张125kHZ的门禁卡放在了高频天线上面,所以其电压的降幅很低,但是如果我把一张13.56MHz的卡放在上面就好像第二张图片那样子,电压会降低会很多,有时候会是10v左右。从这个变化当中我们就可以初步识别出高频与低频卡的区别了

当确定需要测试的卡为13.56MHz卡之后,就开始需要深入的了解这卡的信息了!我们可以从hf命令集当中找到相关的命令

命令:hf 14a reader

14a rader.jpg

什么是RATS?RATS是Request for answer to select (选择应答请求)
什么是proprietary non-iso14443a card found,RATS not supported? 

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

从图中的信息我们可以看到的是现在读取的卡[ATQA]为04 00,从NXP的识别文档我们可以看到类似的信息。通常ATQA为04 00数值的卡,大部分都是MIFARE Classic或者是CPU兼容模式下的MIFARE Classic。

当我们可以确定卡类型之后就可以针对其特性进行相关的安全测试了,我之前在RadioWar写过一篇关于MIFARE Classic安全的文章“从乌云的错误漏洞分析看Mifare Classic安全”,介绍了MIFARE Classic系列卡类主要的安全问题,通常当我们拿到相关的卡的时候,我们应该先用chk命令去检测一下测试卡是否存在出厂时遗留的默认Key,默认的Key A/Key B是使得MIFARE Classic系列雪上加霜的主要成因,因为使用默认的Key导致恶意用户可以使用其进行卡的信息读取以及修改。


点击查看相关的Mifare classic默认密钥列表


从列表当中你是否可以看出另外一个端倪呢?没错,Key的排列大部分都是ABAB/AABB这样子的。所以在你使用MIFARE Classic的时候,请不要使用默认的Key以及不要使用固定的排列,以免被恶意用户进行Key的穷举攻击。

命令: hf mf chk 0 A a0a1a2a3a4a5 检查0区Key A是否为a0a1a2a3a4a5
当命令回显为isOK:01 vaid key:a0a1a2a3a4a5

Mf chk.jpg

经过默认key的检测,我们发现测试卡当中存在一个默认key:a0a1a2a3a4a5。我们就可以利用这个默认Key进行区块的读取以及更进一步的操作了。有些童鞋就会问如何我们检测默认Key全部都不存在的情况下那怎么办?那样子我们就需要利用“从乌云的错误漏洞分析看Mifare Classic安全”所提到的PRNG漏洞进行测试了。

命令: hf mf mifare  
当输入命令后,窗口会出现类似进度状态的显示......,这个时候就需要耐心去等待结果,因为整个过程花费的时间有快有慢。

Hf mf mfiare.jpg

当你在无法继续等候或者想停止该项操作的时候,请记住前面提到的“不要使用CTRL+C或者直接关闭窗口,而是选择按下你板子上的黑色按钮”,否则你有可能会使得Proxmark3出现故障或者报错之类的情况出现。结果出现后,首先要判断的是Found invaid Key还是Found valid key,如果是invalid key的话,就是代表基于PRNG的漏洞出现的Key是错误的,并非正确的Key来的。但是最起码可以证明卡是存在PRNG漏洞的。接下来就是记住数值当中的Nt,这个数值将会被利用来进行第二次的PRNG漏洞的攻击测试

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

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

Mifare1.jpg

当使用hf mf mifare得出Key后,如图我们执行hf mf mifare后会得到Found valid key的结果,这个就好像刚刚上面说的PRNG破解成功了,我们可以按照得到默认Key的后续操作一样,[读取卡中的区域信息]或者进行全卡所有区域的Key破解测试。

命令: hf mf nested 1 0 A a0a1a2a3a4a5  基于验证漏洞进行全卡区域Key破解
必须知道一个正确的Key方可进行相关的操作

Hf mf nested.jpg

这个操作的过程比较短暂,而且前提条件是必须存在一个正确的Key进行操作,否者就无法继续进行。基本上MIFARE Classic的安全测试就已经完成了,而基于一些全加密或者CPU兼容模式MIFARE Classic(Cryto-1算法)的卡,我们还可以使用嗅探的测试去进行测试。前提是要记住嗅探模式是需要在正常交互模式下进行的!不要以为用个读卡器读取一下卡就可以了

利用Proxmark3监听M1卡交互过程,算出某一区的key

一、非独立模式(Proxmark3连接电脑)

1、正常连接Proxmark3到电脑,进入Proxmark3交互终端。

2、终端输入命令

 hf 14a snoop (此时,板子上黄色灯(LED_A)亮)

3、将高频天线放置Reader之上,让Reader正常读卡。(如果Reader正常工作,Proxmark3就能监听到正常通信数据,此时绿色(LED_B)灯亮。保持嗅探状态多读取几次,板子上红色(LED_C)灯与绿色(LED_B)灯会交替变亮,等到绿(LED_B)、黄(LED_A)灯都是亮的状态时可以停止嗅探。)

4、等待大约5秒,按下板子上的按钮。(短按,按一下OK了。)此时板子上的LED灯都灭掉。

5、回到命令终端输入

 hf 14a list  (此时会列出嗅探到的数据。数据结构和算key方法,参照下面截图。)

Snoop.jpg

二、独立模式(Proxmark3外置供电)

1、外置电源为Proxmark3供电,DIY便携外置电源参照RadioWar的DIY属于自己的Proxmark3″便携版“

注意:此处需要一条T型MiniUSB数据连接线,两头标准USB(一个传输数据连接电脑[USB_A],以下称UA;另一个供电连接移动电源[USB_B],以下称UB),一头MiniUSB连接PM3。 Lianjie.jpg

2、将UB接上移动电源保持通电,UA接入电脑进入Proxmark3交互终端。

3、终端输入命令

 hf 14a snoop (此时,板子上黄色灯(LED_A)亮)

Snoop11.jpg

4、拔出连接电脑的UA,移动电源保持通电,将PM3高频天线放置Reader之上,让Reader正常读卡。(如果Reader正常工作,Proxmark3就能监听到正常通信数据,此时绿色(LED_B)灯亮。保持嗅探状态多读取几次,板子上红色(LED_C)灯与绿色(LED_B)灯会交替变亮,等到绿(LED_B)、黄(LED_A)灯都是亮的状态时可以停止嗅探。)

5、移动电源保持通电,将UA重新接入电脑,按下板子上的按钮。(短按,按一下OK了。)此时板子上的LED灯都灭掉。等待3~5秒,待USB重新加载后,进入Proxmark3终端输入

 hf 14a list  (此时会列出嗅探到的数据。数据结构和算key方法[工具],参照下面截图。)

Snoop2.jpg

利用Proxmark3独立模式克隆T55x7型卡

1、按住按钮三秒左右启动进入独立模式。(此时,板子上先交替闪烁红黄绿2秒左右,最后红色灯亮)。

2、红色LED灯亮后,按下并按住按钮3秒左右,直到第二个红色LED亮起。

3、现在天线放上你想克隆的T55x7型卡,第二个红色LED灯会熄灭。

4、然后天线上放置空白T55x7型卡,按住按钮3秒左右的时间,直到第一次红色LED灯和橙色的LED灯亮起。

5、当橙色LED灯熄灭后,卡已被克隆!Enjoy it !

 利用这样的方法,可以读取和克隆HID卡,无需要使用电脑!


Proxmark3 LED含义解析

首先,pm3有4个LED,两红,一黄,一绿。单独的红LED为LED_D连续的红黄绿分别为LED_C、LED_A、LED_B,注意,我没有笔误,LED_A是中间的黄LED。

在运行hf mf mifare 命令时

 LED_D亮的含义为天线上电。
 LED_C会一直闪,说明在破解循环中
 LED_A亮起说明找到正确的奇偶校验
 LED_B每次亮起或熄灭意味着遇到了了相同的nt,亮第4次key就破解出来了


测试题外话

Q:整个测试流程下来就是如此,但是有些童鞋会有个疑问,为什么和某些人提供的使用文档不一样?

A:首先,某些JS提供的文档在整个流程是存在很严重的错误的。

注意列表:

  • 当你收到Proxmark3的时候,应该询问你的供应商Proxmark3现在的版本是多少?并且要其提供对应该版本的客户端,请不要随意麻木相信网上教程所提供的客户端,特别是Proxmark3_win_bins_beta的客户端,该客户端不属于现有发布的固件版本以及销售板的固件版本,如果使用该文件的客户端会出现客户端报错、程序崩溃、命令缺失等情况出现。
  • 在不懂得使用Proxmark3的情况下,请不要使用Proxspace或者SVN去下载最新的固件文件以及编译最新的固件文件!因为你不懂得相关的操作以及后续的影响可能会很大!
  • hw tune之后根本不必要再使用hf tune
  • hf 14a snoop必须要在正常模式下进行操作,offline(离线模式)下是不可能得到完整的握手过程的。请不要使用hf 14a reader之后使用hf 14a snoop,这是没有意义的!
  • 在没有进行chk去检测默认key的情况下,请不要使用hf mf rdbl 0 a FFFFFFFFFFFF,这个命令的意思是使用Key A为FFFFFFFFFFFF读取0区域的信息。如果你的卡不存在FFFFFFFFFFFF的默认Key,你这个命令是没有意义的。
  • 请永远记住一点,网络信息发达,不是每条信息都是有用可以帮助自己的,需要多听多问多对比!否则会出现很多不必要的麻烦以打击你对于Proxmark3的使用以及对于RFID安全的兴趣。
  • 所有的智能卡都有自己的加密算法或者安全机制!不可能平白无故就可以给你得到卡中的数据或者把整个卡的数据Dump出来给你分析。当你排除了卡自身的安全来说的话,这个世界就不存在安全!因为你根本不懂安全


Proxmark3操作视频