使用Proxmark3进行MIFARE Classic卡的安全测试
使用Proxmark3进行MIFARE Classic卡的安全测试
Proxmark3的MIFARE安全测试是很多朋友都非常重视的一部分,所以我们特地以这个部分进行介绍,告诉大家如何当你完成前期操作之后,进行MIFARE CLassic卡类的安全测试操作。
首先,我们要把高频天线连接到Proxmark3的天线接口。当我们连接完成之后,我们就需要查看一下天线与Proxmark3是否连接正常并且正常电压为多少?
命令:hw tune 这个命令大概需要几秒的时间进行回显

有些朋友会问,当我输入完hw tune之后,是不是接下来就是输入hf tune呢?
我个人认为当你输入完hw tune之后就没有必要再次输入hf tune,这是多此一举的操作。
并且hf tune的命令实际上是为了当你需要调试手工高频天线而使用的。
当你输入完hw tune之后,窗口所显示的HF antenna后面的数值就是现在非工作状态下的电压,当你把相关的卡放在高频天线上面/下面的时候,电压就会所变化了(依然是非工作状态下)。

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

变化出来了!第三张hw tune的结果为8.57v,是因为我把一张125kHZ的门禁卡放在了高频天线上面,所以其电压的降幅很低,但是如果我把一张13.56MHz的卡放在 上面就好像第二张图片那样子,电压会降低会很多,有时候会是10v左右。从这个变化当中我们就可以初步识别出高频与低频卡的区别了
当确定需要测试的卡为13.56MHz卡之后,就开始需要深入的了解这卡的信息了!我们可以从hf命令集当中找到相关的命令
命令:hf 14a reader

什么是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导致恶意用户可以使用其进行卡的信息读取以及修改。
已知默认Key列表
- ffffffffffff
- b0b1b2b3b4b5
- 4d3a99c351dd
- 1a982c7e459a
- 000000000000
- d3f7d3f7d3f7
- 0a1a2a3a4a5
- aabbccddeeff
从列表当中你是否可以看出另外一个端倪呢?没错,Key的排列大部分都是ABAB/AABB这样子的。所以在你使用MIFARE Classic的时候,请不要使用默认的Key以及不要使用固定的排列,以免被恶意用户进行Key的穷举攻击。
命令: hf mf chk 0 A a0a1a2a3a4a5 检查0区Key A是否为a0a1a2a3a4a5
当命令回显为isOK:01 vaid key:a0a1a2a3a4a5

经过默认key的检测,我们发现测试卡当中存在一个默认key:a0a1a2a3a4a5。我们就可以利用这个默认Key进行区块的读取以及更进一步的操作了。有些童鞋就会问如何我们检测默认Key全部都不存在的情况下那怎么办?那样子我们就需要利用“从乌云的错误漏洞分析看Mifare Classic安全”所提到的PRNG漏洞进行测试了。
命令: hf mf mifare
当输入命令后,窗口会出现类似进度状态的显示……
这个时候就需要耐心去等待结果,因为整个过程花费的时间有快有慢。

当你在无法继续等候或者想停止该项操作的时候,请记住前面提到的“不要使用CTRL+C或者直接关闭窗口,而是选择按下你板子上的黑色按钮”, 否则你有可能会使得Proxmark3出现故障或者报错之类的情况出现。结果出现后,首先要判断的是Found invaid Key还是Found vaid key,如果是invaid key的话,就是代表基于PRNG的漏洞出现的Key是错误的,并非正确的Key来的。但是最起码可以证明卡是存在PRNG漏洞的。接下来就是记住数值当 中的Nt,这个数值将会被利用来进行第二次的PRNG漏洞的攻击测试
命令: hf mf mifare 524bb6a2
当输入命令后,窗口会再次进入进度状态,依然请记住耐心等待结果。并且如需停止,请按黑色按钮
因为基于PRNG的漏洞进行的破解,所以有时候会出现多次Nt的循环,这是很正常的结果,我们需要不断的利用Nt去进行真正Key的破解。整个过程是漫长而乏味的,所以我们才需要借用默认Key的检测来减少安全测试的耗时。
当使用hf mf mifare得出Key后,我们可以按照得到默认Key的后续操作一样,[读取卡中的区域信息]或者进行全卡所有区域的Key破解测试。
命令: hf mf nested 1 0 A a0a1a2a3a4a5 基于验证漏洞进行全卡区域Key破解
必须知道一个正确的Key方可进行相关的操作

这个操作的过程比较短暂,而且前提条件是必须存在一个正确的Key进行操作,否者就无法继续进行。基本上MIFARE Classic的安全测试就已经完成了,而基于一些全加密或者CPU兼容模式MIFARE Classic(Cryto-1算法)的卡,我们还可以使用嗅探的测试去进行测试。前提是要记住嗅探模式是需要在正常交互模式下进行的!不要以为用个读卡器读取一下卡就可以了
使用Proxmark3进行MIFARE Classic卡的安全测试的更多相关文章
- 复制MIFARE Classic卡
Mifare Classic 1K智能卡介绍及nfc-tools的使用 [原创]RFID安全之——ACR122U菜鸟初体验-『智能设备』-看雪安全论坛 复制MIFARE Classic小区门禁卡记录 ...
- 从乌云的错误漏洞分析看Mifare Classic安全
前言 12年2月初国内著名安全问题反馈平台-乌云发布了有关某公司员工卡的金额效验算法破解的安全问题.从整个漏洞分析来看,漏洞的提交者把员工卡的数据分析得非常仔细,以至很多刚刚接触或者未曾接触的都纷纷赞 ...
- MIFARE Classic S50技术详解
Mifare Classic 简介 MIFARE Classic是恩智浦半导体开发的可用于非接触式智能卡,符合ISO/IEC 14443 A类标准.用于公共交通票证等应用,还可用于各类其他应用有S20 ...
- 谈谈 Mifare Classic 破解
2008 年的时候,荷兰恩智浦(NXP)公司开发的 RFID 产品 Mifare Classic 就被破解了,黑历史在这里就不在具体说了,想详细了解可以自己 Google 百度.现在还是重点说说关于 ...
- [转]谈谈 Mifare Classic 破解
Mifare Classic 提供 1 Kb - 4Kb 的容量,现在国内采用的多数是 Mifare Classic 1k(S50)[后面简称 M1 卡] M1 卡有从 0 到 15 共 16 个扇区 ...
- Mifare Classic Tool(MCT)汉化版
2.0.4 到 2.0.6的更改: 注意:本汉化版本可能不稳定,与此发生的一切后果与作者和汉化者无关. Version : * Bugfix: Fixed crash which occurred i ...
- 破解简单Mifare射频卡密钥杂记
先要了解一点大学城浴卡用的是什么卡,经查证是Mifare S50卡,也有叫ISO14443A的(协议名).本来想看看大学城浴卡有没有安全漏洞,没想到浴卡公司在安全性上几乎是蔑视我们大学生的智商,虽然被 ...
- 由Mifare 1卡破解带来的危险以及应对方法
今年年初以来,一个消息的传出震惊了整个IC卡行业.最近,德国和美国的研究人员成功地破解了NXP的Mifare1芯片的安全算法.Mifare1芯片主要用于门禁系统访问控制卡,以及一些小额支付卡,应用范围 ...
- 射频识别技术漫谈(11)——Mifare系列卡的共性【worldsing笔记】
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...
随机推荐
- 字符串处理strcpy strcat函数的用法
C语言函数字符串处理strcpy strcat函数的用法: 1)strcat是用来连接两个字符串的,原型是char *strcat(char *dest,char *src),作用是把src所指字符串 ...
- 在 Ubuntu 系统安装 Redi laravel 5.2 引入第三方类
composer 安装类依赖包 很受用 也很方便 但是要是一个有一定规模的公司技术团队 因为要照顾大局 还是引入类好些 下面是引入类的方法 1.首先在app目录下创建一个新的文件夹,命名Tools(可 ...
- C++后台研发面试总结
前言: 从中秋到国庆这几天面试了几家公司,有大公司也有小公司,连续几天面试没有系统的整理整理,正好有时间系统的整理一下,好多考点牛客的大佬们都分享过了,虽然每个人的方向不相同,不过多看一些总能找到一些 ...
- 微信开发(一)SAE环境搭建
登录新浪sae平台,点击sae 点击创建新应用->继续创建 环境选择: 填好后点击创建应用 点击创建版本 点击链接可以访问,点击编辑代码可以在线编辑,代码上传可以是svn,git,可以在线上传 ...
- JavaScript三种数据类型之间的互转
一:number<===>string 数字类型和字符串类型之间的互相转换 number===>string 数字转字符串有三种方式: 1.在数字后面 +“ ”; 2.利用字符串的 ...
- CF438 The Child and Sequence
题意: 给定一个长度为n的非负整数序列a,你需要支持以下操作:1)给定l,r,输出a[l] + a[l+1] + ... + a[r] 2)给定l,r,x, 将a[l].a[l+1]......a[r ...
- JS延迟执行
<!DOCTYPE html> <html> <head> <title></title> <script type="te ...
- 【BZOJ 2054】 2054: 疯狂的馒头 (并查集特技)
Input 第一行四个正整数N,M,p,q Output 一共输出N行,第i行表示第i个馒头的最终颜色(如果最终颜色是白色就输出0). Sample Input 4 3 2 4 Sample Outp ...
- Codeforces 1103 C. Johnny Solving
Codeforces 1103 C. Johnny Solving 题目大意: 有一张 \(n\) 个点 \(m\) 条边的简单无向图,每个点的度数至少为 \(3\) ,你需要构造出两种情况之一 一条 ...
- Unity 播放音频文件
Unity 播放音频文件参考代码: public void Play(string strSoundName, float autoDestroyTime = 0f, bool bLoop = fal ...