mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
100 lines
7.6 KiB
Markdown
100 lines
7.6 KiB
Markdown
# Pentesting RFID
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Introduction
|
||
|
||
**射频识别 (RFID)** 是最流行的短距离无线解决方案。它通常用于存储和传输识别实体的信息。
|
||
|
||
RFID 标签可以依赖于 **自身电源 (主动)**,例如嵌入式电池,或通过读取天线接收来自接收无线电波的电流 **(被动)**。
|
||
|
||
### Classes
|
||
|
||
EPCglobal 将 RFID 标签分为六类。每个类别中的标签都具备前一类别中列出的所有功能,从而实现向后兼容。
|
||
|
||
- **Class 0** 标签是 **被动** 标签,工作在 **UHF** 频段。供应商在生产工厂 **预编程** 它们。因此,您 **无法更改** 存储在其内存中的信息。
|
||
- **Class 1** 标签也可以在 **HF** 频段工作。此外,它们在生产后只能 **写入一次**。许多 Class 1 标签还可以处理接收到的命令的 **循环冗余检查** (CRCs)。CRC 是命令末尾的几个额外字节,用于错误检测。
|
||
- **Class 2** 标签可以 **多次写入**。
|
||
- **Class 3** 标签可以包含 **嵌入式传感器**,可以记录环境参数,例如当前温度或标签的运动。这些标签是 **半主动** 的,因为尽管它们 **具有** 嵌入式电源,例如集成 **电池**,但它们 **无法发起** 与其他标签或读取器的无线 **通信**。
|
||
- **Class 4** 标签可以与同类的其他标签发起通信,使其成为 **主动标签**。
|
||
- **Class 5** 标签可以为其他标签提供 **电源并与所有先前的标签** 类别进行通信。Class 5 标签可以充当 **RFID 读取器**。
|
||
|
||
### Information Stored in RFID Tags
|
||
|
||
RFID 标签的内存通常存储四种数据:**识别数据**,用于 **识别** 标签所附着的 **实体**(这些数据包括用户定义的字段,例如银行账户);**补充数据**,提供有关实体的 **进一步** **细节**;**控制数据**,用于标签的内部 **配置**;以及标签的 **制造商数据**,其中包含标签的唯一标识符 (**UID**) 以及有关标签的 **生产**、**类型** 和 **供应商** 的详细信息。您会在所有商业标签中找到前两种数据;最后两种数据可能会根据标签的供应商而有所不同。
|
||
|
||
ISO 标准指定了应用程序系列标识符 (**AFI**) 值,这是一个指示标签所属 **对象类型** 的代码。另一个由 ISO 指定的重要寄存器是数据存储格式标识符 (**DSFID**),它定义了 **用户数据的逻辑组织**。
|
||
|
||
大多数 RFID **安全控制** 具有机制,**限制** 每个用户内存块以及包含 AFI 和 DSFID 值的特殊寄存器上的 **读取** 或 **写入** 操作。这些 **锁定** **机制** 使用存储在控制内存中的数据,并具有供应商预配置的 **默认密码**,但允许标签所有者 **配置自定义密码**。
|
||
|
||
### Low & High frequency tags comparison
|
||
|
||
<figure><img src="../../images/image (983).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
## Low-Frequency RFID Tags (125kHz)
|
||
|
||
**低频标签** 通常用于 **不需要高安全性** 的系统:建筑物访问、对讲机钥匙、健身会员卡等。由于其较高的范围,它们在付费停车时使用方便:司机无需将卡靠近读取器,因为它可以在更远的地方触发。同时,低频标签非常原始,数据传输速率低。因此,无法实现复杂的双向数据传输,例如保持余额和加密。低频标签仅传输其短 ID,而没有任何身份验证手段。
|
||
|
||
这些设备依赖于 **被动** **RFID** 技术,工作在 **30 kHz 到 300 kHz** 的范围内,尽管更常用的是 125 kHz 到 134 kHz:
|
||
|
||
- **长距离** — 较低的频率意味着更高的范围。有一些 EM-Marin 和 HID 读取器,可以在距离达一米的地方工作。这些通常用于停车场。
|
||
- **原始协议** — 由于数据传输速率低,这些标签只能传输其短 ID。在大多数情况下,数据没有经过身份验证,也没有以任何方式受到保护。只要卡在读取器的范围内,它就会开始传输其 ID。
|
||
- **低安全性** — 这些卡可以很容易地被复制,甚至可以从其他人的口袋中读取,因为协议的原始性。
|
||
|
||
**流行的 125 kHz 协议:**
|
||
|
||
- **EM-Marin** — EM4100,EM4102。CIS 中最流行的协议。由于其简单性和稳定性,可以在约一米的距离内读取。
|
||
- **HID Prox II** — HID Global 引入的低频协议。该协议在西方国家更为流行。它更复杂,且该协议的卡和读取器相对昂贵。
|
||
- **Indala** — 由摩托罗拉引入的非常古老的低频协议,后来被 HID 收购。与前两者相比,您在野外遇到它的可能性较小,因为它正在逐渐被淘汰。
|
||
|
||
实际上,还有更多低频协议。但它们都在物理层上使用相同的调制方式,可以被视为上述协议的某种变体。
|
||
|
||
### Attack
|
||
|
||
您可以 **使用 Flipper Zero 攻击这些标签**:
|
||
|
||
{{#ref}}
|
||
flipper-zero/fz-125khz-rfid.md
|
||
{{#endref}}
|
||
|
||
## High-Frequency RFID Tags (13.56 MHz)
|
||
|
||
**高频标签** 用于更复杂的读取器-标签交互,当您需要加密、大量双向数据传输、身份验证等时。\
|
||
它通常出现在银行卡、公共交通和其他安全通行证中。
|
||
|
||
**高频 13.56 MHz 标签是一组标准和协议**。它们通常被称为 [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/),但这并不总是正确。物理和逻辑层上使用的基本协议集是 ISO 14443。高级协议以及替代标准(如 ISO 19092)基于此。许多人将此技术称为 **近场通信 (NFC)**,这是一个用于在 13.56 MHz 频率上运行的设备的术语。
|
||
|
||
<figure><img src="../../images/image (930).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
简单来说,NFC 的架构是这样的:传输协议由制造卡片的公司选择,并基于低级 ISO 14443 实现。例如,NXP 发明了自己的高级传输协议,称为 Mifare。但在较低层面上,Mifare 卡是基于 ISO 14443-A 标准的。
|
||
|
||
Flipper 可以与低级 ISO 14443 协议以及 Mifare Ultralight 数据传输协议和用于银行卡的 EMV 进行交互。我们正在努力添加对 Mifare Classic 和 NFC NDEF 的支持。深入研究构成 NFC 的协议和标准值得单独撰写一篇文章,我们计划稍后发布。
|
||
|
||
所有基于 ISO 14443-A 标准的高频卡都有一个唯一的芯片 ID。它充当卡的序列号,类似于网络卡的 MAC 地址。**通常,UID 长度为 4 或 7 字节**,但很少可以 **达到 10**。UID 不是秘密,且很容易读取,**有时甚至印在卡片上**。
|
||
|
||
有许多访问控制系统依赖 UID 来 **进行身份验证和授予访问**。有时即使 RFID 标签 **支持加密**,这也会发生。这种 **误用** 使它们在 **安全性** 上降至愚蠢的 **125 kHz 卡** 的水平。虚拟卡(如 Apple Pay)使用动态 UID,以便手机用户不会用他们的支付应用打开门。
|
||
|
||
- **低范围** — 高频卡专门设计为必须靠近读取器放置。这也有助于保护卡免受未经授权的交互。我们所能达到的最大读取范围约为 15 厘米,而这还是使用定制的高范围读取器。
|
||
- **高级协议** — 数据传输速度高达 424 kbps,允许复杂的协议进行完整的双向数据传输。这反过来 **允许加密**、数据传输等。
|
||
- **高安全性** — 高频非接触卡在任何方面都不逊色于智能卡。有些卡支持强加密算法,如 AES,并实现非对称加密。
|
||
|
||
### Attack
|
||
|
||
您可以 **使用 Flipper Zero 攻击这些标签**:
|
||
|
||
{{#ref}}
|
||
flipper-zero/fz-nfc.md
|
||
{{#endref}}
|
||
|
||
或者使用 **proxmark**:
|
||
|
||
{{#ref}}
|
||
proxmark-3.md
|
||
{{#endref}}
|
||
|
||
## References
|
||
|
||
- [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|