Pentesting RFID

Reading time: 12 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

परिचय

Radio Frequency Identification (RFID) सबसे लोकप्रिय short-range radio समाधान है। आम तौर पर इसका उपयोग उस entity की पहचान करने वाली जानकारी को स्टोर और ट्रांसमिट करने के लिए किया जाता है।

एक RFID tag अपने power source (active), जैसे कि एम्बेडेड बैटरी, पर निर्भर कर सकता है, या पढ़ने वाले एंटेना से प्राप्त रेडियो तरंगों से induced करंट के जरिए अपनी पावर प्राप्त कर सकता है (passive)।

Classes

EPCglobal RFID tags को छह श्रेणियों में बाँटता है। हर श्रेणी का tag पिछली श्रेणी में सूचीबद्ध सभी क्षमताएँ रखता है, जिससे यह backward compatible होता है।

  • Class 0 tags passive tags होते हैं जो UHF बैंड में काम करते हैं। vendor इन्हें production फैक्ट्री में preprograms करता है। नतीजतन, आप इनके memory में संग्रहीत जानकारी को change नहीं कर सकते।
  • Class 1 tags HF बैंड में भी काम कर सकते हैं। इसके अलावा, इन्हें production के बाद written only once किया जा सकता है। कई Class 1 tags प्राप्त commands के cyclic redundancy checks (CRCs) भी प्रोसेस कर सकते हैं। CRCs commands के अंत में error detection के लिए कुछ अतिरिक्त bytes होते हैं।
  • Class 2 tags को multiple times लिखा जा सकता है।
  • Class 3 tags में एम्बेडेड sensors हो सकते हैं जो पर्यावरणीय पैरामीटर रिकॉर्ड कर सकें, जैसे वर्तमान तापमान या tag की motion। ये tags semi-passive होते हैं, क्योंकि हालांकि इनमें एक एम्बेडेड power source, जैसे integrated battery, होता है, वे अन्य tags या readers के साथ वायरलेस communication शुरू नहीं कर सकते।
  • Class 4 tags समान क्लास के अन्य tags के साथ communication शुरू कर सकते हैं, जिससे वे active tags बन जाते हैं।
  • Class 5 tags अन्य tags को power प्रदान कर सकते हैं और सभी पिछली tag classes के साथ communicate कर सकते हैं। Class 5 tags RFID readers के रूप में कार्य कर सकते हैं।

RFID Tags में संग्रहीत जानकारी

एक RFID tag की memory आमतौर पर चार प्रकार के डेटा स्टोर करती है: identification data, जो उस entity की पहचान करता है जिस से tag जुड़ा होता है (इस डेटा में user-defined फ़ील्ड शामिल होते हैं, जैसे bank accounts); supplementary data, जो entity के बारे में आगे के विवरण प्रदान करता है; control data, जो tag की आंतरिक configuration के लिए उपयोग होता है; और tag का manufacturer data, जिसमें tag का Unique Identifier (UID) और tag के production, type, और vendor के बारे में विवरण होते हैं। आपको पहले दो प्रकार के डेटा सभी commercial tags में मिलेंगे; अंतिम दो vendor के आधार पर भिन्न हो सकते हैं।

ISO standard Application Family Identifier (AFI) value निर्दिष्ट करता है, एक कोड जो tag जिस प्रकार के object से संबंधित है उसे दर्शाता है। एक और महत्वपूर्ण रजिस्टर, जो ISO द्वारा निर्दिष्ट है, वह है Data Storage Format Identifier(DSFID), जो user data के तार्किक संगठन को परिभाषित करता है।

अधिकांश RFID security controls में ऐसे mechanisms होते हैं जो प्रत्येक user memory block और AFI तथा DSFID values वाले विशेष रजिस्टरों पर read या write operations को restrict करते हैं। ये lock mechanisms control memory में संग्रहीत डेटा का उपयोग करते हैं और vendor द्वारा preconfigured default passwords होते हैं, पर tag मालिकों को custom passwords configure करने की अनुमति भी देते हैं।

Low & High frequency tags तुलना

Low-Frequency RFID Tags (125kHz)

Low-frequency tags का अक्सर उन सिस्टमों में उपयोग होता है जिन्हें high security की आवश्यकता नहीं होती: building access, intercom keys, gym membership cards, आदि। उनकी अधिक range के कारण, इन्हें paid car parking के लिए उपयोग करना सुविधाजनक है: driver को card को reader के बहुत पास लाने की जरूरत नहीं होती, क्योंकि यह अधिक दूरी से ट्रिगर हो जाता है। साथ ही, low-frequency tags बहुत primitive होते हैं और उनकी data transfer rate कम होती है। इसलिए, ऐसे जटिल दो-तरफ़ा data transfer जैसे balance रखने और cryptography को लागू करना असंभव है। Low-frequency tags केवल अपना short ID ट्रांसमिट करते हैं बिना किसी authentication के।

ये डिवाइस passive RFID टेक्नोलॉजी पर आधारित हैं और आम तौर पर 30 kHz से 300 kHz की रेंज में ऑपरेट करते हैं, हालांकि सामान्यतः 125 kHz से 134 kHz का उपयोग होता है:

  • Long Range — lower frequency का मतलब higher range होता है। कुछ EM-Marin और HID readers हैं, जो लगभग एक मीटर की दूरी से काम करते हैं। इन्हें अक्सर car parking में उपयोग किया जाता है।
  • Primitive protocol — low data transfer rate के कारण ये tags केवल अपना short ID ट्रांसमिट कर सकते हैं। अधिकांश मामलों में डेटा authenticated नहीं होता और किसी भी तरह से protected नहीं होता। जैसे ही कार्ड reader की रेंज में आता है, यह बस अपना ID भेजना शुरू कर देता है।
  • Low security — ये कार्ड आसानी से copy किए जा सकते हैं, या protocol की primitiveness के कारण किसी और की जेब से भी पढ़े जा सकते हैं।

लोकप्रिय 125 kHz protocols:

  • EM-Marin — EM4100, EM4102. CIS में सबसे लोकप्रिय protocol। इसकी सरलता और स्थिरता के कारण यह लगभग एक मीटर से पढ़ा जा सकता है।
  • HID Prox II — HID Global द्वारा पेश किया गया low-frequency protocol। यह protocol पश्चिमी देशों में अधिक लोकप्रिय है। यह अधिक जटिल है और इस protocol के कार्ड और readers अपेक्षाकृत महंगे होते हैं।
  • Indala — Motorola द्वारा पेश किया गया बहुत पुराना low-frequency protocol, जिसे बाद में HID ने acquire किया। पिछले दो की तुलना में wild में इससे मिलने की संभावना कम है क्योंकि यह उपयोग से बाहर जा रहा है।

वास्तव में, बहुत सारे low-frequency protocols मौजूद हैं। पर वे सभी physical layer पर समान modulation का उपयोग करते हैं और किसी न किसी रूप में ऊपर सूचीबद्ध प्रोटोकॉल का variation माने जा सकते हैं।

Attack

You can attack these Tags with the Flipper Zero:

FZ - 125kHz RFID

High-Frequency RFID Tags (13.56 MHz)

High-frequency tags उन स्थितियों में उपयोग होते हैं जहाँ आपको cryptography, बड़ा दो-तरफ़ा data transfer, authentication आदि जैसी जटिल reader-tag interaction की आवश्यकता होती है।
यह आम तौर पर bank cards, public transport, और अन्य secure passes में पाया जाता है।

High-frequency 13.56 MHz tags कई standards और protocols का सेट हैं। इन्हें अक्सर NFC कहा जाता है, लेकिन यह हमेशा सही नहीं है। physical और logical स्तरों पर उपयोग होने वाला basic protocol set ISO 14443 है। उच्च-स्तरीय प्रोटोकॉल, साथ ही वैकल्पिक मानक (जैसे ISO 19092), इसी पर आधारित होते हैं। कई लोग इस तकनीक को Near Field Communication (NFC) कहते हैं, जो 13.56 MHz पर ऑपरेट होने वाले उपकरणों के लिए प्रयुक्त शब्द है।

सरल शब्दों में, NFC की आर्किटेक्चर इस तरह काम करती है: transmission protocol उस कंपनी द्वारा चुना जाता है जो कार्ड बनाती है और इसे low-level ISO 14443 के आधार पर लागू किया जाता है। उदाहरण के लिए, NXP ने अपना उच्च-स्तरीय transmission protocol Mifare बनाया। लेकिन निचले स्तर पर, Mifare cards ISO 14443-A standard पर आधारित होते हैं।

Flipper दोनों low-level ISO 14443 protocol और Mifare Ultralight data transfer protocol और bank cards में उपयोग होने वाले EMV के साथ interact कर सकता है। हम Mifare Classic और NFC NDEF के लिए समर्थन जोड़ने पर काम कर रहे हैं। NFC को बनाने वाले protocols और standards का एक विस्तृत विश्लेषण एक अलग लेख का विषय होगा जिसे हम बाद में प्रकाशित करने की योजना बना रहे हैं।

ISO 14443-A standard पर आधारित सभी high-frequency cards के पास एक unique chip ID होती है। यह कार्ड के serial number की तरह कार्य करता है, जैसे network card का MAC address। आम तौर पर, UID 4 या 7 bytes लंबा होता है, लेकिन कभी-कभार 10 तक भी हो सकता है। UIDs कोई secret नहीं होते और आसानी से पढ़े जा सकते हैं, कभी-कभी तो कार्ड पर ही छपे होते हैं

कई access control systems UID पर निर्भर करते हुए authenticate और grant access करते हैं। कभी-कभी यह तब भी होता है जब RFID tags में cryptography का समर्थन होता है। ऐसी गलत प्रथाएँ उन्हें security के मामले में मूर्खतापूर्ण 125 kHz cards के स्तर पर ला देती हैं। Virtual cards (जैसे Apple Pay) dynamic UID का उपयोग करते हैं ताकि फोन मालिक अपने payment app से दरवाजे खोलते समय सुरक्षा बनी रहे।

  • Low range — high-frequency cards विशेष रूप से इस तरह डिज़ाइन किए गए हैं कि इन्हें reader के पास रखना होगा। यह unauthorized interactions से कार्ड की रक्षा में भी मदद करता है। अधिकतम read range जो हमने हासिल की वह लगभग 15 cm थी, और वह भी custom-made high-range readers के साथ।
  • Advanced protocols — 424 kbps तक की data transfer speeds जटिल प्रोटोकॉल और पूर्ण दो-तरफ़ा data transfer की अनुमति देती हैं। जो कि बदले में cryptography, data transfer आदि की अनुमति देता है।
  • High security — high-frequency contactless cards किसी भी तरह से smart cards से कम नहीं हैं। कुछ cards cryptographically strong algorithms जैसे AES का समर्थन करते हैं और asymmetrical cryptography को लागू करते हैं।

Attack

You can attack these Tags with the Flipper Zero:

FZ - NFC

Or using the proxmark:

Proxmark 3

MiFare Classic offline stored-value tampering (broken Crypto1)

जब कोई सिस्टम monetary balance सीधे MiFare Classic कार्ड पर स्टोर करता है, तो आप अक्सर इसे manipulate कर सकते हैं क्योंकि Classic NXP के deprecated Crypto1 cipher का उपयोग करता है। Crypto1 वर्षों से broken है, जिससे sector keys की recovery और कार्ड memory का पूर्ण read/write commodity hardware (उदा., Proxmark3) के साथ संभव है।

End-to-end workflow (abstracted):

  1. Dump the original card and recover keys
bash
# Attempt all built-in Classic key recovery attacks and dump the card
hf mf autopwn

This typically recovers sector keys (A/B) and generates a full-card dump in the client dumps folder.

  1. value/integrity fields को ढूंढें और समझें
  • मूल कार्ड पर वैध top-ups करें और कई dumps लें (before/after).
  • दोनों dumps का diff करें ताकि उन बदलने वाले blocks/bytes की पहचान हो सके जो balance और किसी भी integrity fields का प्रतिनिधित्व करते हैं.
  • कई Classic deployments या तो native "value block" encoding का उपयोग करते हैं या अपने खुद के checksums बनाते हैं (e.g., XOR of the balance with another field and a constant). balance बदलने के बाद, integrity bytes को फिर से गणना करें और सुनिश्चित करें कि सभी duplicated/complemented fields consistent हों.
  1. संशोधित dump को एक writable “Chinese magic” Classic tag पर लिखें
bash
# Load a modified binary dump onto a UID-changeable Classic tag
hf mf cload -f modified.bin
  1. मूल UID क्लोन करें ताकि टर्मिनल कार्ड को पहचान सके
bash
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
hf mf csetuid -u <original_uid>
  1. टर्मिनलों पर उपयोग

जो रीडर कार्ड पर मौजूद बैलेंस और UID पर भरोसा करते हैं, वे बदला हुआ कार्ड स्वीकार कर लेंगे। फील्ड पर्यवेक्षण दिखाते हैं कि कई डिप्लॉयमेंट्स बैलेंस को फ़ील्ड की चौड़ाई के आधार पर कैप कर देते हैं (उदा., 16-bit fixed-point)।

नोट्स

  • यदि सिस्टम native Classic value blocks का उपयोग करता है, तो फॉर्मेट याद रखें: value (4B) + ~value (4B) + value (4B) + block address + ~address. सभी हिस्से मेल खाने चाहिए।
  • simple checksums वाले custom formats के लिए, differential analysis बिना firmware रिवर्स किए integrity function निकालने का सबसे तेज़ तरीका है।
  • केवल UID-changeable tags ("Chinese magic" gen1a/gen2) block 0/UID लिखने की अनुमति देते हैं। सामान्य Classic cards की UIDs read-only होती हैं।

हैंड्स-ऑन Proxmark3 commands के लिए, देखें:

Proxmark 3

पोर्टेबल HID MaxiProx 125 kHz मोबाइल क्लोनर बनाना

यदि आपको red-team engagements के दौरान HID Prox® बैजेस harvest करने के लिए एक long-range, battery-powered समाधान चाहिए, तो आप wall-mounted HID MaxiProx 5375 reader को एक self-contained क्लोनर में बदल सकते हैं जो बैकपैक में फिट हो जाता है। पूरी मैकेनिकल और इलेक्ट्रिकल वॉक‑थ्रू यहाँ उपलब्ध है:

Maxiprox Mobile Cloner


संदर्भ

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें