SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

Lykas jo witte, is de koade útfierd yn 'e enklave serieus beheind yn syn funksjonaliteit. It kin gjin systeemoproppen meitsje. It kin net útfiere I / O operaasjes. It wit it basisadres fan it koadesegment fan de hostapplikaasje net. It kin net jmp of belje host applikaasje koade. It hat gjin idee oer de adresromtestruktuer dy't de hostapplikaasje regelet (bygelyks hokker siden yn kaart brocht binne of hokker soarte gegevens op dy siden sitte). It kin it bestjoeringssysteem net freegje om in stik fan it ûnthâld fan 'e hostapplikaasje dêrop yn kaart te bringen (bygelyks fia /proc/pid/maps). Naïve besykjen om blyn te lêzen in willekeurich ûnthâld regio fan in host applikaasje, net te hawwen oer besykjen om te skriuwen, sil ier of let (wierskynlik de eardere) liede ta de twongen beëiniging fan it enklave programma. Dit bart as de firtuele adresromte-regio oanfrege troch de enklave net tagonklik is foar de hostapplikaasje.

Sjoen sokke hurde realiteiten, sil in firusskriuwer SGX-enklaves kinne brûke om syn kweade doelen te berikken?

- Hack foar probearjen fan adressen om te sjen oft se kinne wurde lêzen
- Hack om adressen te ûndersiikjen foar skriuwberens
- Hack om kontrôlestream troch te lieden
- Wat jouwe de trije hjirboppe neamde hacks de skurk?
- Hoe't de smjunt dizze hacks brûkt om ranzomwari te meitsjen

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

Op grûn fan al it boppesteande wurdt it algemien akseptearre dat in enklave allinich by steat is om de hostapplikaasje te tsjinjen, en dat de enklave syn eigen inisjatyf net kin útoefenje, ynklusyf kweade. Dit betsjut dat enklaves fan gjin praktyske wearde binne foar firusskriuwers. Dizze hastige oanname is ien fan 'e redenen wêrom't SGX-beskerming asymmetrysk is: hostapplikaasjekoade kin gjin tagong krije ta enklave-ûnthâld, wylst enklavekoade kin lêze en skriuwe nei elk hostapplikaasje-ûnthâldadres.

Dêrom, as kweade enklave-koade by steat wie om willekeurige systeemoproppen út namme fan 'e hostapplikaasje te meitsjen, willekeurige koade út namme út te fieren, it ûnthâld fan' e hostapplikaasje te scannen en misbrûkbere ROP-keatlingen dêryn te finen, koe it de folsleine kontrôle fan hostapplikaasje gripe, yn stealth modus. It kin net allinich brûkersbestannen stelle en fersiferje, mar ek hannelje út namme fan 'e brûker. Stjoer bygelyks phishing-e-mails út namme fan him of fiere DoS-oanfallen. Sûnder eangst foar sels de meast moderne beskermjende meganismen, lykas stackkanaries en adressanearring.

Wy sille jo in pear hacks sjen litte dy't oanfallers brûke om de hjirboppe beskreaune beheiningen te oerwinnen om te profitearjen fan SGX foar har eigen kweade doelen: ROP-oanfallen. Of om willekeurige koade út te fieren dy't ferklaaid is as in hostapplikaasjeproses (fergelykber mei proses hollowing, dy't faak brûkt wurdt troch malware), of om in ready-made malware te fermoardzjen (om har malware te bewarjen fan ferfolging troch antyvirussen en oare ferdigeningsmeganismen).

Hack foar probearjen fan adressen om te sjen oft se lêze kinne

Om't de enklave net wit hokker berikken fan 'e firtuele adresromte tagonklik binne foar de hostapplikaasje, en om't de enklave twongen wurdt te beëinigjen by it besykjen om in net tagonklik adres te lêzen, wurdt de oanfaller konfrontearre mei de taak om in manier te finen om te fjochtsjen- tolerant scan de adresromte. Fyn in manier om beskikbere firtuele adressen yn kaart te bringen. De smjunt lost dit probleem op troch de TSX-technology fan Intel te misbrûken. Brûkt ien fan 'e side-effekten fan TSX: as de funksje foar ûnthâld tagong wurdt pleatst yn in TSX-transaksje, dan wurde útsûnderings dy't ûntsteane út tagong ta ûnjildiche adressen ûnderdrukt troch TSX sûnder it bestjoeringssysteem te berikken. As der besocht wurdt om tagong te krijen ta in ûnjildich ûnthâldadres, wurdt allinnich de hjoeddeiske transaksje ôfbrutsen, net it hiele enklaveprogramma. Dat. TSX lit in enklave feilich tagong krije ta elk adres fanút in transaksje - sûnder it risiko fan ynstoarten.

as it oantsjutte adres is beskikber host applikaasje, de TSX transaksje is meast faak suksesfol. Yn seldsume gefallen kin it mislearje fanwege eksterne ynfloeden lykas ûnderbrekkingen (lykas ûnderbrekten fan planner), cache-útsettings, of simultane wiziging fan in ûnthâldlokaasje troch meardere prosessen. Yn dizze seldsume gefallen jout de TSX in flaterkoade werom dy't oanjout dat de mislearring tydlik is. Yn dizze gefallen moatte jo gewoan de transaksje opnij begjinne.

as it oantsjutte adres is net beskikber hostapplikaasje ûnderdrukt TSX de útsûndering dy't barde (it OS wurdt net op 'e hichte brocht) en annulearret de transaksje. In flaterkoade wurdt weromjûn nei de enklavekoade, sadat it kin reagearje op it feit dat de transaksje is annulearre. Dizze flaterkoades jouwe oan dat it adres yn kwestje net beskikber is foar de hostapplikaasje.

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

Dizze manipulaasje fan TSX fan binnen de enklave hat in moaie funksje foar de skurk: om't de measte hardware-prestaasjestellers net wurde bywurke op it stuit dat de enklavekoade wurdt útfierd, is it ûnmooglik om TSX-transaksjes te folgjen útfierd yn 'e enklave. Sa bliuwt kweade manipulaasje fan 'e TSX folslein ûnsichtber foar it bestjoeringssysteem.

Dêrnjonken, om't de boppesteande hack net fertrout op alle systeemoproppen, kin it net ûntdutsen noch foarkommen wurde troch gewoan systeemoproppen te blokkearjen; wat meastal in posityf resultaat jout yn de striid tsjin it aaisykjen.

De smjunt brûkt de hjirboppe beskreaune hack om de hostapplikaasjekoade te sykjen foar gadgets dy't geskikt binne foar it foarmjen fan in ROP-ketting. Tagelyk hoecht er net elk adres te ûndersiikjen. It is genôch om ien adres te ûndersiikjen fan elke side fan 'e firtuele adresromte. It probearjen fan alle 16 gigabyte ûnthâld nimt sawat 45 minuten (op in Intel i7-6700K). As resultaat krijt de skurk in list mei útfierbere siden dy't geskikt binne foar it bouwen fan in ROP-ketting.

Hack foar probearjen fan adressen foar skriuwberens

Om in enklaveferzje fan in ROP-oanfal út te fieren, moat in oanfaller kinne sykje nei skriuwbere net brûkte ûnthâldgebieten fan 'e hostapplikaasje. De oanfaller brûkt dizze ûnthâldlokaasjes om in falske stackframe te ynjeksje en in payload (shellcode) te ynjeksje. De ûnderste rigel is dat in kweade enklave net by steat is om de hostapplikaasje te fereaskje om ûnthâld foar himsels te allocearjen, mar kin ynstee ûnthâld misbrûke dat al tawiisd is troch de hostapplikaasje. As it him fansels slagget om sokke gebieten te finen sûnder de enklave yn te fallen.

De smjunt fiert dizze sykopdracht út troch in oare side-effekt fan TSX te brûken. Earst, lykas yn it foarige gefal, ûndersiket it it adres foar har bestean, en kontrolearret dan oft de side dy't oerienkomt mei dit adres skriuwber is. Om dit te dwaan, brûkt de smjunt de folgjende hack: hy pleatst in skriuwfunksje yn in TSX-transaksje, en nei't it foltôge is, mar foardat it foltôge is, annulearret hy de transaksje mei geweld (eksplisyt ôfbrekke).

Troch te sjen nei de weromkearkoade fan in TSX-transaksje, begrypt de oanfaller oft it skriuwber is. As it om in "eksplisite abortus" giet, begrypt de skurk dat de opname suksesfol west hie as hy dermei folge hie. As de side allinich lêzen is, dan einiget de transaksje mei in flater oars as "eksplisyt ôfbrekke".

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

Dizze manipulaasje fan TSX hat in oare funksje dy't aardich is foar de skurk (njonken de ûnmooglikheid om te folgjen fia hardwareprestaasjestellers): om't alle ûnthâldskriuwkommando's allinich ynset wurde as de transaksje suksesfol is, soarget de transaksje om te foltôgjen dat de ûndersochte ûnthâldsel bliuwt ûnferoare.

Hack om kontrôlestream troch te lieden

By it útfieren fan in ROP-oanfal út in enklave - yn tsjinstelling ta tradisjonele ROP-oanfallen - kin de oanfaller kontrôle krije oer it RIP-register sûnder bugs yn it oanfallen programma te eksploitearjen (bufferoerstream of sa). In oanfaller kin de wearde fan it RIP-register direkt oerskriuwe op 'e stapel. Benammen kin it de wearde fan dit register ferfange troch in eigen ROP-ketting.

As de ROP-ketting lykwols lang is, dan kin it oerskriuwen fan in grut stik fan 'e stack fan 'e hostapplikaasje liede ta datakorrupsje en ûnferwacht programmagedrach. De skurk, dy't syn oanfal ferburgen besiket út te fieren, is net tefreden mei dizze stân fan saken. Dêrom makket it in falsk tydlik stackframe foar himsels en bewarret syn ROP-ketting dêryn. De falske stack frame wurdt pleatst yn in willekeurige skriuwbere ûnthâld lokaasje, leaving de echte stack yntakt.

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

Wat jouwe de trije hjirboppe neamde hacks de skurk?

(1) Earst, de kweade enklave troch hack foar probearjen fan adressen om te sjen oft se lêze kinne, - siket de hostapplikaasje foar misbrûkbere ROP-gadgets.

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

(2) Dan troch hack foar probearjen fan adressen foar skriuwberens, - in kweade enklave identifisearret gebieten yn it ûnthâld fan 'e hostapplikaasje dy't geskikt binne foar it ynjeksje fan in lading.

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

(3) Dêrnei makket de enklave in ROP-ketting fan 'e gadgets ûntdutsen yn stap (1) en ynjeksje dizze ketting yn' e hostapplikaasjestapel.

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

(4) As lêste, as de hostapplikaasje de ROP-ketting tsjinkomt dy't yn 'e foarige stap makke is, begjint de kweade loadload út te fieren - mei de privileezjes fan' e hostapplikaasje en de mooglikheid om systeemoproppen te meitsjen.

Hoe't in smjunt dizze hacks brûkt om ranzowari te meitsjen

Nei't de hostapplikaasje kontrôle oerbrocht nei de enklave fia ien fan 'e ECALL's (sûnder te fermoedzjen dat dizze enklave kwea-aardich is), siket de kweade enklave frije romte yn it ûnthâld fan 'e hostapplikaasje foar it ynjeksje fan koade (nimt as frije romten dy sekwinsjes fan sellen dat fol mei nullen). Dan troch hack foar probearjen fan adressen om te sjen oft se lêze kinne, - de enklave siket nei útfierbere siden yn 'e host-applikaasje en genereart in ROP-ketting dy't in nije triem mei de namme "RANSOM" makket yn 'e hjoeddeistige map (yn in echte oanfal fersiferet de enklave besteande brûkersbestannen) en toant in losjildberjocht. Tagelyk is de hostapplikaasje naïv fan betinken dat de enklave gewoan twa nûmers tafoegje. Hoe sjocht dit der út yn koade?

Lit ús foar it gemak fan persepsje wat mnemonics yntrodusearje fia de definysjes:

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

Wy bewarje de orizjinele wearden fan 'e RSP- en RBP-registers om de normale wurking fan' e hostapplikaasje te herstellen nei it útfieren fan 'e payload:

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

Wy binne op syk nei in gaadlik stack frame (sjoch de koade út de seksje "hack foar trochferwizing kontrôle flow").

Geskikt ROP-gadgets fine:

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

In plak fine om de lading te ynjeksje:

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

Wy bouwe in ROP-ketting:

SGX-malware: hoe't smjunten de nije Intel-technology brûke foar oare doelen dan wêrfoar't it is betocht

Dit is hoe't Intel's SGX-technology, ûntworpen om kweade programma's tsjin te gean, wurdt eksploitearre troch skurken om tsjinoerstelde doelen te berikken.

Boarne: www.habr.com

Add a comment