Laba diena visoms. Pradėsiu nuo to, kas paskatino mane atlikti šį tyrimą, bet pirmiausia perspėsiu: visi praktiniai veiksmai buvo atlikti su vadovaujančių struktūrų sutikimu. Bet koks bandymas panaudoti šią medžiagą patekti į draudžiamą zoną neturint teisės ten būti yra baudžiamasis nusikaltimas.
Началось все с того, что убираясь на столе, я случайно поместил RFID ключ от подъезда на NFC-считыватель ACR122 — каково же было мое удивление, когда Windows воспроизвела звук обнаружения нового устройства, а светодиод загорелся зеленым. Я до этого момента полагал что эти ключи работают исключительно в стандарте Proximity.

Bet kadangi skaitytojas tai pamatė, tai reiškia, kad raktas atitinka vieną iš protokolų, viršijančių ISO 14443 standartą (dar žinomas kaip artimojo lauko ryšys, 13,56 MHz). Valymas iškart buvo pamirštas, nes pamačiau galimybę visiškai atsikratyti raktų komplekto ir raktą nuo įėjimo pasilikti telefone (bute jau seniai įrengta elektroninė spyna). Pradėjęs studijuoti sužinojau, kad po plastiku yra paslėpta Mifare 1k NFC žyma - tokio paties modelio kaip įmonės ženkliukuose, transporto kortelėse ir kt. Bandymai įsiskverbti į sektorių turinį iš pradžių neatnešė sėkmės, o galiausiai nulaužus raktą paaiškėjo, kad buvo naudojamas tik 3-ias sektorius, o jame dubliuotas paties lusto UID. Atrodė per daug paprasta, taip ir pasirodė, ir straipsnio nebūtų, jei viskas vyktų tiksliai taip, kaip planuota. Taigi aš gavau rakto dalis ir nėra problemų, jei reikia nukopijuoti raktą į kitą tokio pat tipo. Bet užduotis buvo perkelti raktą į mobilųjį įrenginį, ką aš ir padariau. Čia ir prasidėjo linksmybės – turime telefoną – iPhone SE su nustatyta iOS 13.4.5 Beta build 17F5044d и некоторыми кастомными компонентами для свободной работы NFC — на этом подробно останавливаться не буду в силу некоторых объективных причин. При желании все сказанное далее применимо и для системы Android, но с некоторыми упрощениями.
Spręstinų užduočių sąrašas:
- Pasiekite rakto turinį.
- Įdiekite įrenginio galimybę emuliuoti raktą.
Если с первым все было относительно просто, то со вторым возникли проблемы. Первая версия эмулятора не сработала. Проблема была довольно быстро обнаружена — у мобильных устройств (что iOS, что Android) в режиме эмуляции — UID динамический и независимо от того, что зашито в образе — плавает. Вторая версия (запускаемая с правами суперпользователя) жестко фиксировала серийный номер на выбранном — дверь открывалась. Однако я хотел сделать все идеально, и в итоге собрал законченную версию эмулятора которая могла открывать дампы Mifare и эмулировать их. Поддавшись внезапному порыву, я изменил ключи секторов на произвольные, и попытался открыть дверь. И она… ATIDARYTA! Po kurio laiko supratau, kad jie atsidaro bet koks durys su šia spyna, net ir tos, prie kurių originalus raktas netiko. Šiuo atžvilgiu sukūriau naują užduočių, kurias reikia atlikti, sąrašą:
- Sužinokite, koks valdiklis yra atsakingas už darbą su raktais
- Supraskite, ar yra tinklo ryšys ir bendra bazė
- Sužinokite, kodėl praktiškai neįskaitomas raktas tampa universalus
Pakalbėjęs su valdymo įmonės inžinieriumi sužinojau, kad paprasti Iron Logic z5r valdikliai naudojami neprisijungus prie išorinio tinklo.
CP-Z2 MF skaitytuvas ir IronLogic z5r valdiklis
Man buvo suteiktas įrangos rinkinys eksperimentams:

Kaip matyti iš čia, sistema yra visiškai autonomiška ir itin primityvi. Iš pradžių maniau, kad valdiklis yra mokymosi režimu - reiškia, kad jis nuskaito raktą, išsaugo jį atmintyje ir atidaro dureles - šis režimas naudojamas, kai reikia įrašyti visus raktus, pavyzdžiui, keičiant užraktas daugiabutyje. Tačiau ši teorija nebuvo patvirtinta - šis režimas išjungtas programinėje įrangoje, trumpiklis yra darbinėje padėtyje - ir vis dėlto, kai pakeliame įrenginį, matome:
Įrenginio emuliacijos proceso ekrano kopija

... ir valdiklis signalizuoja, kad prieiga suteikta.
Tai reiškia, kad problema slypi valdiklio arba skaitytuvo programinėje įrangoje. Patikrinkime skaitytuvą – veikia iButton režimu, tad prijungkime Bolid apsaugos plokštę – galėsime peržiūrėti išvesties duomenis iš skaitytuvo.
Plokštė vėliau bus prijungta per RS232

Naudodami kelių testų metodą, išsiaiškiname, kad skaitytuvas transliuoja tą patį kodą su: 1219191919
Situacija pradeda aiškėti, tačiau šiuo metu man neaišku, kodėl kontrolierius teigiamai reaguoja į šį kodą. Daroma prielaida, kad užpildžius duomenų bazę - netyčia ar tyčia buvo pateikta kortelė su kitais sektorių raktais - skaitytuvas atsiuntė šį kodą, o valdiklis jį išsaugojo. Deja, neturiu patentuoto „IronLogic“ programuotojo, kuris galėtų peržiūrėti valdiklio raktų duomenų bazę, bet tikiuosi, kad sugebėjau atkreipti dėmesį į tai, kad problema egzistuoja. Galimas darbo su šiuo pažeidžiamumu demonstracinis vaizdo įrašas .
P. S. Atsitiktinio papildymo teorijai prieštarauja tai, kad viename verslo centre Krasnojarske taip pat pavyko atidaryti duris tokiu pat būdu.
Šaltinis: www.habr.com
