Të gjithë një mirëseardhje. Do të filloj me historikun, që më shtyu të kryej këtë hetim, por para se të vazhdoj, dua të paralajmëroj: të gjitha veprimet praktike janë kryer me pëlqimin e strukturave menaxhuese. Çdo përpjekje për të përdorur këtë material me qëllim depërtimi në territor të mbyllur pa të drejtën e qenies aty — është një shkelje penale.
Gjithçka filloi kur po rregulloja tavolinën, papritmas vendosa çelësin RFID të hyrjes mbi lexuesin NFC ACR122 — sa e madhe ishte befasia ime kur Windows shprehu zërin e zb Discoveries së pajisjes së re, ndërsa LED u ndez në gjelbër. Deri në atë moment, isha menduar se këto çelësa punojnë ekskluzivisht në standardin Proximity.

Por nëse lexuesi e pa atë — atëherë çelësi i përgjigjet një prej protokolleve mbi standardin ISO 14443 (I njëjti është Near Field Communication, 13.56 MHz). Për pastrimin u harrua menjëherë, pasi unë pashë mundësinë për të shpëtuar nga lidhja e çelësave dhe për të ruajtur çelësin e hyrjes në telefon (apartamenti është pajisur prej kohësh me një çelës elektronik). Ndërsa fillova të studioj, zbulova se nën plastik ndodhet një etiketë NFC Mifare 1k — e njëjta model që gjendet në kartat identiteti, kartat e transportit, etj. Përpjekjet për të hyrë në përmbajtjen e sektorëve fillimisht nuk dhanë sukses, dhe sapo munda të thyej çelësin — doli se përdorej vetëm sektori i tretë, dhe në të ishte kopjuar UID i vetë çipit. Dukej tepër e thjeshtë, ashtu siç rezultoi dhe nuk do të kishte asnjë artikull po të ishte krejtësisht ashtu siç ishte menduar. Këtu kam marrë brendinë e çelësit, dhe nuk ka asnjë problem nëse është e nevojshme të kopjoj çelësin në një tjetër të njëjtë. Por detyra ishte — të transferoja çelësin në një pajisje mobile, me çfarë fillova të merrem. Dhe këtu filloi argëtimi — kemi telefonin — iPhone SE me sistemin operativ iOS 13.4.5 Beta build 17F5044d dhe disa komponentë të personalizuar për funksionimin e lirë të NFC — këtu nuk do të ndalem në detaje për disa arsye objektive. Nëse dëshirohet, çdo gjë e thënë më poshtë është e aplikueshme edhe për sistemin Android, por me disa thjeshtëzime.
Lista e detyrave për zgjidhje:
- Të fitoj qasje në përmbajtjen e çelësit.
- Të realizoj mundësinë e emulimit të çelësit nga pajisja.
Nëse për të parën gjithçka ishte relativisht e thjeshtë, për të dytën u shfaqën probleme. Versioni i parë i emulatorit nuk funksionoi. Problemi u zbulua mjaft shpejt — në modelet e pajisjeve mobile (qoftë iOS, qoftë Android) në mënyrën e emulimit — UID është dinamik dhe pa marrë parasysh se çfarë është programuar në imazh — është variabël. Versioni i dytë (i ekzekutuar me të drejta administratorësh) e ndalonte ngurtësisht numrin seri në të zgjedhur — dera hapej. Megjithatë, doja të bëja gjithçka perfekt, dhe në fund krijova një version përfundimtar të emulatorit që mund të hapte dump-at Mifare dhe t'i emulonte ato. Duke u lënë nën një impuls të papritur, unë ndryshova çelësat e sektorëve në të rastësishme dhe u përpoqa të hap derën. Dhe ajo... U HAP! Pas disa kohësh kuptova se po hapeshin të gjitha dyert me këtë çelës, madje edhe ato për të cilat çelësi origjinal nuk funksiononte. Me këtë në mendje, krijova një listë të re detyrash për tu përmbushur:
- Të kuptoj se cili kontrollor përgjigjet për punën me çelësat
- Të kuptoj nëse ka lidhje me rrjetin dhe një bazë të përbashkët
- Të zbuloj pse çelësi realisht i papërdorshëm bëhet universal
Pas bisedës me inxhinierin e kompanisë menaxhuese, mësova se përdoren kontrollorë të thjeshtë Iron Logic z5r pa lidhje me rrjetin e jashtëm.
Lexuesi CP-Z2 MF dhe kontrollori IronLogic z5r
Më dhanë një set pajisjesh për eksperimente:

Siç mirëkuptohet nga kjo — sistemi është plotësisht autonom dhe ekstremisht primitiv. Fillimisht mendova se kontrollori ishte në modalitetin e mësimit — kuptimi është se lexon çelësin, e vendos në memorje dhe hap derën — ky modalitet përdoret kur duhet të shkruajmë të gjithë çelësat, për shembull në rastin e ndërrimit të çelësit në një ndërtesë shumëfamiljare. Por kjo teori nuk u konfirmua — programi ky modalitet ishte i çaktivizuar, jumpers ishin në pozita pune — dhe megjithatë, kur afruam pajisjen, ne pamë këtë:
Screenshot i procesit të emulimit në pajisje

… dhe kontrollori sinjalizoi se akses është lejuar.
Kjo do të thotë se problemi qëndron në softuerin ose të kontrollorit ose të lexuesit. Le të kontrollojmë lexuesin — ai punon në modalitetin iButton, kështu që do të lidhim bordin e sigurisë Bolid — do të kemi mundësinë të shohim qëllimet e daljes nga lexuesi.
Bordi, më pas do të lidhet përmes RS232

Me metoda të provave të shumta, zbulojmë që lexuesi transmeton të njëjtin kod në rast të dështimit të autorizimit: 1219191919
Situata fillon të qartësohet, megjithatë në këtë moment nuk është e qartë pse kontrolluesi reagon pozitivisht ndaj këtij kodit. Ka një supozim - se kur u mbush baza - rastësisht ose qëllimisht u afrua një kartë me çelësa të tjerë të sektorit - leksionari dërgoi këtë kod dhe kontrolluesi e ruajti atë. Fatkeqësisht, nuk kam një programator origjinal nga IronLogic për të parë në bazën e çelësave të kontrolluesit, por shpresoj të kem arritur të tërheq vëmendjen se problemi ekziston. Një demonstrim video i funksionit me këtë dobësi është në dispozicion. .
P.S. Faktori që kundërshton teorinë e shtimit rastësor është që në një qendër biznesi në Krasnojarsk gjithashtu arrita të hap derën me këtë metodë.
Burimi: habr.com
