欢迎光临
我们一直在努力
"

Mifare安全缺陷分析

介绍

现在使用RFID卡变得越来越普遍。在一般情况下RFID卡分为两种类型有源和无源,有源系统虽然有一个自己的能量来源,无源系统一般依靠笔记本或读卡器提供能量。其中常见RFID卡中Mifare最为经典,芯片由恩智浦出品的芯片缩写(全称NXP Mifare1系列),常用于S50型,芯片利用PVC封装、感应天线、然后通过压制而成,俗称M1卡。工作频率13.56MHz环境工作,卡内有串联谐振电路,当频率与读写器相同,在电磁波激励下发生共振,当电荷达到2V时,将其卡内数据发射或接受读写器数据。全球有超过650个城市使用交通卡是基于Mifare Classic系列,广泛用于城市/校园一卡通、公交卡、门禁系统、身份证明、电子钱包等不同类型,完全符合ISO / IEC 14443型标准,对于Mifare Classic加密使用是CRYPT01密码。这个是由恩智浦开发的专业加密算法。该算法基于HITAG2算法,该算法由于制造商保密。但是这中一个所谓“security through obscurity”实现安全性并不是一个比较好解决方案。黑客Nohl和来自Chaos Computer Club(混沌计算机俱乐部) Pl¨otz 通过逆向工程研究出其算法秘密。通过本文展现他们重新设计算法和那些社会公布众所周知可能的攻击。

MIFARE有哪些?

常用MIFARE Classic分两种,MIFARE Classic 1K和4K版本,现在国内采用多用多数是是Mifare Classic 1k(S50)[后面简称M1卡],而以后的测试也大多是基于M1卡展开。M1卡片上存在一个1K EEPPROM存储器,每张卡片分16扇区具有4个块,每个块包含16个字节。这使得M1一共有64块,每张M1卡具有个全球唯一的UID号,每个UID号保存在卡内0扇区的第一个段(0段),也是俗称厂商段,其中四个前四个字节是卡的UID,第五个字节通常为卡的UID效验位剩下就是厂商数据。并且这段通常在出厂之前会被设置写入保护,只读不可写,当然市面上也存在一种特殊UID卡,因为其厂商没有按照规范生产卡片导致,在0扇区的0段没有设置写入保护,在每个扇区的第四个段是用来保存每个扇区密码(KEYA、KEYB)和控制位M1,由此M1卡允许每个扇区设置不同独立密码来更加灵活控制数据操作,控制位就是扇区各种权限计算出的结果。结构如图1所示

image001

 

MIFARE Classic可能实现的攻击

这里列举部分可能出现的安全问题,当然破解M1卡不仅仅只有这几种办法,但是对于目前国内环境已经足够,伪造卡片、伪造终端、伪造交易等等都是可能发生的。

首先我们来假设一个实验环境,国内大部分卡片发行机构基本都是采取以下结构来对卡片进行发放和管理,下面我们从攻击者角度来看问题。

image003

 

从上结构图可发现,由于卡片没有进行多次验证和有效管理等措施,从而可以实现攻击事件导致安全事故发生。

实验采用常用读卡器,。ACR122U是基于PN532所开发的一个RFID套件,除了Mifare Classic之外还支持许多类型的RFID标签,兼容libnfc并提供了丰富的API接口供开发使用,实在是入门级RFID工具如图所示,当然此外一部带有NFC手机也可实现部分功能。

image005

 

TOP1:暴力破解

暴力破解是破解工作最后致胜法宝,当然代价是惨痛的要消耗庞大人力和物力,什么密码都能破解。当然在CPYPTO1算法细节还没泄露之前,最有效办法就是爆破,当然在还有一个很重要一点,在开头提到过就是M1属于被动卡,自身不能提供能量,必须靠第三方提供能源,所以一旦切断电源,卡中临时数据就会丢失,如同内存刷新一般,这样就无从记录攻击者究竟输入多少次密码,所以由此来对卡片进行暴力破解,密码肯定会出来。当然国内很多厂商对于卡密都没有进行修改大部分都是弱密码如下:

FFFFFFFFFFFF

A0A1A2A3A4A5

D3F7D3F7D3F7

000000000000

A0B0C0D0E0F0

A1B1C1D1E1F1

B0B1B2B3B4B5

通过MFOC(全称Mifare Classic Offline Cracker,是由国外安全研究团队nethemba发布,)是Linux下命令行工具。当然荷兰安全研究团队针对MFOC进行修改并且加入荷兰公交系统支持OV Crad支持发布了MfocGUI FOR windows,这里演示为linux版本,其他用法大同小异。(linux版本作者使用:kali-linux 1.0.5),首先测试读卡器与目标卡连通性如图:

image007

通过kali-linux自带NFC工具集来对卡片进去相关操作。

image009

通过MFOC对目标鉴别,M1类型卡片,列举卡内结果对于无法识别区域进行破解。

image011

对于破解完成会在root文件夹生成dump文件。通过十六进制编辑器即可查看卡内结构如图

BDDBEF3C为UID号,后面分别为效验位和厂商数据。

image013

至此完成对该卡乃至整个系统分发卡片暴力破解。

TOP2重放攻击

重放攻击是基于M1卡PRNG算法漏洞实现,当卡接近读卡器获得能量时候,就会随机生成数序,但这个问题,如暴力破解,因为M1卡为被动式卡片,本身不自带电源,所以断电数据无法保存,至此基于LSRF的PRNG算法缺陷显而易见,每次断电后重新接入电流,卡片会生成一个一摸一样的序列,所以我们就有可能计算出这个序列,所以把握好时间在一定时间内在获得能量随机数是多少,然后进行重放攻击,就可以篡改正常数据,同时由于已知分发卡片管理系统没用更好对卡片进行验证从而对所发放M1卡片。如图所示,卡片数据位于为10扇区,数据段为本扇区0段卡内第41块,通过多次对比测试5807d82FF8BD为数据段,在消费后数据讲次记录数据进行对卡片写入完成数据重放攻击。

image015

TOP3卡片克隆

如电影中特工进入某机密地点,要对门禁系统进行伪造身份获取进入权限。一样当前M1卡广泛用于门禁、身份识别系统中,由于M1卡自带扇区可以保存数据所以大部分卡片选择加密扇区后将数据保存在里面,通过特殊M1模拟卡片,前面已经提到对每张M1卡片0删除的第一段进行写入保护,此种UID卡没有此限制,所以随意修改。我们就能如图特工一般克隆一张一模一样卡片,当然前提需要卡片内部结构。

通过MOFC也能对进行实现如图(…..)

TOP4密钥窃听

同样由于 PRNG算法漏洞导致,通过Proxmark3(由Jonathan Westhues设计并且开发的开源硬件,其主要用RFID的嗅探、读取以及克隆等的操作)当卡片与授权读卡器进行数据交换时候进行窃听,即可tag数据读取出来,对于全加密M1卡片同样可以窃取。

Top5验证漏洞

验证漏洞目标是使用最多M1破解手段,在读卡器尝试去读取一个扇区时候,卡片首先会发出随机数给读卡器,读卡器接到随机数之后利用自身算法加密将加密随机数据在反馈给卡,卡将自己算法计算,发现结果一直时认为该读卡器为授权,然后开始通过算法加密会话跟读卡器进行数据交换。同时在读取其他扇区时,卡片又会重复刚刚步骤,但此时卡片跟读卡器直接数据传输已经加密,而这个算法又是扇区密钥决定,从而导致密钥被泄露出来,因此验证漏洞要求我们至少需要一个扇区密钥,但是国内只对数据扇区进行加密,其他扇区没有加密,因此很容易破解。

Top6伪造交易

由于卡片与读卡器数据交换进行加密操作,很多厂商对于数据段只进行扇区加密没有对消费数据进行处理,导致很多数据明文存储或算法太弱直接逆向,导致伪造交易出现如充值等等。如图所示:

image017

 

结束语:

由于越来越多漏洞和攻击被披露,恩智浦公司决定发布新的RFID 标签为MIFARE Plus,新卡片不在采用专用算法而是利用高级的加密标准(AES),新的标签也支持MIFARE Classic,由此提供了从旧MIFARE Classic到MIFARE Plus慢慢迁移的可能性。荷兰运输系统已经更换OV Chip-Kaart,提供更好PRNG已经防范信道攻击。类似卡,如伦敦Oyster卡,用于伦敦公共交通,该计划正在进行中,计划升级到不同系统中。再次证明通过“security through obscurity”不可行了。它应该如AES这已知更好让公众接受标准,而不是保持密码算法秘密来保证他的安全性。

转载请注明:来自legend‘sblog

转载请注明: 转载自Legend‘s BLog

本文链接地址: Mifare安全缺陷分析



未经允许不得转载:Legend‘s BLog » Mifare安全缺陷分析

分享到:更多 ()

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

无觅相关文章插件,快速提升流量