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卡。