SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

Tulad ng alam mo, ang code na pinaandar sa enclave ay seryosong limitado sa pag-andar nito. Hindi ito makakagawa ng mga system call. Hindi ito maaaring magsagawa ng mga operasyong I/O. Hindi nito alam ang base address ng code segment ng host application. Hindi ito maaaring mag-jmp o tumawag sa code ng aplikasyon ng host. Wala itong ideya tungkol sa istraktura ng espasyo ng address na namamahala sa host application (halimbawa, kung aling mga page ang namamapa o kung anong uri ng data ang matatagpuan sa mga page na iyon). Hindi nito maaaring hilingin sa operating system na imapa ang isang piraso ng memorya ng host application dito (halimbawa, sa pamamagitan ng /proc/pid/maps). Ang mga walang muwang na pagtatangka na bulag na magbasa ng isang arbitrary na rehiyon ng memorya ng isang host application, hindi banggitin ang mga pagtatangka na magsulat, ay maaga o huli (malamang na ang una) ay hahantong sa sapilitang pagwawakas ng enclave program. Nangyayari ito sa tuwing ang rehiyon ng espasyo ng virtual address na hiniling ng enclave ay hindi naa-access sa host application.

Dahil sa ganitong malupit na katotohanan, magagawa ba ng isang manunulat ng virus na gumamit ng mga SGX enclaves upang makamit ang kanyang mga malisyosong layunin?

– I-hack para sa pag-usisa ng mga address upang makita kung mababasa ang mga ito
– I-hack upang suriin ang mga address para sa pagiging masusulat
– Hack upang i-redirect ang daloy ng kontrol
– Ano ang ibinibigay ng tatlong hack na nakalista sa itaas sa kontrabida?
– Paano ginagamit ng kontrabida ang mga hack na ito upang lumikha ng ranzowari

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

Batay sa lahat ng nasa itaas, karaniwang tinatanggap na ang isang enclave ay may kakayahan lamang na ihatid ang host application, at na ang enclave ay hindi maaaring gumamit ng sarili nitong inisyatiba, kabilang ang mga nakakahamak. Nangangahulugan ito na ang mga enclave ay walang praktikal na halaga sa mga manunulat ng virus. Ang padalus-dalos na pagpapalagay na ito ay isa sa mga dahilan kung bakit walang simetriko ang proteksyon ng SGX: hindi ma-access ng host application code ang enclave memory, habang ang enclave code ay maaaring magbasa at sumulat sa anumang host application memory address.

Samakatuwid, kung ang malisyosong enclave code ay nagawang gumawa ng mga arbitrary system na tawag sa ngalan ng host application, isagawa ang arbitrary code sa ngalan nito, i-scan ang memorya ng host application at mahanap ang mga naaabusong ROP chain dito, maaari nitong sakupin ang kumpletong kontrol ng host application, sa stealth mode. Hindi lamang nito maaaring magnakaw at mag-encrypt ng mga file ng gumagamit, ngunit kumilos din sa ngalan ng gumagamit. Halimbawa, magpadala ng mga email sa phishing sa ngalan niya o magsagawa ng mga pag-atake sa DoS. Nang walang takot sa kahit na ang pinakamodernong mekanismo ng proteksyon, tulad ng mga stack canaries at address sanitization.

Magpapakita kami sa iyo ng ilang mga hack na ginagamit ng mga umaatake upang mapagtagumpayan ang mga limitasyon na inilarawan sa itaas upang samantalahin ang SGX para sa kanilang sariling malisyosong layunin: mga pag-atake ng ROP. Alinman sa magsagawa ng di-makatwirang code na itinago bilang isang proseso ng aplikasyon ng host (katulad ng proseso ng hollowing, na kadalasang ginagamit ng malware), o upang itago ang isang handa nang malware (upang i-save ang malware nito mula sa pag-uusig ng mga antivirus at iba pang mekanismo ng depensa).

I-hack ang mga address sa pagsisiyasat upang makita kung mababasa ang mga ito

Dahil hindi alam ng enclave kung aling mga saklaw ng virtual address space ang naa-access ng host application, at dahil ang enclave ay pinilit na wakasan kapag sinusubukang basahin ang isang hindi naa-access na address, ang umaatake ay nahaharap sa gawain ng paghahanap ng paraan sa pagkakamali- matiyagang i-scan ang address space. Maghanap ng paraan upang imapa ang mga available na virtual address. Nilulutas ng kontrabida ang problemang ito sa pamamagitan ng maling paggamit ng teknolohiyang TSX ng Intel. Gumagamit ng isa sa mga side effect ng TSX: kung ang memory access function ay inilagay sa isang TSX na transaksyon, ang mga pagbubukod na nagmumula sa pag-access sa mga di-wastong address ay pinipigilan ng TSX nang hindi naaabot ang operating system. Kung ang isang pagtatangka ay ginawa upang ma-access ang isang di-wastong memorya ng address, tanging ang kasalukuyang transaksyon ay aborted, hindi ang buong enclave program. yun. Binibigyang-daan ng TSX ang isang enclave na ligtas na ma-access ang anumang address mula sa loob ng isang transaksyon - nang walang panganib ng pagbagsak.

Kung ang tinukoy na address ay magagamit host application, ang transaksyon ng TSX ay kadalasang matagumpay. Sa mga bihirang kaso, maaari itong mabigo dahil sa mga panlabas na impluwensya tulad ng mga pagkagambala (tulad ng mga pag-iwas sa scheduler), pagpapaalis ng cache, o sabay-sabay na pagbabago ng lokasyon ng memorya ng maraming proseso. Sa mga bihirang kaso na ito, ang TSX ay nagbabalik ng isang error code na nagpapahiwatig na ang pagkabigo ay pansamantala. Sa mga kasong ito, kailangan mo lang i-restart ang transaksyon.

Kung ang tinukoy na address ay hindi magagamit host application, pinipigilan ng TSX ang pagbubukod na naganap (hindi naabisuhan ang OS) at ibinabagsak ang transaksyon. Ang isang error code ay ibinalik sa enclave code upang ito ay makapag-react sa katotohanan na ang transaksyon ay nakansela. Ang mga error code na ito ay nagpapahiwatig na ang address na pinag-uusapan ay hindi magagamit sa host application.

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

Ang pagmamanipula na ito ng TSX mula sa loob ng enclave ay may magandang tampok para sa kontrabida: dahil ang karamihan sa mga hardware performance counter ay hindi na-update sa oras na ang enclave code ay naisakatuparan, imposibleng subaybayan ang mga transaksyong TSX na isinagawa sa loob ng enclave. Kaya, ang malisyosong pagmamanipula ng TSX ay nananatiling ganap na hindi nakikita ng operating system.

Bukod pa rito, dahil ang hack sa itaas ay hindi umaasa sa anumang mga tawag sa system, hindi ito matukoy o mapipigilan sa pamamagitan lamang ng pagharang sa mga tawag sa system; na kadalasang nagbibigay ng positibong resulta sa paglaban sa pangangaso ng itlog.

Ginagamit ng kontrabida ang hack na inilarawan sa itaas upang maghanap sa host application code para sa mga gadget na angkop para sa pagbuo ng isang ROP chain. Kasabay nito, hindi niya kailangang suriin ang bawat address. Ito ay sapat na upang suriin ang isang address mula sa bawat pahina ng virtual address space. Ang pagsisiyasat sa lahat ng 16 gigabytes ng memorya ay tumatagal ng humigit-kumulang 45 minuto (sa isang Intel i7-6700K). Bilang resulta, ang kontrabida ay nakakatanggap ng isang listahan ng mga executable na pahina na angkop para sa pagbuo ng isang ROP chain.

Hack para sa pagsisiyasat ng mga address para sa pagkakasulat

Upang magsagawa ng isang enclave na bersyon ng isang ROP attack, ang isang attacker ay kailangang makapaghanap ng mga nasusulat na hindi nagamit na memory area ng host application. Ginagamit ng attacker ang mga lokasyon ng memory na ito para mag-inject ng pekeng stack frame at mag-inject ng payload (shellcode). Sa ilalim na linya ay ang isang nakakahamak na enclave ay hindi magagawang hilingin sa host application na maglaan ng memorya para sa sarili nito, ngunit sa halip ay maaaring maling gamitin ang memorya na inilaan na ng host application. Kung, siyempre, namamahala siya upang mahanap ang mga naturang lugar nang hindi gumuho ang enclave.

Isinasagawa ng kontrabida ang paghahanap na ito sa pamamagitan ng pagsasamantala sa isa pang side effect ng TSX. Una, tulad ng sa nakaraang kaso, sinisiyasat nito ang address para sa pagkakaroon nito, at pagkatapos ay sinusuri kung ang pahina na tumutugma sa address na ito ay maaaring isulat. Upang gawin ito, ginagamit ng kontrabida ang sumusunod na hack: naglalagay siya ng isang write function sa isang transaksyon sa TSX, at pagkatapos na makumpleto ito, ngunit bago ito makumpleto, sapilitan niyang ipinaabort ang transaksyon (tahasang pagpapalaglag).

Sa pamamagitan ng pagtingin sa return code mula sa isang transaksyong TSX, nauunawaan ng umaatake kung ito ay maisusulat. Kung ito ay isang "tahasang pagpapalaglag", naiintindihan ng kontrabida na matagumpay sana ang pag-record kung sinunod niya ito. Kung read-only ang page, magtatapos ang transaksyon sa isang error maliban sa "tahasang pag-abort."

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

Ang pagmamanipula na ito ng TSX ay may isa pang tampok na maganda para sa kontrabida (bukod sa imposibilidad ng pagsubaybay sa pamamagitan ng mga counter ng pagganap ng hardware): dahil ang lahat ng memory write command ay gagawin lamang kung matagumpay ang transaksyon, ang pagpilit sa transaksyon na makumpleto ay tinitiyak na ang probed memory cell nananatiling hindi nagbabago.

Hack upang i-redirect ang daloy ng kontrol

Kapag nagsasagawa ng pag-atake ng ROP mula sa isang enclave - hindi tulad ng mga tradisyonal na pag-atake ng ROP - maaaring makuha ng attacker ang kontrol sa rehistro ng RIP nang hindi sinasamantala ang anumang mga bug sa inatakeng programa (buffer overflow o katulad nito). Maaaring direktang i-overwrite ng isang attacker ang halaga ng RIP register na nakaimbak sa stack. Sa partikular, maaari nitong palitan ang halaga ng rehistrong ito ng sarili nitong ROP chain.

Gayunpaman, kung mahaba ang chain ng ROP, ang pag-overwrite ng malaking tipak ng stack ng host application ay maaaring humantong sa katiwalian ng data at hindi inaasahang pag-uugali ng programa. Ang kontrabida, na naglalayong isagawa ang kanyang pag-atake nang patago, ay hindi nasisiyahan sa ganitong kalagayan. Samakatuwid, lumilikha ito ng pekeng pansamantalang stack frame para sa sarili nito at iniimbak ang ROP chain nito dito. Ang pekeng stack frame ay inilalagay sa isang random na lokasyon ng memorya na maisusulat, na iniiwan ang tunay na stack na buo.

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

Ano ang ibinibigay ng tatlong hack na nakalista sa itaas sa kontrabida?

(1) Una, ang malisyosong enclave sa pamamagitan ng hack para sa probing address upang makita kung mababasa ang mga ito, – hinahanap ang host application para sa mga naaabusong ROP gadget.

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

(2) Pagkatapos ng hack para sa probing address para sa pagkakasulat, – tinutukoy ng malisyosong enclave ang mga lugar sa memorya ng host application na angkop para sa pag-inject ng payload.

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

(3) Susunod, gagawa ang enclave ng ROP chain mula sa mga gadget na natuklasan sa hakbang (1) at ini-inject ang chain na ito sa host application stack.

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

(4) Sa wakas, kapag nakatagpo ng host application ang ROP chain na nilikha sa nakaraang hakbang, magsisimulang i-execute ang malisyosong payload - na may mga pribilehiyo ng host application at ang kakayahang gumawa ng mga system call.

Paano ginagamit ng isang kontrabida ang mga hack na ito para gumawa ng ranzowari

Matapos ilipat ng host application ang kontrol sa enclave sa pamamagitan ng isa sa mga ECALL (nang hindi pinaghihinalaan na nakakahamak ang enclave na ito), ang nakakahamak na enclave ay naghahanap ng libreng espasyo sa memorya ng host application para sa pag-inject ng code (ginagamit bilang mga libreng puwang ang mga sequence ng mga cell na iyon. na puno ng mga zero). Pagkatapos ay sa pamamagitan ng hack para sa probing address upang makita kung mababasa ang mga ito, – ang enclave ay naghahanap ng mga executable na page sa host application at bumubuo ng ROP chain na lumilikha ng bagong file na pinangalanang "RANSOM" sa kasalukuyang direktoryo (sa isang tunay na pag-atake, ang enclave ay nag-e-encrypt ng mga umiiral nang user file) at nagpapakita ng mensahe ng ransom. Kasabay nito, ang host application ay walang muwang na naniniwala na ang enclave ay nagdaragdag lamang ng dalawang numero. Ano ang hitsura nito sa code?

Para sa kadalian ng pang-unawa, ipakilala natin ang ilang mnemonics sa pamamagitan ng mga kahulugan:

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

I-save namin ang mga orihinal na halaga ng mga rehistro ng RSP at RBP upang maibalik ang normal na operasyon ng host application pagkatapos isagawa ang payload:

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

Naghahanap kami ng angkop na stack frame (tingnan ang code mula sa seksyong "hack para sa pag-redirect ng control flow").

Paghahanap ng mga angkop na ROP gadget:

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

Paghahanap ng lugar para mag-inject ng payload:

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

Bumubuo kami ng isang ROP chain:

SGX malware: kung paano sinasamantala ng mga kontrabida ang bagong teknolohiya ng Intel para sa mga layunin maliban sa kung saan ito nilayon

Ito ay kung paano ang teknolohiya ng SGX ng Intel, na idinisenyo upang kontrahin ang mga malisyosong programa, ay pinagsamantalahan ng mga kontrabida upang makamit ang magkasalungat na layunin.

Pinagmulan: www.habr.com

Magdagdag ng komento