hacktricks/src/todo/radio-hacking/pentesting-rfid.md

100 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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** — EM4100EM4102。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}}