# Pentesting RFID
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
## Introduction
**Ідентифікація за радіочастотою (RFID)** є найпопулярнішим рішенням для короткочасного радіозв'язку. Зазвичай його використовують для зберігання та передачі інформації, що ідентифікує об'єкт.
RFID-мітка може покладатися на **своє джерело живлення (активна)**, таке як вбудована батарея, або отримувати живлення від антени зчитування, використовуючи **індукований струм від отриманих радіохвиль** (**пасивна**).
### Classes
EPCglobal ділить RFID-мітки на шість категорій. Мітка в кожній категорії має всі можливості, зазначені в попередній категорії, що робить її зворотно сумісною.
* **Клас 0** — це **пасивні** мітки, які працюють у **UHF** діапазонах. Постачальник **попередньо програмує** їх на виробництві. В результаті ви **не можете змінити** інформацію, що зберігається в їх пам'яті.
* **Клас 1** мітки також можуть працювати в **HF** діапазонах. Крім того, їх можна **записати лише один раз** після виробництва. Багато міток класу 1 також можуть обробляти **циклічні контрольні суми** (CRC) команд, які вони отримують. CRC — це кілька додаткових байтів в кінці команд для виявлення помилок.
* **Клас 2** мітки можуть бути **записані кілька разів**.
* **Клас 3** мітки можуть містити **вбудовані датчики**, які можуть записувати параметри навколишнього середовища, такі як поточна температура або рух мітки. Ці мітки є **напівпасивними**, оскільки, хоча вони **мають** вбудоване джерело живлення, таке як інтегрована **батарея**, вони **не можуть ініціювати** бездротову **комунікацію** з іншими мітками або зчитувачами.
* **Клас 4** мітки можуть ініціювати комунікацію з іншими мітками того ж класу, що робить їх **активними мітками**.
* **Клас 5** мітки можуть забезпечувати **живлення для інших міток і спілкуватися з усіма попередніми класами міток**. Мітки класу 5 можуть діяти як **RFID-зчитувачі**.
### Information Stored in RFID Tags
Пам'ять RFID-мітки зазвичай зберігає чотири види даних: **ідентифікаційні дані**, які **ідентифікують** **об'єкт**, до якого прикріплена мітка (ці дані включають поля, визначені користувачем, такі як банківські рахунки); **додаткові дані**, які надають **додаткові** **деталі** щодо об'єкта; **контрольні дані**, що використовуються для внутрішньої **конфігурації** мітки; та **дані виробника** мітки, які містять Унікальний Ідентифікатор мітки (**UID**) та деталі щодо **виробництва**, **типу** та **постачальника** мітки. Перші два види даних ви знайдете у всіх комерційних мітках; останні два можуть відрізнятися в залежності від постачальника мітки.
ISO стандарт визначає значення Ідентифікатора Сімейства Застосувань (**AFI**), код, який вказує на **тип об'єкта**, до якого належить мітка. Інший важливий реєстр, також визначений ISO, — це Ідентифікатор Формату Зберігання Даних (**DSFID**), який визначає **логічну організацію даних користувача**.
Більшість **контролів безпеки RFID** мають механізми, які **обмежують** **читання** або **запис** операцій на кожному блоці пам'яті користувача та на спеціальних реєстрах, що містять значення AFI та DSFID. Ці **механізми блокування** використовують дані, збережені в контрольній пам'яті, і мають **за замовчуванням паролі**, попередньо налаштовані постачальником, але дозволяють власникам міток **налаштовувати власні паролі**.
### Low & High frequency tags comparison
## Low-Frequency RFID Tags (125kHz)
**Мітки низької частоти** часто використовуються в системах, які **не вимагають високої безпеки**: доступ до будівель, ключі домофонів, картки членства в спортзалі тощо. Завдяки їх більшій дальності, їх зручно використовувати для платного паркування: водієві не потрібно підносити картку близько до зчитувача, оскільки вона активується з більшої відстані. Водночас мітки низької частоти є дуже примітивними, вони мають низьку швидкість передачі даних. З цієї причини неможливо реалізувати складну двосторонню передачу даних для таких речей, як підтримка балансу та криптографія. Мітки низької частоти лише передають свій короткий ID без жодних засобів аутентифікації.
Ці пристрої покладаються на **пасивну** **RFID** технологію та працюють у **діапазоні від 30 кГц до 300 кГц**, хоча зазвичай використовують 125 кГц до 134 кГц:
* **Довгий діапазон** — нижча частота означає більший діапазон. Є кілька зчитувачів EM-Marin та HID, які працюють на відстані до метра. Їх часто використовують на парковках.
* **Примітивний протокол** — через низьку швидкість передачі даних ці мітки можуть лише передавати свій короткий ID. У більшості випадків дані не аутентифіковані і не захищені жодним чином. Як тільки картка потрапляє в зону дії зчитувача, вона просто починає передавати свій ID.
* **Низька безпека** — ці картки можна легко копіювати або навіть зчитувати з кишені іншої людини через примітивність протоколу.
**Популярні протоколи 125 кГц:**
* **EM-Marin** — EM4100, EM4102. Найпопулярніший протокол у СНД. Може бути зчитаний з відстані близько метра через свою простоту та стабільність.
* **HID Prox II** — протокол низької частоти, представлений HID Global. Цей протокол більш популярний у західних країнах. Він складніший, а картки та зчитувачі для цього протоколу відносно дорогі.
* **Indala** — дуже старий протокол низької частоти, який був представлений Motorola, а пізніше придбаний HID. Ви менш імовірно зустрінете його в природі в порівнянні з попередніми двома, оскільки він виходить з використання.
Насправді існує набагато більше протоколів низької частоти. Але всі вони використовують однакову модуляцію на фізичному рівні і можуть вважатися, так чи інакше, варіацією тих, що наведені вище.
### Attack
You can **attack these Tags with the Flipper Zero**:
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md" %}
[fz-125khz-rfid.md](../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
{% endcontent-ref %}
## High-Frequency RFID Tags (13.56 MHz)
**Мітки високої частоти** використовуються для більш складної взаємодії між зчитувачем і міткою, коли потрібна криптографія, велика двостороння передача даних, аутентифікація тощо.\
Їх зазвичай можна знайти в банківських картках, громадському транспорті та інших безпечних пропусках.
**Мітки високої частоти 13.56 МГц є набором стандартів і протоколів**. Їх зазвичай називають [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), але це не завжди правильно. Основний набір протоколів, що використовується на фізичному та логічному рівнях, — це ISO 14443. Протоколи високого рівня, а також альтернативні стандарти (такі як ISO 19092), базуються на ньому. Багато людей називають цю технологію **Ближньою Поле Комунікацією (NFC)**, терміном для пристроїв, що працюють на частоті 13.56 МГц.
Простими словами, архітектура NFC працює так: протокол передачі обирається компанією, що виготовляє картки, і реалізується на основі низькорівневого ISO 14443. Наприклад, NXP винайшла свій власний високорівневий протокол передачі, званий Mifare. Але на нижньому рівні картки Mifare базуються на стандарті ISO 14443-A.
Flipper може взаємодіяти як з низькорівневим протоколом ISO 14443, так і з протоколом передачі даних Mifare Ultralight та EMV, що використовується в банківських картках. Ми працюємо над додаванням підтримки Mifare Classic та NFC NDEF. Докладний огляд протоколів і стандартів, що складають NFC, варто окремої статті, яку ми плануємо опублікувати пізніше.
Усі картки високої частоти, основані на стандарті ISO 14443-A, мають унікальний ідентифікатор чіпа. Він діє як серійний номер картки, подібно до MAC-адреси мережевої картки. **Зазвичай UID має довжину 4 або 7 байтів**, але рідко може **досягати 10**. UID не є секретом, і їх легко прочитати, **іноді навіть надруковані на самій картці**.
Існує багато систем контролю доступу, які покладаються на UID для **аутентифікації та надання доступу**. Іноді це відбувається **навіть** тоді, коли RFID-мітки **підтримують криптографію**. Таке **неправильне використання** знижує їх до рівня дурних **карток 125 кГц** з точки зору **безпеки**. Віртуальні картки (як Apple Pay) використовують динамічний UID, щоб власники телефонів не могли відкривати двері за допомогою свого платіжного додатку.
* **Низька дальність** — картки високої частоти спеціально розроблені так, щоб їх потрібно було розташовувати близько до зчитувача. Це також допомагає захистити картку від несанкціонованих взаємодій. Максимальна дальність зчитування, яку нам вдалося досягти, становила близько 15 см, і це було з виготовленими на замовлення зчитувачами великої дальності.
* **Складні протоколи** — швидкості передачі даних до 424 кбіт/с дозволяють складним протоколам з повноцінною двосторонньою передачею даних. Що, в свою чергу, **дозволяє криптографію**, передачу даних тощо.
* **Висока безпека** — безконтактні картки високої частоти ні в чому не поступаються смарт-карткам. Є картки, які підтримують криптографічно стійкі алгоритми, такі як AES, і реалізують асиметричну криптографію.
### Attack
You can **attack these Tags with the Flipper Zero**:
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-nfc.md" %}
[fz-nfc.md](../todo/radio-hacking/flipper-zero/fz-nfc.md)
{% endcontent-ref %}
Or using the **proxmark**:
{% content-ref url="../todo/radio-hacking/proxmark-3.md" %}
[proxmark-3.md](../todo/radio-hacking/proxmark-3.md)
{% endcontent-ref %}
## References
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}