Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

Siç e dini, kodi i ekzekutuar në enklavë është seriozisht i kufizuar në funksionalitetin e tij. Nuk mund të bëjë thirrje sistemore. Nuk mund të kryejë operacione I/O. Nuk e di adresën bazë të segmentit të kodit të aplikacionit pritës. Nuk mund të jmp ose të thërrasë kodin e aplikacionit pritës. Ai nuk ka asnjë ide për strukturën e hapësirës së adresave që drejton aplikacionin pritës (për shembull, cilat faqe janë hartuar ose çfarë lloj të dhënash gjenden në ato faqe). Ai nuk mund t'i kërkojë sistemit operativ të hartojë një pjesë të memories së aplikacionit pritës në të (për shembull, përmes /proc/pid/maps). Përpjekjet naive për të lexuar verbërisht një zonë arbitrare të memories së një aplikacioni pritës, për të mos përmendur përpjekjet për të shkruar, herët a vonë (me shumë mundësi e para) do të çojnë në përfundimin e detyruar të programit të enklave. Kjo ndodh sa herë që rajoni i hapësirës së adresës virtuale i kërkuar nga enklava është i paarritshëm për aplikacionin pritës.

Duke pasur parasysh realitete të tilla të ashpra, a do të jetë në gjendje një shkrues virusesh të përdorë enklavat SGX për të arritur qëllimet e tij keqdashëse?

– Hack për të hetuar adresat për të parë nëse ato mund të lexohen
- Hack për të hetuar adresat për shkrueshmërinë
– Hack për të ridrejtuar rrjedhën e kontrollit
– Çfarë i japin zuzarit tre sulmet e listuara më sipër?
– Si i përdor zuzari këto hakime për të krijuar ranzowari

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

Bazuar në të gjitha sa më sipër, përgjithësisht pranohet se një enklavë është në gjendje të shërbejë vetëm për aplikacionin pritës dhe se enklava nuk mund të ushtrojë iniciativën e saj, duke përfshirë ato me qëllim të keq. Kjo do të thotë se enklavat nuk kanë asnjë vlerë praktike për shkrimtarët e viruseve. Ky supozim i nxituar është një nga arsyet pse mbrojtja SGX është asimetrike: kodi i aplikacionit pritës nuk mund të aksesojë memorien e enklave, ndërsa kodi i enklave mund të lexojë dhe shkruajë në çdo adresë të memories së aplikacionit pritës.

Prandaj, nëse kodi i enklavës me qëllim të keq ishte në gjendje të bënte thirrje arbitrare të sistemit në emër të aplikacionit pritës, të ekzekutonte kod arbitrar në emër të tij, të skanonte memorien e aplikacionit pritës dhe të gjente zinxhirë ROP të abuzueshëm në të, ai mund të merrte kontrollin e plotë të aplikacionit pritës, në modaliteti i fshehtë. Ai jo vetëm që mund të vjedhë dhe enkriptojë skedarët e përdoruesit, por edhe të veprojë në emër të përdoruesit. Për shembull, dërgoni email phishing në emër të tij ose kryeni sulme DoS. Pa frikë edhe nga mekanizmat më modernë mbrojtës, të tillë si kanarinat e stivës dhe dezinfektimi.

Ne do t'ju tregojmë disa hakime që sulmuesit përdorin për të kapërcyer kufizimet e përshkruara më sipër për të përfituar nga SGX për qëllimet e tyre keqdashëse: Sulmet ROP. Ose për të ekzekutuar kodin arbitrar të maskuar si një proces aplikimi pritës (i ngjashëm me zgavrën e procesit, i cili shpesh përdoret nga malware), ose për të maskuar një malware të gatshëm (për të shpëtuar malware-in e tij nga persekutimi nga antiviruset dhe mekanizmat e tjerë mbrojtës).

Hack për hetimin e adresave për të parë nëse ato mund të lexohen

Meqenëse enklava nuk e di se cilat vargje të hapësirës së adresave virtuale janë të aksesueshme për aplikacionin pritës, dhe meqenëse enklava detyrohet të përfundojë kur përpiqet të lexojë një adresë të paarritshme, sulmuesi përballet me detyrën për të gjetur një mënyrë për të gabuar- skanoni me tolerancë hapësirën e adresave. Gjeni një mënyrë për të hartuar adresat virtuale të disponueshme. Ky zuzar e zgjidh këtë problem duke keqpërdorur teknologjinë TSX të Intel. Përdor një nga efektet anësore të TSX: nëse funksioni i aksesit në memorie vendoset në një transaksion TSX, atëherë përjashtimet që lindin nga qasja në adresa të pavlefshme shtypen nga TSX pa arritur në sistemin operativ. Nëse bëhet një përpjekje për të hyrë në një adresë memorie të pavlefshme, vetëm transaksioni aktual ndërpritet, jo i gjithë programi i enklave. Se. TSX lejon një enklavë të aksesojë në mënyrë të sigurt çdo adresë nga brenda një transaksioni - pa rrezik kolapsi.

Nëse adresa e specifikuar është në dispozicion aplikacioni pritës, transaksioni TSX është më shpesh i suksesshëm. Në raste të rralla, mund të dështojë për shkak të ndikimeve të jashtme si ndërprerjet (siç janë ndërprerjet e programuesit), dëbimet e memories ose modifikimi i njëkohshëm i një vendndodhjeje memorie nga procese të shumta. Në këto raste të rralla, TSX kthen një kod gabimi që tregon se dështimi është i përkohshëm. Në këto raste, ju vetëm duhet të rinisni transaksionin.

Nëse adresa e specifikuar nuk është e disponueshme aplikacioni pritës, TSX shtyp përjashtimin që ka ndodhur (OS nuk njoftohet) dhe anulon transaksionin. Një kod gabimi kthehet në kodin e enklavës në mënyrë që ai të mund të reagojë ndaj faktit që transaksioni është anuluar. Këto kode gabimi tregojnë se adresa në fjalë nuk është e disponueshme për aplikacionin pritës.

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

Ky manipulim i TSX nga brenda enklavës ka një veçori të këndshme për zuzarin: meqenëse shumica e numëruesve të performancës së harduerit nuk përditësohen në kohën kur ekzekutohet kodi i enklavës, është e pamundur të gjurmohen transaksionet TSX të ekzekutuara brenda enklavës. Kështu, manipulimi me qëllim të keq i TSX mbetet plotësisht i padukshëm për sistemin operativ.

Për më tepër, meqenëse hakimi i mësipërm nuk mbështetet në asnjë thirrje sistemi, ai nuk mund të zbulohet dhe as të parandalohet thjesht duke bllokuar thirrjet e sistemit; që zakonisht jep rezultat pozitiv në luftën kundër gjuetisë së vezëve.

Iuzi përdor hakimin e përshkruar më sipër për të kërkuar kodin e aplikacionit pritës për pajisje të përshtatshme për formimin e një zinxhiri ROP. Në të njëjtën kohë, ai nuk ka nevojë të hetojë çdo adresë. Mjafton të hetosh një adresë nga çdo faqe e hapësirës së adresave virtuale. Kërkimi i të gjitha 16 gigabajt të memories zgjat rreth 45 minuta (në një Intel i7-6700K). Si rezultat, zuzari merr një listë të faqeve të ekzekutueshme që janë të përshtatshme për ndërtimin e një zinxhiri ROP.

Hack për kërkimin e adresave për shkrimshmëri

Për të kryer një version enklavë të një sulmi ROP, një sulmues duhet të jetë në gjendje të kërkojë zona të memories të papërdorura të shkrueshme të aplikacionit pritës. Sulmuesi përdor këto lokacione memorie për të injektuar një kornizë të rreme të pirgut dhe për të injektuar një ngarkesë (kodi shell). Në fund të fundit është se një enklavë me qëllim të keq nuk është në gjendje të kërkojë që aplikacioni pritës të ndajë memorie për vete, por në vend të kësaj mund të keqpërdor memorien e alokuar tashmë nga aplikacioni pritës. Nëse, sigurisht, ai arrin të gjejë zona të tilla pa shembur enklavën.

Hurri e kryen këtë kërkim duke shfrytëzuar një tjetër efekt anësor të TSX. Së pari, si në rastin e mëparshëm, ai heton adresën për ekzistencën e saj dhe më pas kontrollon nëse faqja që korrespondon me këtë adresë është e shkruajtshme. Për ta bërë këtë, zuzari përdor hakimin e mëposhtëm: ai vendos një funksion shkrimi në një transaksion TSX dhe pasi të ketë përfunduar, por para se të përfundojë, ai e ndërpret me forcë transaksionin (aborti i qartë).

Duke parë kodin e kthimit nga një transaksion TSX, sulmuesi kupton nëse ai është i shkruhet. Nëse është një "abort eksplicit", zuzari e kupton se regjistrimi do të kishte qenë i suksesshëm nëse ai do ta kishte ndjekur. Nëse faqja është vetëm për lexim, atëherë transaksioni përfundon me një gabim të ndryshëm nga "aborti i qartë".

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

Ky manipulim i TSX ka një veçori tjetër që është e këndshme për zuzarin (përveç pamundësisë së gjurmimit përmes numëruesve të performancës së harduerit): meqenëse të gjitha komandat e shkrimit të kujtesës kryhen vetëm nëse transaksioni është i suksesshëm, detyrimi i transaksionit për të përfunduar siguron që qeliza e memories së kërkuar mbetet e pandryshuar.

Hack për të ridrejtuar rrjedhën e kontrollit

Kur kryen një sulm ROP nga një enklavë - ndryshe nga sulmet tradicionale ROP - sulmuesi mund të fitojë kontrollin e regjistrit RIP pa shfrytëzuar ndonjë defekt në programin e sulmuar (mbushje buffer ose diçka e tillë). Një sulmues mund të mbishkruajë drejtpërdrejt vlerën e regjistrit RIP të ruajtur në pirg. Në veçanti, ai mund të zëvendësojë vlerën e këtij regjistri me zinxhirin e tij ROP.

Megjithatë, nëse zinxhiri ROP është i gjatë, atëherë mbishkrimi i një pjese të madhe të grumbullit të aplikacionit pritës mund të çojë në prishje të të dhënave dhe sjellje të papritur të programit. Hurri, i cili kërkon të kryejë sulmin e tij fshehurazi, nuk është i kënaqur me këtë gjendje. Prandaj, krijon për vete një kornizë të përkohshme të rreme dhe ruan zinxhirin e saj ROP në të. Korniza e stivës së rreme vendoset në një vend të rastësishëm memorie të shkrueshme, duke e lënë të paprekur pirgun e vërtetë.

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

Çfarë i japin zuzarit tre sulmet e listuara më sipër?

(1) Së pari, përmes enklavës me qëllim të keq hack për hetimin e adresave për të parë nëse ato mund të lexohen, – kërkon aplikacionin pritës për pajisje ROP të abuzueshme.

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

(2) Pastaj nga hack për kërkimin e adresave për shkrimshmëri, – një enklavë me qëllim të keq identifikon zonat në memorien e aplikacionit pritës që janë të përshtatshme për të injektuar një ngarkesë.

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

(3) Më pas, enklava krijon një zinxhir ROP nga pajisjet e zbuluara në hapin (1) dhe e injekton këtë zinxhir në grumbullin e aplikacionit pritës.

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

(4) Së fundi, kur aplikacioni pritës ndeshet me zinxhirin ROP të krijuar në hapin e mëparshëm, ngarkesa me qëllim të keq fillon të ekzekutohet - me privilegjet e aplikacionit pritës dhe aftësinë për të bërë thirrje sistemore.

Si i përdor një horr këto hakime për të krijuar ranzowari

Pasi aplikacioni pritës transferon kontrollin në enklavë përmes njërit prej ECALL-ve (pa dyshuar se kjo enklavë është me qëllim të keq), enklava me qëllim të keq kërkon hapësirë ​​të lirë në kujtesën e aplikacionit pritës për injektimin e kodit (duke marrë si hapësira të lira ato sekuenca qelizash që mbushet me zero). Pastaj përmes hack për hetimin e adresave për të parë nëse ato mund të lexohen, – enklava kërkon për faqe të ekzekutueshme në aplikacionin pritës dhe gjeneron një zinxhir ROP që krijon një skedar të ri të quajtur "RANSOM" në drejtorinë aktuale (në një sulm të vërtetë, enklava kodon skedarët ekzistues të përdoruesit) dhe shfaq një mesazh shpërblesëje. Në të njëjtën kohë, aplikacioni pritës beson me naivitet se enklava thjesht po shton dy numra. Si duket kjo në kod?

Për lehtësinë e perceptimit, le të prezantojmë disa mnemonikë përmes përkufizimeve:

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

Ne ruajmë vlerat origjinale të regjistrave RSP dhe RBP për të rivendosur funksionimin normal të aplikacionit pritës pas ekzekutimit të ngarkesës:

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

Ne jemi duke kërkuar për një kornizë të përshtatshme stack (shih kodin nga seksioni "hack për ridrejtimin e rrjedhës së kontrollit").

Gjetja e pajisjeve të përshtatshme ROP:

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

Gjetja e një vendi për të injektuar ngarkesën:

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

Ne ndërtojmë një zinxhir ROP:

Malware SGX: si keqbërësit po shfrytëzojnë teknologjinë e re Intel për qëllime të ndryshme nga ato për të cilat ishte menduar

Kjo është mënyra se si teknologjia SGX e Intel, e krijuar për të luftuar programet me qëllim të keq, shfrytëzohet nga zuzarët për të arritur qëllime të kundërta.

Burimi: www.habr.com

Shto një koment