Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Istoriškai dauguma darbuotojų naudoja „Logitech“ belaides klaviatūras ir peles. Dar kartą įvedę slaptažodžius, mes, „Raccoon Security“ komandos specialistai, paklausėme savęs: kaip sunku apeiti belaidžių klaviatūrų apsaugos mechanizmus? Tyrimas atskleidė architektūrinius trūkumus ir programinės įrangos klaidas, kurios leidžia pasiekti įvesties duomenis. Žemiau pjūvio yra tai, ką mes turime.

Kodėl Logitech?

Mūsų nuomone, Logitech įvesties įrenginiai yra vieni kokybiškiausių ir patogiausių. Dauguma mūsų turimų įrenginių yra pagrįsti „Logitech“ sprendimu vienijantis yra universalus dongle imtuvas, leidžiantis prijungti iki 6 įrenginių. Visi įrenginiai, suderinami su „Logitech Unifying“ technologija, pažymėti „Logitech Unifying“ technologijos logotipu. Paprasta naudoti taikymas Leidžia valdyti belaidės klaviatūros ryšį su kompiuteriu. Pvz., apima klaviatūros prijungimo prie „Logitech“ imtuvo rakto ir pačios technologijos procesą. čia.

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Dongle imtuvas su Logitech Unifying palaikymu

Klaviatūra gali tapti informacijos šaltiniu užpuolikams. Logitech, atsižvelgdama į galimą grėsmę, pasirūpino saugumu – belaidės klaviatūros radijo kanale panaudojo AES128 šifravimo algoritmą. Pirmoji mintis, kurią užpuolikas gali turėti šioje situacijoje, yra perimti pagrindinę informaciją, kai ji perduodama radijo kanalu susiejimo procedūros metu. Galų gale, jei turite raktą, galite perimti klaviatūros radijo signalus ir juos iššifruoti. Tačiau vartotojui retai (ar net niekada) tenka suvienodinti klaviatūrą, o įsilaužėliui su skenuojančiu radijo imtuvu teks laukti ilgai. Be to, su pačiu perėmimo procesu ne viskas taip paprasta. Naujausiame 2019 m. birželio mėn. tyrime saugumo ekspertas Markusas Mengsas paskelbė internete Pranešimas apie senos „Logitech“ USB raktų programinės įrangos pažeidžiamumo aptikimą. Tai leidžia užpuolikams, turintiems fizinę prieigą prie įrenginių, gauti radijo kanalo šifravimo raktus ir suleisti klavišų paspaudimus (CVE-2019-13054).

Kalbėsime apie savo „Logitech“ rakto, pagrįsto „Nordic Semiconductor“ NRF24 SoC, saugumo tyrimą. Galbūt pradėkime nuo paties radijo kanalo.

Kaip duomenys „skraido“ radijo kanale

Radijo signalo laiko-dažnio analizei naudojome SDR imtuvą, pagrįstą Blade-RF įrenginiu spektro analizatoriaus režimu (apie tai taip pat galite pasiskaityti čia).

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

SDR Blade-RF įrenginys

Taip pat apsvarstėme galimybę įrašyti radijo signalo kvadratūras tarpiniu dažniu, kurį vėliau būtų galima analizuoti naudojant skaitmeninio signalo apdorojimo metodus.

Valstybinė radijo dažnių komisija Rusijos Federacijoje leidžiama skirtas naudoti mažojo nuotolio įrenginiams, dažnių diapazonas yra 2400–2483,5 MHz. Tai labai „apgyvendintas“ diapazonas, kuriame nieko nerasite: Wi-Fi, Bluetooth, visokių nuotolinio valdymo pultelių, apsaugos sistemų, belaidžių detektorių, pelių su klaviatūromis ir kitų belaidžių skaitmeninių įrenginių.

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

2,4 GHz dažnių juostos spektras

Interferencinė aplinka diapazone yra gana sudėtinga. Nepaisant to, „Logitech“ sugebėjo užtikrinti patikimą ir stabilų priėmimą, naudodama patobulintą ShockBurst protokolą NRF24 siųstuvų-imtuve kartu su dažnio pritaikymo algoritmais.

Kanalai juostoje yra sveikųjų skaičių MHz padėtyse, kaip apibrėžta specifikacijos NRF24 Nordic Semiconductor – iš viso 84 kanalai dažnių tinklelyje. Žinoma, Logitech vienu metu naudojamų dažnių kanalų skaičius yra mažesnis. Mes nustatėme, kad naudojami mažiausiai keturi. Dėl riboto naudojamo signalo spektro analizatoriaus pralaidumo nepavyko nustatyti tikslaus naudojamų dažnių pozicijų sąrašo, tačiau tai nebuvo būtina. Informacija iš klaviatūros į imtuvo raktą perduodama serijos režimu (trumpai įjungiami siųstuvas), naudojant dviejų padėčių dažnio moduliaciją GFSK 1 Mbaud simbolių greičiu:

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Klaviatūros radijo signalas laiko vaizde

Imtuvas naudoja priėmimo koreliacijos principą, todėl siunčiamame pakete yra preambulė ir adreso dalis. Triukšmui atsparus kodavimas nenaudojamas, duomenų korpusas šifruojamas AES128 algoritmu.

Apskritai Logitech belaidės klaviatūros radijo sąsają galima apibūdinti kaip visiškai asinchronišką su statistiniu multipleksavimu ir dažnio pritaikymu. Tai reiškia, kad klaviatūros siųstuvas perjungia kanalą, kad perduotų kiekvieną naują paketą. Imtuvas iš anksto nežino nei perdavimo laiko, nei dažnio kanalo, tačiau žinomas tik jų sąrašas. Imtuvas ir siųstuvas susitinka kanale dėl suderintų dažnio apėjimo ir klausymosi algoritmų, taip pat patobulintų ShockBurst patvirtinimo mechanizmų. Netyrėme, ar kanalų sąrašas yra statinis. Tikriausiai jo pasikeitimą lėmė dažnio pritaikymo algoritmas. Naudojant diapazono dažnio šaltinį, galima pastebėti kažką panašaus į dažnio šuoliavimo metodą (pseudoatsitiktinis veikimo dažnio derinimas).

Taigi, laiko ir dažnio neapibrėžtumo sąlygomis, kad būtų užtikrintas garantuotas visų klaviatūros signalų priėmimas, užpuolikas turės nuolat stebėti visą 84 pozicijų dažnių tinklelį, o tam reikia nemažai laiko. Čia tampa aišku, kodėl USB rakto ištraukimo pažeidžiamumas (CVE-2019-13054) šaltiniuose pozicionuojama kaip galimybė suleisti klavišų paspaudimus, o ne gauti užpuoliko prieigą prie duomenų, įvestų iš klaviatūros. Akivaizdu, kad belaidės klaviatūros radijo sąsaja yra gana sudėtinga ir užtikrina patikimą radijo ryšį tarp Logitech įrenginių sudėtingomis trukdžių sąlygomis 2,4 GHz dažnių juostoje.

Žvilgsnis į problemą iš vidaus

Savo tyrimui pasirinkome vieną iš esamų „Logitech K330“ klaviatūrų ir „Logitech Unifying“ raktą.

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

"Logitech K330"

Pažvelkime į klaviatūros vidų. Įdomus elementas, kurį reikia ištirti, yra „Nordic Semiconductor“ SoC NRF24 lustas.

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

SoC NRF24 „Logitech K330“ belaidėje klaviatūros plokštėje

Programinė įranga yra vidinėje atmintyje, skaitymo ir derinimo mechanizmai išjungti. Deja, programinė įranga nebuvo paskelbta atviruosiuose šaltiniuose. Todėl nusprendėme pažvelgti į problemą iš kitos pusės – ištirti vidinį Logitech dongle imtuvo turinį.

„Dongle“ imtuvo „vidinis pasaulis“ yra gana įdomus. Dongle yra lengvai išardomas, turi pažįstamą NRF24 laidą su įmontuotu USB valdikliu ir gali būti perprogramuojamas tiek iš USB pusės, tiek tiesiai iš programuotojo.

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Logitech raktas be korpuso

Kadangi yra standartinis programinės įrangos atnaujinimo mechanizmas naudojant Firmware Update Tool programos (iš kurios galite išgauti atnaujintą programinės aparatinės įrangos versiją), nereikia ieškoti programinės įrangos rakto viduje.

Kas buvo padaryta: programinė įranga RQR_012_005_00028.bin buvo ištraukta iš Firmware Update Tool programos korpuso. Norint patikrinti jo vientisumą, rakto valdiklis buvo prijungtas kabeliu į ChipProg-48 programuotoją:

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Kabelis Logitech dongle prijungimui prie ChipProg 48 programuotojo

Norint kontroliuoti programinės aparatinės įrangos vientisumą, ji buvo sėkmingai įdėta į valdiklio atmintį ir veikė tinkamai, klaviatūra ir pelė buvo prijungta prie rakto per Logitech Unifying. Modifikuotą programinę-aparatinę įrangą galima įkelti naudojant standartinį atnaujinimo mechanizmą, nes programinės aparatinės įrangos kriptografinės apsaugos mechanizmų nėra. Tyrimo tikslais naudojome fizinį ryšį su programuotoju, nes tokiu būdu derinimas vyksta daug greičiau.

Programinės įrangos tyrimas ir ataka prieš vartotojo įvestį

NRF24 lustas sukurtas remiantis tradicinės Harvardo architektūros „Intel 8051“ skaičiavimo šerdimi. Šerdyje siųstuvas-imtuvas veikia kaip išorinis įrenginys ir yra dedamas į adresų erdvę kaip registrų rinkinys. Mikroschemos ir šaltinio kodo pavyzdžių dokumentaciją galima rasti internete, todėl išardyti programinę-aparatinę įrangą nėra sunku. Atvirkštinės inžinerijos metu lokalizavome klavišų paspaudimų duomenų priėmimo iš radijo kanalo ir konvertavimo į HID formatą funkcijas, kad būtų galima perduoti į pagrindinį kompiuterį per USB sąsają. Įpurškimo kodas buvo patalpintas į laisvos atminties adresus, kuriuose buvo valdymo perėmimo, pradinio vykdymo konteksto išsaugojimo ir atkūrimo įrankiai, taip pat funkcinis kodas.

Rakto paspaudimo arba atleidimo paketas, gautas iš radijo kanalo, yra iššifruojamas, konvertuojamas į standartinę HID ataskaitą ir siunčiamas į USB sąsają kaip iš įprastos klaviatūros. Atliekant tyrimą mus labiausiai domina HID ataskaitos dalis, kurioje yra modifikatorių vėliavėlių baitas ir 6 baitų masyvas su klavišų kodais (informacija apie HID čia).

HID ataskaitos struktūra:

// Keyboard HID report structure.
// See https://flylib.com/books/en/4.168.1.83/1/ (last access 2018 december)
// "Reports and Report Descriptors", "Programming the Microsoft Windows Driver Model"
typedef struct{
    uint8_t Modifiers;
    uint8_t Reserved;
    uint8_t KeyCode[6];
}HidKbdReport_t;

Iškart prieš perduodant HID struktūrą į pagrindinį kompiuterį, įvestas kodas perima valdymą, nukopijuoja 8 baitus vietinių HID duomenų į atmintį ir siunčia juos į radijo šoninį kanalą aiškiu tekstu. Kode tai atrodo taip:

//~~~~~~~~~ Send data via radio ~~~~~~~~~~~~~~~~~~~~~~~~~>
// Profiling have shown time execution ~1.88 mSec this block of code
SaveRfState();                  // save transceiver state
RfInitForTransmition(TransmitRfAddress);        // configure for special trnsmition
hal_nrf_write_tx_payload_noack(pDataToSend,sizeof(HidKbdReport_t)); // Write payload to radio TX FIFO
CE_PULSE();                 // Toggle radio CE signal to start transmission
RestoreRfState();               // restore original transceiver state
//~~~~~~~~~ Send data via radio ~~~~~~~~~~~~~~~~~~~~~~~~~<

Šoninis kanalas organizuojamas mūsų nustatytu dažniu, atsižvelgiant į tam tikras manipuliavimo greičio ir paketų struktūros charakteristikas.

Siųstuvo-imtuvo veikimas mikroschemoje NRF24 yra pagrįsta būsenos grafiku, į kurį organiškai integruotas patobulintas ShockBurst protokolas. Mes nustatėme, kad prieš pat perduodant HID duomenis į pagrindinę USB sąsają, siųstuvas-imtuvas buvo IDLE būsenoje. Tai leidžia saugiai perkonfigūruoti jį veikti šoniniame kanale. Įvestas kodas perima valdymą, išsaugo visą pradinę siųstuvo-imtuvo konfigūraciją ir perjungia jį į naują perdavimo režimą šoniniame kanale. Patobulinto ShockBurst patvirtinimo mechanizmas šiuo režimu išjungtas; HID duomenys yra perduodami aiškia forma oru. Paketo struktūra šoniniame kanale parodyta paveikslėlyje žemiau, signalų diagramos gautos po demoduliacijos ir prieš atkuriant duomenų laikrodžio sinchronizaciją. Adreso reikšmė pasirinkta, kad būtų lengviau vizualiai identifikuoti pakuotę.

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Demoduliuotas pliūpsnio signalas šoniniame kanale

Po to, kai paketas perduodamas į šoninį kanalą, įvestas kodas atkuria siųstuvo-imtuvo būseną. Dabar jis vėl pasirengęs normaliai veikti pradinės programinės įrangos kontekste.

Dažnio ir laiko dažnio srityse šoninis kanalas atrodo taip:

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Šoninio kanalo spektrinis ir laiko-dažnio vaizdavimas

Norėdami išbandyti NRF24 lusto veikimą su modifikuota programine įranga, surinkome stovą, kuriame buvo „Logitech“ raktas su modifikuota programine įranga, belaidė klaviatūra ir imtuvas, surinktas remiantis kinišku moduliu su NRF24 mikroschema.

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Logitech belaidės klaviatūros radijo signalo perėmimo grandinė

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

NRF24 pagrįstas modulis

Ant suoliuko, normaliai veikiant klaviatūrai, prijungus prie Logitech dongle, stebėjome, kaip šoniniame radijo kanale perduodami aiškūs duomenys apie klavišų paspaudimus, o pagrindinėje radijo sąsajoje – normalus šifruotų duomenų siuntimas. Taigi galėjome tiesiogiai perimti vartotojo klaviatūros įvestį:

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Klaviatūros įvesties perėmimo rezultatas

Įvestas kodas šiek tiek uždelsia rakto programinės įrangos veikimą. Tačiau jie yra per maži, kad vartotojas galėtų pastebėti.

Kaip galite įsivaizduoti, šiam atakos vektoriui galima naudoti bet kurią „Logitech“ klaviatūrą, suderinamą su „Unifying“ technologija. Kadangi ataka nukreipta į „Unifying“ imtuvą, įtrauktą į daugumą „Logitech“ klaviatūrų, jis nepriklauso nuo konkretaus klaviatūros modelio.

išvada

Tyrimo rezultatai rodo, kad užpuolikai gali panaudoti svarstytą scenarijų: jei įsilaužėlis auką pakeis Logitech belaidės klaviatūros rakto imtuvu, tada jis galės sužinoti aukos paskyrų slaptažodžius su visomis iš to sekančiomis žinutėmis. pasekmes. Nepamirškite, kad taip pat galima įvesti klavišų paspaudimus, o tai reiškia, kad nėra sunku įvykdyti savavališką kodą aukos kompiuteryje.

Ką daryti, jei staiga užpuolikas gali nuotoliniu būdu modifikuoti bet kurio „Logitech“ rakto programinę įrangą per USB? Tada iš glaudžiai išdėstytų raktų galite sukurti kartotuvų tinklą ir padidinti nuotėkio atstumą. Nors „finansiškai turtingas“ užpuolikas galės „klausytis“ klaviatūros įvesties ir spausti klavišus net iš gretimo pastato, šiuolaikinė radijo priėmimo įranga su itin selektyviomis sistemomis, jautrūs radijo imtuvai su trumpo dažnio derinimo laiku ir labai kryptingomis antenomis. „klausytis“ klaviatūros įvesties ir paspausti klavišus net iš gretimo pastato.

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Profesionali radijo aparatūra

Kadangi Logitech klaviatūros bevielis duomenų perdavimo kanalas yra gana gerai apsaugotas, rastas atakos vektorius reikalauja fizinės prieigos prie imtuvo, o tai labai apriboja užpuoliką. Vienintelė apsaugos galimybė šiuo atveju būtų imtuvo programinės aparatinės įrangos kriptografinės apsaugos mechanizmų naudojimas, pavyzdžiui, imtuvo pusės įkeltos programinės įrangos parašo tikrinimas. Deja, NRF24 to nepalaiko ir neįmanoma įdiegti apsaugos pagal dabartinę įrenginio architektūrą. Taigi pasirūpinkite savo raktais, nes aprašyta atakos parinktis reikalauja fizinės prieigos prie jų.

Pasirūpinkite savo raktais: „Logitech“ klaviatūros imtuvo saugos tyrimas

Raccoon Security yra speciali ekspertų komanda iš Vulcan tyrimų ir plėtros centro praktinės informacijos saugos, kriptografijos, grandinių projektavimo, atvirkštinės inžinerijos ir žemo lygio programinės įrangos kūrimo srityse.

Šaltinis: www.habr.com

Добавить комментарий