# 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 **Radio Frequency Identification (RFID)** ni suluhisho maarufu la redio la umbali mfupi. Kwa kawaida hutumiwa kuhifadhi na kuhamasisha taarifa zinazotambulisha kitu. Tag ya RFID inaweza kutegemea **chanzo chake cha nguvu (active)**, kama betri iliyowekwa, au kupokea nguvu yake kutoka kwa antenna ya kusoma kwa kutumia **sasa iliyosababishwa na mawimbi ya redio yaliyopokelewa** (**passive**). ### Classes EPCglobal inagawanya tag za RFID katika makundi sita. Tag katika kila kundi ina uwezo wote ulioorodheshwa katika kundi la awali, hivyo kuifanya iweze kufanya kazi na teknolojia za zamani. * Tag za **Class 0** ni tag za **passive** zinazofanya kazi katika **UHF** bendi. Muuzaji **anaziandaa** kabla ya uzalishaji. Kama matokeo, huwezi **kubadilisha** taarifa zilizohifadhiwa katika kumbukumbu zao. * Tag za **Class 1** pia zinaweza kufanya kazi katika **HF** bendi. Zaidi ya hayo, zinaweza **kuandikwa mara moja tu** baada ya uzalishaji. Tag nyingi za Class 1 zinaweza pia kushughulikia **cyclic redundancy checks** (CRCs) za amri wanazopokea. CRCs ni bytes chache za ziada mwishoni mwa amri kwa ajili ya kugundua makosa. * Tag za **Class 2** zinaweza **kuandikwa mara nyingi**. * Tag za **Class 3** zinaweza kuwa na **sensors zilizowekwa** ambazo zinaweza kurekodi vigezo vya mazingira, kama vile joto la sasa au mwendo wa tag. Tag hizi ni **semi-passive**, kwa sababu ingawa zina **chanzo cha nguvu** kilichowekwa, kama **betri** iliyounganishwa, hazina uwezo wa kuanzisha **mawasiliano** ya wireless na tag au wasomaji wengine. * Tag za **Class 4** zinaweza kuanzisha mawasiliano na tag nyingine za kundi hilo, hivyo kuwa **tag za active**. * Tag za **Class 5** zinaweza kutoa **nguvu kwa tag nyingine na kuwasiliana na makundi yote ya tag** yaliyotangulia. Tag za Class 5 zinaweza kutenda kama **wasomaji wa RFID**. ### Information Stored in RFID Tags Kumbukumbu ya tag ya RFID kwa kawaida huhifadhi aina nne za data: **data ya utambulisho**, ambayo **inatambulisha** **kitu** ambacho tag imeunganishwa (data hii inajumuisha maeneo yaliyowekwa na mtumiaji, kama akaunti za benki); **data ya nyongeza**, ambayo inatoa **maelezo zaidi** kuhusu kitu; **data ya udhibiti**, inayotumika kwa **mipangilio** ya ndani ya tag; na **data ya mtengenezaji** wa tag, ambayo ina Kitambulisho Maalum cha Tag (**UID**) na maelezo kuhusu **uzalishaji**, **aina**, na **muuzaji** wa tag. Utapata aina mbili za kwanza za data katika tag zote za kibiashara; mbili za mwisho zinaweza kutofautiana kulingana na muuzaji wa tag. Standards za ISO zinaeleza thamani ya Kitambulisho cha Familia ya Maombi (**AFI**), msimbo unaoashiria **aina ya kitu** ambacho tag inahusiana nacho. Usajili mwingine muhimu, pia ulioelezwa na ISO, ni Kitambulisho cha Muundo wa Data (**DSFID**), ambacho kinaeleza **mpangilio wa kimantiki wa data ya mtumiaji**. Mifumo mingi ya **udhibiti wa usalama** wa RFID ina mekanizimu zinazoweza **kuzuia** operesheni za **kusoma** au **kuandika** kwenye kila kizuizi cha kumbukumbu ya mtumiaji na kwenye usajili maalum unaoshikilia thamani za AFI na DSFID. Mekanizimu hizi **zinazifunga** hutumia data iliyohifadhiwa katika kumbukumbu ya udhibiti na zina **nywila za msingi** zilizowekwa awali na muuzaji lakini zinawaruhusu wamiliki wa tag **kuweka nywila za kawaida**. ### Low & High frequency tags comparison
## Low-Frequency RFID Tags (125kHz) **Tag za frequency ya chini** mara nyingi hutumiwa katika mifumo ambayo **hayahitaji usalama wa juu**: ufikiaji wa majengo, funguo za intercom, kadi za uanachama wa gym, n.k. Kwa sababu ya upeo wao mkubwa, ni rahisi kuzitumia kwa maegesho ya magari ya kulipia: dereva hahitaji kuleta kadi karibu na msomaji, kwani inasababishwa kutoka mbali. Wakati huo huo, tag za frequency ya chini ni za msingi sana, zina kiwango cha chini cha uhamasishaji wa data. Kwa sababu hiyo, haiwezekani kutekeleza uhamasishaji wa data wa pande mbili wenye changamoto kama vile kudumisha salio na cryptography. Tag za frequency ya chini hutuma tu kitambulisho chao kifupi bila njia yoyote ya uthibitishaji. Vifaa hivi vinategemea teknolojia ya **passive** **RFID** na vinafanya kazi katika **kasi ya 30 kHz hadi 300 kHz**, ingawa ni kawaida kutumia 125 kHz hadi 134 kHz: * **Upeo Mrefu** — frequency ya chini inamaanisha upeo mkubwa. Kuna wasomaji wa EM-Marin na HID, ambao hufanya kazi kutoka umbali wa hadi mita moja. Hizi mara nyingi hutumiwa katika maegesho ya magari. * **Protokali ya Msingi** — kutokana na kiwango cha chini cha uhamasishaji wa data, tag hizi zinaweza tu kutuma kitambulisho chao kifupi. Katika hali nyingi, data haithibitishwi na haijalindwa kwa njia yoyote. Mara tu kadi inapokuwa katika upeo wa msomaji, inaanza kutuma kitambulisho chake. * **Usalama wa Chini** — Kadi hizi zinaweza kunakiliwa kwa urahisi, au hata kusomwa kutoka mfukoni mwa mtu mwingine kutokana na msingi wa protokali. **Protokali maarufu za 125 kHz:** * **EM-Marin** — EM4100, EM4102. Protokali maarufu zaidi katika CIS. Inaweza kusomwa kutoka takriban mita moja kwa sababu ya urahisi na uthabiti wake. * **HID Prox II** — protokali ya frequency ya chini iliyoanzishwa na HID Global. Protokali hii ni maarufu zaidi katika nchi za magharibi. Ni ngumu zaidi na kadi na wasomaji wa protokali hii ni ghali zaidi. * **Indala** — protokali ya zamani sana ya frequency ya chini ambayo ilianzishwa na Motorola, na baadaye kununuliwa na HID. Una uwezekano mdogo wa kuikuta katika mazingira ikilinganishwa na mbili zilizotangulia kwa sababu inatolewa nje ya matumizi. Kwa kweli, kuna protokali nyingi zaidi za frequency ya chini. Lakini zote zinatumia moduli sawa kwenye tabaka la kimwili na zinaweza kuzingatiwa, kwa njia moja au nyingine, kama toleo la zile zilizoorodheshwa hapo juu. ### Attack You can **attack these Tags with the Flipper Zero**: {% content-ref url="flipper-zero/fz-125khz-rfid.md" %} [fz-125khz-rfid.md](flipper-zero/fz-125khz-rfid.md) {% endcontent-ref %} ## High-Frequency RFID Tags (13.56 MHz) **Tag za frequency ya juu** hutumiwa kwa mwingiliano wa tag-msomaji wenye changamoto zaidi unapohitaji cryptography, uhamasishaji mkubwa wa data wa pande mbili, uthibitishaji, n.k.\ Kwa kawaida hupatikana katika kadi za benki, usafiri wa umma, na pasi nyingine za usalama. **Tag za frequency ya juu 13.56 MHz ni seti ya viwango na protokali**. Kwa kawaida hujulikana kama [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), lakini hiyo si sahihi kila wakati. Seti ya protokali ya msingi inayotumika kwenye ngazi za kimwili na kimantiki ni ISO 14443. Protokali za kiwango cha juu, pamoja na viwango mbadala (kama ISO 19092), zinategemea hiyo. Watu wengi hujulikana na teknolojia hii kama **Mawasiliano ya Uwanja wa Karibu (NFC)**, neno linalotumika kwa vifaa vinavyofanya kazi kwenye frequency ya 13.56 MHz.
Kwa ufupi, usanifu wa NFC unafanya kazi kama ifuatavyo: protokali ya uhamasishaji inachaguliwa na kampuni inayotengeneza kadi na kutekelezwa kwa msingi wa ISO 14443 ya kiwango cha chini. Kwa mfano, NXP iligundua protokali yake ya uhamasishaji wa kiwango cha juu inayoitwa Mifare. Lakini kwenye kiwango cha chini, kadi za Mifare zinategemea kiwango cha ISO 14443-A. Flipper inaweza kuingiliana na protokali ya kiwango cha chini ya ISO 14443, pamoja na protokali ya uhamasishaji wa data ya Mifare Ultralight na EMV inayotumika katika kadi za benki. Tunafanya kazi kuongeza msaada kwa Mifare Classic na NFC NDEF. Kuangalia kwa kina protokali na viwango vinavyounda NFC ni muhimu kwa makala tofauti ambayo tunapanga kuwa nayo baadaye. Kadi zote za frequency ya juu zinazotegemea kiwango cha ISO 14443-A zina Kitambulisho cha kipekee cha chip. Kinatenda kama nambari ya serial ya kadi, kama anwani ya MAC ya kadi ya mtandao. **Kwa kawaida, UID ni urefu wa byte 4 au 7**, lakini inaweza nadra kufikia **hadi 10**. UIDs si siri na zinaweza kusomwa kwa urahisi, **wakati mwingine hata zimeandikwa kwenye kadi yenyewe**. Kuna mifumo mingi ya udhibiti wa ufikiaji inayotegemea UID ili **kuhakiki na kutoa ufikiaji**. Wakati mwingine hii inatokea **hata** wakati tag za RFID **zinasaidia cryptography**. Matumizi kama haya yanazifanya zishuke hadi kiwango cha kadi za **125 kHz** zisizo na akili katika suala la **usalama**. Kadi za virtual (kama Apple Pay) hutumia UID ya dinamik ili wamiliki wa simu wasifungue milango kwa kutumia programu yao ya malipo. * **Upeo wa chini** — kadi za frequency ya juu zimeundwa mahsusi ili ziweze kuwekwa karibu na msomaji. Hii pia husaidia kulinda kadi kutokana na mwingiliano usioidhinishwa. Upeo wa juu wa kusoma ambao tumefanikiwa kuupata ulikuwa takriban cm 15, na hiyo ilikuwa na wasomaji wa upeo wa juu waliotengenezwa kwa kawaida. * **Protokali za Juu** — kasi za uhamasishaji wa data hadi 424 kbps zinaruhusu protokali ngumu zenye uhamasishaji wa data wa pande mbili. Ambayo kwa upande wake **inaruhusu cryptography**, uhamasishaji wa data, n.k. * **Usalama wa Juu** — kadi za frequency ya juu zisizo na mawasiliano hazina kasoro kwa kadi za smart. Kuna kadi zinazosaidia algorithimu zenye nguvu za cryptography kama AES na kutekeleza cryptography isiyo ya kawaida. ### Attack You can **attack these Tags with the Flipper Zero**: {% content-ref url="flipper-zero/fz-nfc.md" %} [fz-nfc.md](flipper-zero/fz-nfc.md) {% endcontent-ref %} Or using the **proxmark**: {% content-ref url="proxmark-3.md" %} [proxmark-3.md](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 %}