SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

Та бүхний мэдэж байгаагаар анклавд гүйцэтгэсэн код нь үйл ажиллагааны хувьд ноцтой хязгаарлагдмал байдаг. Энэ нь системийн дуудлага хийх боломжгүй. Энэ нь I/O үйлдлийг гүйцэтгэх боломжгүй. Энэ нь хост програмын кодын сегментийн үндсэн хаягийг мэдэхгүй. Энэ нь хост програмын кодыг jmp эсвэл дуудаж чадахгүй. Энэ нь хост програмыг удирддаг хаягийн орон зайн бүтцийн талаар ямар ч ойлголтгүй (жишээ нь, ямар хуудсууд зурагдсан эсвэл тэдгээр хуудсан дээр ямар төрлийн өгөгдөл байрладаг). Энэ нь үйлдлийн системээс хост програмын санах ойн хэсгийг (жишээ нь, /proc/pid/maps-аар) буулгахыг шаардаж чадахгүй. Хост програмын дурын санах ойн хэсгийг сохроор унших гэсэн гэнэн оролдлого, бичих оролдлого нь битгий хэл эрт орой хэзээ нэгэн цагт (их магадлалтай нь) анклав програмыг албадан зогсооход хүргэдэг. Энэ нь анклаваас хүссэн виртуал хаягийн орон зайд хост програмд ​​хандах боломжгүй үед тохиолддог.

Ийм хатуу ширүүн бодит байдлыг харгалзан вирус зохиогч өөрийн хорлонтой зорилгодоо хүрэхийн тулд SGX анклавуудыг ашиглаж чадах болов уу?

– Унших боломжтой эсэхийг шалгахын тулд хаягийг хакердана
– Хаяг бичих чадварыг шалгахын тулд хакердах
– Хяналтын урсгалыг дахин чиглүүлэхийн тулд хакердах
– Дээр дурдсан гурван хакерууд хорон санаат хүнд юу өгч байна вэ?
– Муу санаатан ranzomwari үүсгэхийн тулд эдгээр хакеруудыг хэрхэн ашигладаг вэ

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

Дээр дурдсан бүх зүйл дээр үндэслэн анклав нь зөвхөн хост програмд ​​үйлчлэх чадвартай бөгөөд анклав нь өөрийн санаачлага, тэр дундаа хорлонтой санаачилгыг хэрэгжүүлэх боломжгүй гэдгийг ерөнхийд нь хүлээн зөвшөөрдөг. Энэ нь вирус зохиогчдын хувьд анклавууд ямар ч практик ач холбогдолгүй гэсэн үг юм. Энэхүү яаран таамаглал нь SGX хамгаалалт тэгш хэмтэй бус байгаагийн нэг шалтгаан юм: хост програмын код нь анклавын санах ойд хандаж чадахгүй, харин анклав код нь дурын хост програмын санах ойн хаяг руу уншиж, бичиж чаддаг.

Тиймээс, хэрэв хортой анклав код нь хост програмын нэрийн өмнөөс дурын системийн дуудлага хийх, түүний өмнөөс дурын кодыг ажиллуулах, хост програмын санах ойг сканнердаж, түүнээс урвуулан ашиглах боломжтой ROP сүлжээг олох боломжтой байсан бол энэ нь хост програмын бүрэн хяналтыг булаан авч магадгүй юм. нууц горим. Энэ нь зөвхөн хэрэглэгчийн файлуудыг хулгайлж, шифрлэхээс гадна хэрэглэгчийн нэрийн өмнөөс ажиллах боломжтой. Жишээлбэл, түүний өмнөөс фишинг имэйл илгээх эсвэл DoS халдлага хийх. Канар овоолох, ариутгах зэрэг хамгийн орчин үеийн хамгаалалтын механизмаас ч айхгүйгээр.

Дээр дурдсан хязгаарлалтыг даван туулахын тулд халдагчид SGX-ийг өөрсдийн хорлонтой зорилгоор ашиглахын тулд ашигладаг хэд хэдэн хакеруудыг бид танд үзүүлэх болно: ROP халдлага. Хост програмын процесс гэж далдалсан дурын кодыг ажиллуулах (хорлонтой программ ихэвчлэн ашигладаг процессын хөндийтэй төстэй), эсвэл бэлэн хортой програмыг халхавчлах (вирусны эсрэг болон бусад хамгаалалтын механизмын хавчлагаас хортой програмыг нь аврах).

Унших боломжтой эсэхийг шалгахын тулд хаягийг хайна уу

Анклав нь хост програмын виртуал хаягийн орон зайн аль мужид хандах боломжтойг мэдэхгүй, мөн нэвтрэх боломжгүй хаягийг уншихыг оролдох үед анклав нь дуусгавар болох тул халдагч нь алдаа гаргах арга замыг хайж олох үүрэгтэй тулгардаг. хаягийн зайг тэвчээртэй сканнердах. Боломжтой виртуал хаягуудыг зураглах арга замыг хайж олоорой. Муу санаатан Intel-ийн TSX технологийг буруугаар ашигласнаар энэ асуудлыг шийддэг. TSX-ийн гаж нөлөөний аль нэгийг ашигладаг: хэрэв санах ойн хандалтын функцийг TSX гүйлгээнд байрлуулсан бол хүчингүй хаяг руу хандсанаас үүсэх үл хамаарах зүйлүүд үйлдлийн системд хүрэхгүйгээр TSX-ээр дарагддаг. Хэрэв хүчингүй санах ойн хаяг руу нэвтрэх оролдлого хийвэл анклавын програмыг бүхэлд нь биш зөвхөн одоогийн гүйлгээг зогсооно. Тэр. TSX нь анклавд сүйрлийн эрсдэлгүйгээр гүйлгээ дотроос дурын хаяг руу аюулгүй нэвтрэх боломжийг олгодог.

бол заасан хаяг бэлэн байна хост програм, TSX гүйлгээ нь ихэвчлэн амжилттай байдаг. Ховор тохиолдолд, тасалдал (хуваарилагчийн тасалдал гэх мэт), кэшийг зайлуулах, санах ойн байршлыг олон процессоор нэгэн зэрэг өөрчлөх зэрэг гадны нөлөөллөөс болж бүтэлгүйтдэг. Эдгээр ховор тохиолдлуудад TSX нь алдаа түр зуурынх гэдгийг харуулсан алдааны кодыг буцаадаг. Эдгээр тохиолдолд та гүйлгээг дахин эхлүүлэх хэрэгтэй.

бол заасан хаяг боломжгүй байна хост програмын хувьд TSX тохиолдсон үл хамаарах зүйлийг дарж (OS-д мэдэгдээгүй) гүйлгээг зогсооно. Гүйлгээг цуцалсан тохиолдолд хариу үйлдэл үзүүлэхийн тулд алдааны кодыг анклав код руу буцаана. Эдгээр алдааны кодууд нь тухайн хаягийг хост програмд ​​ашиглах боломжгүй байгааг харуулж байна.

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

Анклавын доторх TSX-ийг ийм аргаар ашиглах нь хорон санаатны хувьд сайхан шинж чанартай байдаг: ихэнх техник хангамжийн гүйцэтгэлийн тоолуур анклавын кодыг гүйцэтгэх үед шинэчлэгдээгүй тул анклав дотор хийгдсэн TSX гүйлгээг хянах боломжгүй юм. Тиймээс TSX-ийн хорлонтой заль мэх нь үйлдлийн системд бүрэн харагдахгүй хэвээр байна.

Нэмж дурдахад, дээрх хакерууд нь ямар ч системийн дуудлагад тулгуурладаггүй тул системийн дуудлагыг блоклох замаар үүнийг илрүүлэх эсвэл урьдчилан сэргийлэх боломжгүй; Энэ нь ихэвчлэн өндөгний агнуурын эсрэг тэмцэлд эерэг үр дүнг өгдөг.

Муу санаатан ROP сүлжээ үүсгэхэд тохиромжтой гаджетуудыг хост програмын кодыг хайж олохын тулд дээр дурдсан хакеруудыг ашигладаг. Үүний зэрэгцээ тэрээр хаяг бүрийг шалгах шаардлагагүй. Виртуал хаягийн орон зайн хуудас бүрээс нэг хаягийг шалгахад хангалттай. Бүх 16 гигабайт санах ойг шалгахад 45 минут зарцуулдаг (Intel i7-6700K дээр). Үүний үр дүнд муу санаатан ROP сүлжээг бий болгоход тохиромжтой, гүйцэтгэх хуудасны жагсаалтыг хүлээн авдаг.

Бичлэг хийх боломжтой хаягийг шалгахын тулд хакердсан

ROP халдлагын анклав хувилбарыг хэрэгжүүлэхийн тулд халдагчид хост програмын бичих боломжтой, ашиглагдаагүй санах ойн хэсгүүдийг хайх чадвартай байх шаардлагатай. Халдагчид эдгээр санах ойн байршлыг ашиглан хуурамч стек фрейм болон ачааллыг (бүрхүүл код) оруулахад ашигладаг. Хамгийн гол нь хортой анклав нь хост програмыг өөртөө санах ойг хуваарилахыг шаардах боломжгүй, харин үүний оронд хост програмын аль хэдийн хуваарилсан санах ойг буруугаар ашиглах боломжтой юм. Мэдээжийн хэрэг, тэр анклавыг нураахгүйгээр ийм газруудыг олж чадвал.

Муу санаатан энэ хайлтыг TSX-ийн өөр нэг гаж нөлөөг ашиглан хийдэг. Эхлээд өмнөх тохиолдлын адил хаягийг шалгаж, дараа нь энэ хаягтай тохирох хуудсыг бичих боломжтой эсэхийг шалгана. Үүний тулд муу санаатан дараах хакерыг ашигладаг: тэрээр TSX гүйлгээнд бичих функцийг байрлуулж, дууссаны дараа, гэхдээ дуусгахаас өмнө гүйлгээг хүчээр зогсоодог (тодорхой цуцлалт).

TSX гүйлгээний буцаах кодыг харснаар халдагчид үүнийг бичих боломжтой эсэхийг ойлгодог. Хэрэв энэ нь "илэрхий үр хөндөлт" юм бол муу санаатан үүнийг дагаж мөрдсөн бол бичлэг амжилттай болох байсан гэдгийг ойлгодог. Хэрэв хуудас зөвхөн унших боломжтой бол гүйлгээ нь "тодорхой цуцлалт"-аас өөр алдаагаар дуусна.

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

TSX-ийн энэхүү заль мэх нь хорон санаатны хувьд таатай бас нэг онцлог шинж чанартай байдаг (техник хангамжийн гүйцэтгэлийн тоолуураар дамжуулан хянах боломжгүйгээс гадна): санах ойд бичих бүх команд нь гүйлгээ амжилттай болсон тохиолдолд л хийгддэг тул гүйлгээг дуусгахыг албадах нь шалгагдсан санах ойн үүрийг баталгаажуулдаг. өөрчлөгдөөгүй хэвээр байна.

Хяналтын урсгалыг дахин чиглүүлэхийн тулд хакердах

Анклаваас ROP халдлага хийх үед - уламжлалт ROP халдлагаас ялгаатай нь халдагчид халдлагад өртсөн програмын алдааг ашиглахгүйгээр (буфер халих эсвэл үүнтэй төстэй зүйл) RIP бүртгэлийг хянах боломжтой. Халдагчид стек дээр хадгалагдсан RIP бүртгэлийн утгыг шууд дарж бичиж болно. Ялангуяа энэ регистрийн утгыг өөрийн ROP хэлхээгээр сольж болно.

Гэсэн хэдий ч, хэрэв ROP хэлхээ урт бол хост програмын стекийн том хэсгийг дарж бичих нь өгөгдлийн эвдрэл, програмын гэнэтийн үйлдэлд хүргэж болзошгүй юм. Довтолгоо далдуур хийхийг эрмэлздэг муу санаатан энэ байдалд сэтгэл хангалуун бус байна. Тиймээс энэ нь өөртөө зориулж хуурамч түр зуурын стекийн хүрээ үүсгэж, ROP гинжээ түүнд хадгалдаг. Хуурамч стекийн хүрээг санамсаргүй бичих боломжтой санах ойд байрлуулж, жинхэнэ стекийг хэвээр үлдээдэг.

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

Дээр дурдсан гурван хакерууд хорон санаат хүнд юу өгөх вэ?

(1) Нэгдүгээрт, хорлонтой анклав дамжин Унших боломжтой эсэхийг шалгахын тулд хаягийг хакердуул, – буруугаар ашиглах боломжтой ROP гаджетуудыг хост програмаас хайдаг.

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

(2) Дараа нь бичих чадварын үүднээс хаягийг шалгах, – хорлонтой анклав нь хост програмын санах ойн ачааллыг нэвтрүүлэхэд тохиромжтой хэсгүүдийг тодорхойлдог.

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

(3) Дараа нь анклав (1)-д нээсэн гаджетуудаас ROP гинжийг үүсгэж, энэ хэлхээг хост програмын стек рүү оруулна.

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

(4) Эцэст нь, хост програм өмнөх алхамд үүсгэсэн ROP гинжин хэлхээтэй тулгарах үед хорлонтой ачаалал нь хост програмын давуу эрх болон системийн дуудлага хийх чадвартай ажиллаж эхэлдэг.

Муу санаатан ранзовари үүсгэхийн тулд эдгээр хакеруудыг хэрхэн ашигладаг вэ

Хост програм нь ECALL-ийн аль нэгээр дамжуулан хяналтыг анклав руу шилжүүлсний дараа (энэ анклавыг хортой гэж сэжиглэхгүйгээр) хортой анклав нь код оруулахын тулд хост програмын санах ойд хоосон зай хайж (тэдгээр эсийн дарааллыг чөлөөт зай болгон авдаг) тэгээр дүүргэсэн). Дараа нь дамжин Унших боломжтой эсэхийг шалгахын тулд хаягийг хакердуул, – анклав нь хост програмын гүйцэтгэх боломжтой хуудсуудыг хайж, одоогийн директор дотор "RANSOM" нэртэй шинэ файл үүсгэх (бодит халдлагад анклав нь одоо байгаа хэрэглэгчийн файлуудыг шифрлэдэг) болон золиослолын мессежийг харуулах ROP гинжийг үүсгэдэг. Үүний зэрэгцээ, хост програм нь анклав нь ердөө л хоёр тоог нэмж байна гэж гэнэн итгэдэг. Энэ кодонд ямар харагдаж байна вэ?

Ойлголтод хялбар болгохын тулд тодорхойлолтоор дамжуулан зарим мнемоникийг танилцуулъя:

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

Ачаа ачааллыг гүйцэтгэсний дараа хост програмын хэвийн ажиллагааг сэргээхийн тулд бид RSP болон RBP бүртгэлийн анхны утгуудыг хадгалдаг.

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

Бид тохирох стекийн хүрээ хайж байна ("Хяналтын урсгалыг дахин чиглүүлэхийн тулд хакердах" хэсгээс кодыг үзнэ үү).

Тохиромжтой ROP гаджетуудыг хайж олох:

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

Ачааллыг шахах газар хайж байна:

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

Бид ROP сүлжээг бий болгодог:

SGX хортой програм: хорон санаатнууд Intel-ийн шинэ технологийг зориулалтаас өөр зорилгоор хэрхэн ашиглаж байна

Хорлонтой программуудтай тэмцэх зорилготой Intel-ийн SGX технологийг хорон санаатнууд эсрэг зорилгодоо хүрэхийн тулд ингэж ашигладаг.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх