Tere kõigile. Alustan taustalooga, mis ajendas mind selle uuringu läbi viima, kuid enne hoiatuseks: kõik praktilised tegevused viidi läbi haldusstruktuuride nõusolekul. Iga katse kasutada seda materjali sulgemise territooriumile sisenemiseks ilma seal viibimise õigusteta on kuritegu.
Kõik algas sellest, et kui ma oma lauda koristasin, asetas ma kogemata RFID võti sissepääsu NFC-lugejale ACR122 — minu üllatus oli suur, kui Windows esitas uue seadme avastamise heli ja LED süttis roheliselt. Ma arvasin, et need võtmed töötavad ainult Proximity standardis.

Kuid kuna lugeja ta nägi, tähendab see, et võti vastab ühele ISO 14443 standardi (ehk Near Field Communication, 13,56 MHz) protokollidest. Puhastamisest unustati kohe, sest nägin võimalust vabaneda võtmekimpidest ja hoida sissepääsuvõti telefonis (korter on ammu varustatud elektroonilise lukuga). Uurimisele pühendudes selgus, et plasti all peitub NFC-märge Mifare 1k — sama mudel, mida kasutatakse ettevõtete kaardisüsteemides, transpordikaartides jne. Esialgsed katsed sektori sisu juurdepääsu saamiseks ei toonud edu, ja kui mul lõpuks õnnestus võti murda, selgus, et kasutatakse vaid 3. sektorit, kus on kopeeritud kaardi UID. See näis liiga lihtne, ja nii see oli — artiklit ei oleks, kui kõik oleks läinud täpselt nii, nagu kavandatud. Siin ma sain võtme sisemuse, ega ole mingeid probleeme, kui on vaja kopeerida võtme koopia teise sarnasesse. Kuid ülesanne oli — viia võti mobiilseadmesse, millega ma tegingi. Siin hakkas lõbusus pihta — meil on telefon — iPhone SE paigaldatud iOS 13.4.5 Beta build 17F5044d ja ja mõned kohandatud komponendid NFC vaba töö jaoks — ei hakka siin pikalt peatuma mõningate objektiivsete põhjuste tõttu. Soovi korral kehtib kõik, mis järgneb, ka Androidi süsteemi jaoks, kuid mõningate lihtsustustega.
Probleemide loetelu:
- Kasutada pääsukoodide sisu.
- Rakendada võimalust seadmega võtme emuleerimiseks.
Kuigi esimese punktiga oli suhteliselt lihtne, ilmus teisega probleeme. Esimene emulaatoriversioon ei töötanud. Probleem avastati üsna kiiresti — mobiilseadmetes (nii iOS kui Android) emulatsiooni režiimis on UID dünaamiline ja sõltumatu sellest, mis on pildis. Teine versioon (käivitub superkasutaja õigustega) fikseeris seerianumbri valitud versioonile — uks avanes. Siiski, ma tahtsin kõike täiuslikult teha ning lõpuks kogusin lõpuni viidud emulaatori versiooni, mis suutis avada Mifare dump'e ja neid emuleerida. Ühel äkilisel hetkel muutsin sektorite võtmed suvaliseks ja proovisin ust avada. Ja see... AVANES! Mõne aja pärast sain aru, et avanevad igalühel uksed, millele see lukk sobib, isegi need, mille originaalvõti ei sobinud. Seetõttu koostasin uue ülesannete nimekirja:
- Selgitada välja, milline kontroller vastutab võtmetega töötamise eest
- Mõista, kas on olemas võrguühendus ja ühine andmebaas
- Selgitada välja, miks tegelikult loetamatust võtme saab universaalsuseks
Suheldes halduskontserni inseneriga sain teada, et kasutatakse lihtsaid kontrolleri Iron Logic z5r ilma välise võrguühenduseta.
Lugeja CP-Z2 MF ja kontroller IronLogic z5r
Mulle anti katsetamiseks vajalik seadmete komplekt:

Kuidas siit välja näeb — süsteem on täiesti iseseisev ja äärmiselt primitiivne. Algul arvasin, et kontroller on õppe režiimis — idee on selline, et see loeb võtme, salvestab selle mälu ja avab ukse — seda režiimi kasutatakse siis, kui tuleb salvestada kõik võtmed, näiteks mitu korterit olevat lukku vahetades. Kuid see teooria ei leidnud kinnitust — tarkvara poolest on see režiim välja lülitatud, ja jumper on tööasendis — ja siiski, kui seadet läheneda, näeme järgmist:
Ekraanipilt emuleerimise protsessist seadmel

… ja kontroller signaalib, et juurdepääs on antud.
Seega peitub probleem kas kontrolleri või lugeja tarkvaras. Vaatame lugejat — see töötab iButton režiimis, seega ühendame Bolid turvakaardi — saame vaadata lugeja väljundandmeid.
Kaart ühendatakse hiljem läbi RS232.

Käime mitme katse meetodil läbi, et selgitada, et lugeja edastab sama koodi autoriseerimise ebaõnnestumise korral: 1219191919.
Olukord hakkab selguma, kuid praegu ei saa ma aru, miks kontroller sellele koodile positiivselt reageerib. On oletus — et kui andmebaasi täideti — juhuslikult või tahtlikult toodi kaart teiste sektori võtmetega — edastas lugeja selle koodi ja kontroller salvestas selle. Kahjuks mul ei ole IronLogic'i originaalprogrammeeri, et vaadata kontrolleri võtmeandmebaasi, kuid loodan, et suutsin tähelepanu juhtida sellele, et probleem eksisteerib. Videodemonstratsioon selle haavatavuse tööle rakendamisest on saadaval. .
P.S. Teooria juhuslikest lisandustest on vastuolus asjaolu, et ühe ärikeskuse taga Krasnojarskis õnnestus mul samuti seda ust avada sama meetodi abil.
Allikas: habr.com
