免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
聚合网络安全,存储安全技术文章,融合安全最新讯息
01
为什么要研究NFC卡
现在市面上很多的手表、手环和手机都具有NFC的功能。上周我也购买了个智能手表,心想既然手表有NFC功能,就想着把小区的门禁卡放到手表中,以后出入就不需要带门禁卡了,出门又能少拿一样东西。结果悲剧发生了:
经过一番折腾,终于把小区门禁卡成功写入手表了,以后出门不用带卡了,现在就把我模拟门禁卡的方法写给大家。
02
背景介绍
首先我们先了解一下我们平常使用的门禁卡,目前nfc门禁卡大致可分为IC卡与ID卡,ID卡不可写入,且固定编号;IC卡可以擦写,且固定编号。这里笔者的卡可以被物业改写梯控信息,显然是IC卡。既然是IC卡,那么我们就可以复制,改写内容。
NFC是什么?
NFC是Near Field Communication的缩写,译为近场传输。“近场传输”又可理解为是一种近距离(10cm内)的高频无线通信技术,能够与其他设备进行通信,实现电子设备间的数据交换。
NFC有什么功能?
NFC设备可以用作非接触式智能卡、智能卡的读写器终端以及设备对设备的数据传输链路。其应用广泛,目前最常用的实用功能为为读取(从海报上的智能标签读取网址)、移动支付(简单的付款功能)、设备连接(文件传输)等。
NFC的应用场景
1.门禁使用:小区、车库、水卡等。
2.交通卡使用:公交、地铁等。
3.数据传输: 把两个带有NFC功能的电子设备相连接,然后进行点对点的数据传输即可,支持图片、视频、音乐、通讯录等内容传输。
4.信息浏览:当你想了解一些信息时,只需把手机靠近想了解的物品就可以知道。如当手机贴近银行卡时,就可以知道银行卡的基本信息和交易记录。
5.移动支付:银行卡,苹果支付等。
Mifare卡
Mifare卡是一个很大的称呼,其下有多个产品分支,粗略分一下,大致有Mifare Classic系列,MifareUltralight系列和Mifare Desfire系列,其中,Mifare Classic系列有1K和4K两种内存大小的产品,,所提到的Mifare,均指Mifare Classic 1K/4K,1K/4K表示内存区域大小,Mifare Classic 1K又称M1卡。
Mifare Classic卡有四种不同的容量:
320字节,也被称作MINI卡,S20卡
1k字节,也被称为S50卡,最常见的型号
2k字节
4k字节,也被称为S70卡
如果自己不清楚卡类型,可尝试选择1k卡,这是最常见的型号。
我们小区的卡,是M1卡,所以我们这篇文章主要介绍M1卡。
M1卡的格式介绍
Mifare S50和Mifare S70又常被称为Mifare Standard、Mifare Classic、MF1,是遵守ISO14443A标准的卡片中应用最为广泛、影响力最大的的一员。而Mifare S70的容量是S50的4倍,S50的容量是1K字节,S70的容量为4K字节。读写器对卡片的操作时序和操作命令,二者完全一致。
Mifare S50和Mifare S70的每张卡片都有一个4字节的全球唯一序列号,卡上数据保存期为10年,可改写10万次,读无限次。一般的应用中,不用考虑卡片是否会被读坏写坏的问题,当然暴力硬损坏除外。
Mifare S50和Mifare S70的区别主要有两个方面。一是读写器对卡片发出请求命令,二者应答返回的卡类型(ATQA)字节不同。Mifare S50的卡类型(ATQA)是0004H,Mifare S70的卡类型(ATQA)是0002H。另一个区别就是二者的容量和内存结构不同。
Mifare S50把1K字节的容量分为16个扇区(Sector0-Sector15),每个扇区包括4个数据块(Block0-Block3,我们也将16个扇区的64个块按绝对地址编号为0~63),每个数据块包含16个字节(Byte0-Byte15),64*16=1024。
每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0扇区)的第一段(0段),也称为厂商段,其中前4个字节(就是前8位,两位一个字节)是卡的UID,第5个字节是卡UID的校验位,剩下的是厂商数据。
每个扇区都有一组独立的密码及访问控制,放在每个扇区的最后一个Block,这个Block又被称为区尾块,S50是每个扇区的Block3。
每个扇区的区尾块为控制块,包括了6字节密码A、4字节存取控制、6字节密码B。
新卡的出厂密码一般是密码A为A0A1A2A3A4A5,密码B为B0B1B2B3B4B5,或者密码A和密码B都是FFFFFFFFFFFF。
密码A是永远也读不出来的,如果用户的数据块指定了验证密码A却忘了密码A,也就意味着这个数据块作废了,但本扇区其他数据块和其他扇区的数据块不受影响。
03
复制门卡
有了上面的这些知识,我们就可以对M1卡,进行复制和模拟了。
复制原理
M1卡在知道密码的情况下,数据总是可以读出来的。所以现在手表不能模拟卡的原因,主要是因为没有密码。只要我们要想办法把密码搞出来,就可以把卡内的数据读出来进行卡复制卡了。所以我们现在的首要目标是找到密码。
首先用MCT软件,对我们要模拟的卡,进行一下读取,发现很多扇区由于有密码所以数据无法读出。
要用到的工具
MCT: 有名的M1卡读取软件,大家可以在各大商店上,自行下载。
PM3: 用来读取,破解M1密码的硬件设备。
如何得到卡中的密码
想要得到卡中的密码有2种方式:
1.利用漏洞,得出密码(值得窃喜的是,我现在的这张的卡是有漏洞的卡),所以,今天这篇文章,主要讲以这种方式来获取密码。
2.嗅探的方式,算出密码。
利用漏洞,获取卡中密码
M1卡的漏洞,主要有以下几种:
1.暴力破解
因为M1是被动卡,需要读卡器为之供能,一旦读卡器切断电源,卡中临时数据就会丢失,所以无论试错多少次密码都不会被锁定。我们可以用一些厂商默认弱密码,进行暴力破解。
2.重放攻击
重放攻击是基于M1卡的PRNG算法漏洞实现的。当读卡器读卡时就会产生随机序列,但卡本身不带电,所以每次断电后再重新连接,就会生成一模一样的序列,所以可能把这个序列算出来。只要控制好时间就能知道当卡获取能量后某一刻时间的随机序列,从而实现修改数据。
3.密钥窃听
利用工具Promark 3可以嗅探M1卡(即便是全加密卡)在和读卡器进行数据交换时的数据,然后利用XOR工具就能把扇区密钥算出来。
4.克隆卡片
因为M1卡加密扇区里面保存着各种数据,所以可以克隆一张带有同样数据的克隆卡。这就会用到一种叫UID卡的特殊M1模拟卡。前面说过,每张卡在0扇区的0块都会存放厂商代码,所以里面也保存了UID编号,是无法修改的。但是这种特殊的UID卡该区域没有设定保护,可以随意修改UID,因此可以制作一张与目标卡数据完全相同的克隆卡。
5.验证漏洞
当读卡器读卡的扇区时,卡会发一个随机序列给读卡器,读卡器收到序列后会利用自身算法加密该随机序列再反馈给卡,卡片接收后再用自己算法计算,如果结果一致就认为该读卡器是合法授权的,然后开始进行数据传输。这就产生了问题:当读卡器访问另一个扇区时,又会重复上述步骤,而此时卡片与读卡器之间的数据交换已被算法加密过,而这个算法又是由扇区密钥决定,因此就会导致这个密钥泄露。所以只要知道一个扇区的密钥,就能破解卡。
打开PM3利用漏洞对卡的密码进行破解。
读出密码:
有了密码,卡内的数据就可以读出来了。
模拟卡的流程
我们要用到的设备有4个:
1.门禁卡:能打开门的门禁卡。
2.NFC智能手表:最终要使用手表模拟NFC,来开门。
3.白卡:一张新卡,用来写入门禁卡的UID
4.PM3设备:破解密码和复制卡工具
以下是手表模拟门禁卡的流程:
门禁卡续期
通过对比卡上贴的有效时间:2016—2022年,可以发现这个地址就是卡有效期了。把截止日期,修改为2099年,那么这张门禁卡,就不会过期了。
应该如何保证门禁卡的安全?
1. 将M1卡换成CPU卡。
2. 禁止使用默认密码。
3. 禁止使用有漏洞的M1卡。
1
END
1
往期精彩推荐
●Flutter逆向初探
●密钥管理实践
●RSA-CRT 故障注入攻击
●PE文件签名信息检测
●联想集团第五届网络安全周活动圆满结束!
●隐私保护知多少
●横向联邦学习技术原理浅析
●Windows DLL劫持漏洞分析
●利用Firmadyne进行固件模拟
●构造溯源蜜罐——伪造MySQL服务端
CSL
联想GIC全球安全实验室(中国)
原文始发于微信公众号(联想全球安全实验室):NFC卡复制和修改
评论