Pentesting RFID
Reading time: 10 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Introduction
Радіочастотна ідентифікація (RFID) — найпопулярніше рішення для радіозв'язку на короткі відстані. Зазвичай використовується для зберігання та передавання інформації, яка ідентифікує об'єкт.
RFID-мітка може живитись від власного джерела енергії (active), наприклад вбудованої батареї, або отримувати енергію від антени рідера за рахунок струму, індукованого прийнятими радіохвилями (passive).
Classes
EPCglobal ділить RFID-мітки на шість категорій. Мітка в кожній наступній категорії має всі можливості попередньої, що робить її сумісною в зворотному напрямку.
- Class 0 мітки — це passive мітки, що працюють в діапазоні UHF. Вендор передпрограмовує їх на виробництві. Внаслідок цього ви не можете змінювати інформацію, що зберігається в їхній пам'яті.
- Class 1 мітки також можуть працювати в HF діапазонах. Крім того, їх можна записати лише один раз після виробництва. Багато Class 1 міток також можуть обробляти cyclic redundancy checks (CRCs) команд, які вони отримують. CRC — це кілька додаткових байтів в кінці команд для виявлення помилок.
- Class 2 мітки можна пере записувати багаторазово.
- Class 3 мітки можуть містити вбудовані сенсори, які реєструють параметри навколишнього середовища, такі як температура або рух мітки. Ці мітки є semi-passive, бо хоча вони мають вбудоване джерело живлення, наприклад battery, вони не можуть ініціювати бездротову communication з іншими мітками чи рідерами.
- Class 4 мітки можуть ініціювати зв'язок з іншими мітками того ж класу, роблячи їх active tags.
- Class 5 мітки можуть забезпечувати питання енергії іншим тегам та спілкуватися з усіма попередніми класами. Class 5 мітки можуть виступати як RFID readers.
Information Stored in RFID Tags
Пам'ять RFID-мітки зазвичай зберігає чотири типи даних: ідентифікаційні дані, які ідентифікують об'єкт, до якого прикріплена мітка (ці дані включають поля, визначені користувачем, наприклад банківські рахунки); додаткові дані, які надають подальші деталі щодо об'єкта; дані керування, що використовуються для внутрішньої конфігурації мітки; та дані виробника, що містять унікальний ідентифікатор мітки (UID) та деталі щодо виробництва, типу та вендора мітки. Перші два типи даних присутні в усіх комерційних мітках; останні два можуть відрізнятись залежно від вендора.
Стандарт ISO визначає значення Application Family Identifier (AFI) — код, що вказує на тип об'єкта, якому належить мітка. Інший важливий регістр, також визначений ISO, — Data Storage Format Identifier (DSFID), який описує логічну організацію user data.
Більшість механізмів безпеки RFID мають способи обмеження операцій read або write над кожним блоком user memory та над спеціальними регістрами, що містять AFI та DSFID. Ці lock mechanisms використовують дані, що зберігаються в control memory, та мають паролі за замовчуванням, попередньо налаштовані виробником, але дозволяють власникам міток налаштувати свої паролі.
Low & High frequency tags comparison
.png)
Low-Frequency RFID Tags (125kHz)
Низькочастотні мітки часто використовують у системах, які не потребують високої безпеки: доступ до будівель, ключі домофону, карти абонентів спортзалів тощо. Через більший радіус дії вони зручні для платного паркування: водієві не потрібно підносити карту близько до рідера, оскільки вона спрацьовує з більшої відстані. Водночас низькочастотні мітки дуже примітивні, мають низьку швидкість передачі даних. Через це неможливо реалізувати складний двосторонній обмін даними для таких речей, як збереження балансу чи криптографія. Низькочастотні мітки лише передають короткий ID без жодних засобів автентифікації.
Ці пристрої базуються на passive RFID технології й працюють у діапазоні 30 kHz до 300 kHz, хоча зазвичай використовують 125 kHz — 134 kHz:
- Long Range — нижча частота означає більший радіус. Існують деякі EM-Marin і HID рідери, що працюють на відстані до метра. Їх часто використовують на парковках.
- Primitive protocol — через низьку швидкість передачі даних ці мітки можуть лише передавати свій короткий ID. У більшості випадків дані не автентифіковані і не захищені. Як тільки карта опиняється в зоні дії рідера, вона просто починає передавати свій ID.
- Low security — ці карти легко копіюються або навіть зчитуються з чужої кишені через примітивність протоколу.
Популярні 125 kHz протоколи:
- EM-Marin — EM4100, EM4102. Найпопулярніший протокол в СНД. Можна зчитувати з відстані близько метра завдяки простоті й стабільності.
- HID Prox II — низькочастотний протокол, запроваджений HID Global. Цей протокол більш поширений на заході. Він складніший, а карти і рідери для нього відносно дорогі.
- Indala — дуже старий низькочастотний протокол, який впровадила Motorola, а пізніше придбав HID. Ви рідше зустрітeте його в диких умовах у порівнянні з попередніми двома, оскільки він виходить з ужитку.
Насправді існує набагато більше низькочастотних протоколів. Але всі вони використовують однакову модуляцію на фізичному шарі і можуть розглядатися, так чи інакше, як варіації згаданих вище.
Attack
Ви можете attack these Tags with the Flipper Zero:
High-Frequency RFID Tags (13.56 MHz)
Високочастотні мітки використовують для більш складної взаємодії reader-tag, коли потрібні криптографія, великий двосторонній обмін даними, автентифікація тощо.
Їх зазвичай використовують у банківських картках, громадському транспорті та інших безпечних пропусках.
Високочастотні 13.56 MHz мітки — це набір стандартів і протоколів. Їх зазвичай називають NFC, але це не завжди коректно. Базовий набір протоколів, що використовується на фізичному та логічному рівнях — ISO 14443. Вищі за рівнем протоколи, а також альтернативні стандарти (наприклад, ISO 19092) базуються на ньому. Багато хто називає цю технологію Near Field Communication (NFC) — термін для пристроїв, що працюють на частоті 13.56 MHz.
.png)
Простою мовою, архітектура NFC працює так: протокол передачі обирає компанія-виробник карт і реалізує його на основі низькорівневого ISO 14443. Наприклад, NXP винайшла власний високорівневий протокол передачі під назвою Mifare. Але на нижчому рівні Mifare-карти базуються на стандарті ISO 14443-A.
Flipper може взаємодіяти як з низькорівневим ISO 14443 протоколом, так і з Mifare Ultralight data transfer protocol та EMV, що використовуються в банківських картках. Ми працюємо над додаванням підтримки Mifare Classic та NFC NDEF. Детальний розгляд протоколів і стандартів, що складають NFC, заслуговує окремої статті, яку ми плануємо опублікувати пізніше.
Усі високочастотні карти, що базуються на стандарті ISO 14443-A, мають унікальний ідентифікатор чіпа. Він виступає як серійний номер карти, подібно до MAC-адреси мережевої карти. Зазвичай UID має довжину 4 або 7 байт, але рідко може сягати до 10. UID не є секретом і їх легко зчитати, іноді навіть надруковано на самій картці.
Є багато систем контролю доступу, що покладаються на UID для автентифікації та надання доступу. Іноді це відбувається навіть коли RFID-мітки підтримують криптографію. Таке неправильне використання знижує їхній рівень безпеки до рівня простих 125 kHz карт. Віртуальні картки (наприклад Apple Pay) використовують динамічний UID, щоб власники телефонів не відкривали двері своїм платіжним додатком.
- Low range — високочастотні карти спеціально спроектовані так, щоб їх потрібно було прикладати близько до рідера. Це також допомагає захистити карту від несанкціонованих взаємодій. Максимальна відстань зчитування, яку ми змогли досягти, становила близько 15 см, і це було з кастомними рідерами довгої дії.
- Advanced protocols — швидкості передачі даних до 424 kbps дозволяють складні протоколи з повноцінним двостороннім обміном. Це, у свою чергу, дозволяє криптографію, передачу даних тощо.
- High security — високочастотні безконтактні картки зовсім не поступаються смарт-картам. Є карти, що підтримують криптографічно стійкі алгоритми, такі як AES, і реалізують асиметричну криптографію.
Attack
Ви можете attack these Tags with the Flipper Zero:
Or using the proxmark:
MiFare Classic offline stored-value tampering (broken Crypto1)
Коли система зберігає грошовий баланс прямо на карті MiFare Classic, ви часто можете маніпулювати ним, бо Classic використовує застарілий шифр NXP — Crypto1. Crypto1 вже багато років зламано, що дозволяє відновлювати ключі секторів і повністю читати/записувати пам'ять карти за допомогою доступного обладнання (наприклад, Proxmark3).
Загальний робочий процес (абстраговано):
- Зробити дамп оригінальної карти та відновити ключі
# Attempt all built-in Classic key recovery attacks and dump the card
hf mf autopwn
Зазвичай це відновлює sector keys (A/B) і генерує full-card dump у папці client dumps.
- Знайдіть і зрозумійте value/integrity fields
- Виконайте легальні поповнення на оригінальній карті та зробіть кілька dumps (до/після).
- Виконайте diff двох dumps, щоб визначити змінні blocks/bytes, що представляють balance і будь-які integrity fields.
- Багато розгортань Classic або використовують нативне "value block" encoding, або реалізують власні checksums (наприклад, XOR of the balance with another field and a constant). Після зміни balance перерахуйте integrity bytes відповідно та переконайтеся, що всі duplicated/complemented fields узгоджені.
- Запишіть змінений dump на доступний для запису “Chinese magic” Classic tag
# Load a modified binary dump onto a UID-changeable Classic tag
hf mf cload -f modified.bin
- Клонувати оригінальний UID, щоб термінали розпізнавали картку
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
hf mf csetuid -u <original_uid>
- Використання на терміналах
Зчитувачі, які довіряють балансу на карті та UID, приймуть зміновану карту. Польові спостереження показують, що в багатьох розгортаннях обмеження балансу базуються на ширині поля (наприклад, 16-бітний формат з фіксованою комою).
Примітки
- Якщо система використовує рідні Classic value blocks, пам'ятайте формат: value (4B) + ~value (4B) + value (4B) + block address + ~address. Усі частини мають відповідати.
- Для кастомних форматів із простими контрольними сумами диференційний аналіз — найшвидший спосіб вивести функцію цілісності без реверсу прошивки.
- Тільки теги з можливістю зміни UID ("Chinese magic" gen1a/gen2) дозволяють записувати block 0/UID. Звичайні Classic карти мають UIDs тільки для читання.
Для практичних команд Proxmark3 див.:
Building a Portable HID MaxiProx 125 kHz Mobile Cloner
Якщо вам потрібне довгого радіусу дії, живлене від батареї рішення для збору HID Prox® бейджів під час red-team операцій, ви можете перетворити настінний рідер HID MaxiProx 5375 на автономний клонер, який поміщається у рюкзак. Повний механічний та електричний покроковий огляд доступний тут:
Джерела
- https://blog.flipperzero.one/rfid/
- Let's Clone a Cloner – Part 3 (TrustedSec)
- NXP statement on MIFARE Classic Crypto1
- MIFARE security overview (Wikipedia)
- NFC card vulnerability exploitation in KioSoft Stored Value (SEC Consult)
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.