Cragen gorchymyn cudd yn syntheseisydd Yamaha a oedd yn caniatáu gweithredu cod trwy MIDI

Cyhoeddodd Anna Antonenko, sy'n datblygu systemau wedi'u mewnosod ac yn ei hamser hamdden yn datblygu system weithredu BOSS (System Weithredu gyda Diogelwch yn seiliedig ar BEAM), ganlyniadau peirianneg wrthdroi'r syntheseiddydd cerddoriaeth Yamaha PSR-E433. Yn ystod y gwaith a wnaed, nodwyd rhyngwyneb cragen obfuscated yn y syntheseisydd, a oedd yn ei gwneud hi'n bosibl trefnu gweithrediad ei god ar lefel firmware. Gellir cyrchu'r rhyngwyneb cregyn trwy anfon pecynnau MIDI sy'n cynnwys negeseuon SysEx, y gellir eu trosglwyddo pan fydd y syntheseisydd wedi'i gysylltu trwy USB. Mae gwybodaeth am y sglodyn a'r firmware a gafwyd yn ystod peirianneg wrthdro, yn ogystal ag enghreifftiau cod a thomiau dadfygio, yn cael eu postio ar GitHub.

Cododd diddordeb mewn peirianneg wrthdroi sawl blwyddyn yn ôl, ar ôl i Anna benderfynu glanhau tu mewn y syntheseisydd o lwch ac ar yr un pryd fodloni ei chwilfrydedd yn ymwneud â'r awydd i weld y tu mewn i'r ddyfais. Roedd y bwrdd yn cynnwys sglodyn YAMAHA SWL01U, na ellid dod o hyd i wybodaeth fanwl amdano ar y Rhyngrwyd. Ychydig fisoedd yn ôl, daeth Anna ar draws llawlyfr ar gyfer model syntheseisydd tebyg, a oedd yn cynnwys pinout y sglodyn hwn. Dadosododd Anna'r ddyfais eto a dechreuodd arbrofion, gan ddefnyddio'r pinnau sydd ar gael ar y bwrdd ar gyfer rhyngwyneb dadfygio JTAG a phorthladd UART.

Cragen gorchymyn cudd yn syntheseisydd Yamaha a oedd yn caniatáu gweithredu cod trwy MIDI

Gan ddefnyddio dadfygiwr OpenOCD, cysylltu â JTAG ac arbrofion, canfuwyd bod y bwrdd yn defnyddio sglodyn gyda chraidd prosesydd ARM7TDMI. Ar ôl astudio'r gosodiad cof yn y dadfygiwr, roeddem yn gallu dadlwytho cynnwys y firmware sydd wedi'i leoli mewn cof ROM a Flash. Yna dadansoddwyd y delweddau firmware gan ddefnyddio pecyn peirianneg gwrthdroi Ghidra.

Wrth edrych ar y data llinyn a dynnwyd o'r firmware, sylwyd ar set o linellau (“help”, “info”, “ver”, “allgofnodi”, ac ati) sy'n debyg i orchmynion cregyn. Wrth archwilio'r awgrymiadau i'r llinellau hyn, datgelwyd cod a oedd yn galw swyddogaethau i brosesu gorchmynion, yn atgoffa rhywun o ryngwyneb mewngofnodi a chragen gorchymyn. Datgelwyd hefyd, i actifadu'r gragen, bod y gorchymyn “mewngofnodi” yn cael ei ddarparu, y mae angen i chi basio'r cyfrinair “#0000” iddo. cragen_run_command gwag(torgoch * command_input) { os (shell_login_state == 0) { os (shell_compare_command(command_input, "login") == 0) { shell_ask_passwd(); // prints " passwd? " shell_login_state = 1; } } arall os (shell_login_state == 1) { os (shell_compare_command(command_input, "#0000") == 0) { shell_login_ok(); // prints "login OK" shell_login_state = 2; } arall { shell_print("Gwall Passwd\r"); shell_login_state = 0; } } arall {// rhedeg y gorchymyn } } mewn gwirionedd

Dangosodd archwiliad pellach o'r firmware fod gorchmynion yn cael eu prosesu mewn sypiau, bob amser yn dechrau gyda'r un 8 beit o ddata ac yn gorffen gyda'r cod 0xf7. Gan mai dim ond trwy MIDI y cynhelir rhyngweithio allanol â'r syntheseisydd, a bod y fanyleb MIDI yn darparu math gwasanaeth arbennig o negeseuon SysEx, tybiwyd y gellid defnyddio hyn i drosglwyddo gorchmynion. Cryfhau ymhellach y dyfalu oedd bod negeseuon SysEx a phecynnau wedi'u dosrannu gan y gragen yn dechrau gydag un cod, 0xf0, ac yna ID y gwneuthurwr 0x43 (Yamaha).

I brofi'r ddamcaniaeth, ysgrifennwyd sgript Python a gyfieithodd y data mewnbwn i becynnau protocol MIDI. A gweithiodd y dull: mewngofnodi passwd? #0000 mewngofnodi Iawn > help allgofnodi help ? info ver stack perf-on perf-off perf-disp d dp d xxxxx d/s xxxxx m DATA CYFEIRIAD m/b DATA CYFEIRIAD m/w DATA CYFEIRIAD m/l DATA CYFEIRIAD > info DevelopName PSR-E433 DevelopNumber #3341 Prif DdatblyguNumber # 3341 Gwneud data & amser MAI 16 2012 19:00:57 J/E Dewiswch Saesneg >

Roedd yr anogwr a ddangoswyd wrth anfon y gorchymyn "help" yn cynnwys, ymhlith pethau eraill, orchmynion ar gyfer newid cynnwys y cof. Gan ddefnyddio'r gorchmynion hyn, roedd yn bosibl llwytho cod mympwyol i'r cof a throsglwyddo rheolaeth iddo, gan ddisodli'r pwyntydd ar y pentwr a ddefnyddiwyd i ddychwelyd ar ôl cwblhau prosesu gorchymyn. Fel arbrawf, gosodwyd cymhwysiad syml wedi'i ysgrifennu mewn iaith gydosod mewn ardal cof nas defnyddiwyd sy'n allbynnu'r llinyn “HeloWrld” i ddangosydd LCD 8-cymeriad. Roedd y rhaglen wedi'i fformatio fel ffeil MIDI reolaidd, yr oedd angen ei throsglwyddo i'r ddyfais yn unig.

Cragen gorchymyn cudd yn syntheseisydd Yamaha a oedd yn caniatáu gweithredu cod trwy MIDI

Ar ôl hyn, dechreuodd y gwaith o astudio nodweddion allbwn graffeg ar arddangosfa LCD, gan arwain at baratoi cod sy'n allbynnu cynnwys picsel mympwyol i'r ardal gymeriad, yn gydamserol â chwarae fideo Bad Apple ar ddyfais allanol (fideo gydag arddangosiad ).

Cragen gorchymyn cudd yn syntheseisydd Yamaha a oedd yn caniatáu gweithredu cod trwy MIDI
Chwarae fideo


Ffynhonnell: opennet.ru
Prynu gwesteio dibynadwy ar gyfer gwefannau sydd â diogelwch DDoS, gweinyddwyr VPS VDS 🔥 Prynu cynnal gwefannau dibynadwy gyda diogelwch DDoS, gweinyddion VPS VDS | ProHoster