SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

Bildiyiniz kimi, anklavda icra edilən kod funksionallığı baxımından ciddi şəkildə məhduddur. Sistem zəngləri edə bilməz. O, I/O əməliyyatlarını yerinə yetirə bilmir. O, ana proqramın kod seqmentinin əsas ünvanını bilmir. O, host proqram kodunu jmp edə və ya zəng edə bilməz. Onun host tətbiqini idarə edən ünvan məkanı strukturu haqqında heç bir fikri yoxdur (məsələn, hansı səhifələrin xəritələşdirilməsi və ya həmin səhifələrdə hansı məlumatların yerləşməsi). O, əməliyyat sistemindən host proqramının yaddaşının bir hissəsini ona uyğunlaşdırmağı tələb edə bilməz (məsələn, /proc/pid/maps vasitəsilə). Əsas proqramın ixtiyari yaddaş bölgəsini kor-koranə oxumaq üçün sadəlövh cəhdlər, yazmaq cəhdlərini demirəm, gec-tez (çox güman ki, birincisi) anklav proqramının məcburi dayandırılmasına gətirib çıxaracaq. Bu, anklavın tələb etdiyi virtual ünvan məkanı ana proqram üçün əlçatmaz olduqda baş verir.

Belə sərt reallıqları nəzərə alsaq, virus yazıçısı öz zərərli məqsədlərinə çatmaq üçün SGX anklavlarından istifadə edə biləcəkmi?

– Ünvanların oxunub-oxunmadığını yoxlamaq üçün hack edin
– Yazılılıq üçün ünvanları yoxlamaq üçün sındırın
– Nəzarət axını yönləndirmək üçün hack
– Yuxarıda sadalanan üç hiylə caniyə nə verir?
– Cani ranzowari yaratmaq üçün bu hacklərdən necə istifadə edir

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

Yuxarıda göstərilənlərin hamısına əsasən, ümumiyyətlə qəbul edilir ki, anklav yalnız əsas proqrama xidmət edə bilər və anklav öz təşəbbüsünü, o cümlədən zərərli təşəbbüsləri həyata keçirə bilməz. Bu o deməkdir ki, anklavlar virus müəllifləri üçün praktiki əhəmiyyət kəsb etmir. Bu tələsik fərziyyə SGX mühafizəsinin asimmetrik olmasının səbəblərindən biridir: host proqram kodu anklav yaddaşına daxil ola bilmir, anklav kodu isə istənilən host proqram yaddaş ünvanını oxuya və yaza bilər.

Buna görə də, əgər zərərli anklav kodu host tətbiqi adından ixtiyari sistem çağırışları edə, onun adından ixtiyari kod icra edə, ana proqramın yaddaşını skan edə və orada sui-istifadə edilə bilən ROP zəncirlərini tapa bilsəydi, o, ana proqrama tam nəzarəti ələ keçirə bilər. gizli rejim. O, yalnız istifadəçi fayllarını oğurlaya və şifrələyə bilməz, həm də istifadəçi adından hərəkət edə bilər. Məsələn, onun adından fişinq e-poçtları göndərin və ya DoS hücumları həyata keçirin. Ən müasir qoruyucu mexanizmlərdən, məsələn, kanareykaları yığmaq və ünvan sanitarizasiyasından qorxmadan.

Təcavüzkarların SGX-dən öz zərərli məqsədləri üçün faydalanmaq üçün yuxarıda təsvir edilən məhdudiyyətləri aradan qaldırmaq üçün istifadə etdikləri bir neçə sındırmaları sizə göstərəcəyik: ROP hücumları. Ya host tətbiqi prosesi kimi maskalanmış ixtiyari kodu icra etmək (zərərli proqramlar tərəfindən tez-tez istifadə olunan boşluq prosesinə bənzər) və ya hazır zərərli proqramı maskalamaq (zərərli proqramı antiviruslar və digər müdafiə mexanizmləri tərəfindən təqiblərdən xilas etmək üçün).

Ünvanların oxunub-oxunmadığını yoxlamaq üçün hack edin

Anklav virtual ünvan sahəsinin hansı diapazonlarının host tətbiqi üçün əlçatan olduğunu bilmədiyi üçün və əlçatmaz ünvanı oxumağa cəhd edərkən anklav bağlanmağa məcbur olduğundan, təcavüzkar səhv etmək üçün bir yol tapmaq vəzifəsi ilə üzləşir. ünvan sahəsini dözümlü şəkildə skan edin. Mövcud virtual ünvanların xəritəsini tapın. Cani bu problemi Intel-in TSX texnologiyasından sui-istifadə edərək həll edir. TSX-in yan təsirlərindən birini istifadə edir: yaddaşa giriş funksiyası TSX əməliyyatında yerləşdirilibsə, etibarsız ünvanlara daxil olmaqdan yaranan istisnalar əməliyyat sisteminə çatmadan TSX tərəfindən sıxışdırılır. Yanlış yaddaş ünvanına daxil olmaq cəhdi edilərsə, bütün anklav proqramı deyil, yalnız cari əməliyyat dayandırılır. Bu. TSX anklavın dağılma riski olmadan əməliyyat daxilində istənilən ünvana təhlükəsiz şəkildə daxil olmasına imkan verir.

Əgər göstərilən ünvan mövcuddur host proqramında TSX əməliyyatı çox vaxt uğurlu olur. Nadir hallarda o, kəsilmələr (planlayıcının kəsilməsi kimi), keşin çıxarılması və ya yaddaş yerinin çoxsaylı proseslərlə eyni vaxtda dəyişdirilməsi kimi xarici təsirlər səbəbindən uğursuz ola bilər. Bu nadir hallarda TSX uğursuzluğun müvəqqəti olduğunu göstərən xəta kodunu qaytarır. Bu hallarda, sadəcə əməliyyatı yenidən başlatmalısınız.

Əgər göstərilən ünvan mövcud deyil host proqramında, TSX baş vermiş istisnanı yatırır (ƏS-ə məlumat verilmir) və əməliyyatı dayandırır. Anklav koduna xəta kodu qaytarılır ki, o, əməliyyatın ləğv edilməsinə reaksiya verə bilsin. Bu xəta kodları sözügedən ünvanın host proqramında mövcud olmadığını göstərir.

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

TSX-nin anklav daxilindən bu cür manipulyasiyası cani üçün gözəl xüsusiyyətə malikdir: anklav kodunun icrası zamanı əksər avadanlıq performans sayğacları yenilənmədiyi üçün anklav daxilində həyata keçirilən TSX əməliyyatlarını izləmək mümkün deyil. Beləliklə, TSX-nin zərərli manipulyasiyası əməliyyat sistemi üçün tamamilə görünməz olaraq qalır.

Bundan əlavə, yuxarıdakı hack heç bir sistem çağırışına əsaslanmadığından, sadəcə sistem zənglərini bloklamaqla onu nə aşkar etmək, nə də qarşısını almaq olar; yumurta ovuna qarşı mübarizədə adətən müsbət nəticə verir.

Cani, ROP zəncirinin yaradılması üçün uyğun olan qadcetlər üçün host proqram kodunu axtarmaq üçün yuxarıda təsvir edilən hackdən istifadə edir. Eyni zamanda, onun hər ünvanı yoxlamağa ehtiyacı yoxdur. Virtual ünvan məkanının hər səhifəsindən bir ünvanı yoxlamaq kifayətdir. Bütün 16 giqabayt yaddaşın yoxlanılması təxminən 45 dəqiqə çəkir (Intel i7-6700K-da). Nəticədə, cani ROP zəncirinin qurulması üçün uyğun olan icra edilə bilən səhifələrin siyahısını alır.

Yazılılıq üçün ünvanları yoxlamaq üçün hack

ROP hücumunun anklav versiyasını həyata keçirmək üçün təcavüzkar ana proqramın yazıla bilən istifadə olunmayan yaddaş sahələrini axtara bilməlidir. Təcavüzkar bu yaddaş yerlərindən saxta yığın çərçivəsini yeritmək və faydalı yükü (shellcode) yeritmək üçün istifadə edir. Nəticə ondan ibarətdir ki, zərərli anklav ana proqramdan özü üçün yaddaş ayırmağı tələb edə bilmir, əksinə, artıq host proqramı tərəfindən ayrılmış yaddaşdan sui-istifadə edə bilər. Əgər o, təbii ki, anklavı yıxmadan belə əraziləri tapmağı bacarırsa.

Cani bu axtarışı TSX-in başqa bir yan təsirindən istifadə edərək həyata keçirir. Birincisi, əvvəlki halda olduğu kimi, o, ünvanın mövcudluğunu yoxlayır və sonra bu ünvana uyğun gələn səhifənin yazıla bilən olub olmadığını yoxlayır. Bunun üçün cani aşağıdakı hackdən istifadə edir: o, TSX tranzaksiyasına yazma funksiyasını yerləşdirir və o, başa çatdıqdan sonra, lakin tamamlanmamış əməliyyatı məcburi şəkildə dayandırır (açıq abort).

TSX əməliyyatının qaytarılması koduna baxaraq, təcavüzkar onun yazıla bilən olub olmadığını başa düşür. Əgər bu, “açıq-aşkar abort”dursa, yaramaz anlayır ki, ona əməl etsəydi, qeyd uğurlu olardı. Səhifə yalnız oxunursa, əməliyyat “açıq-aşkar ləğv”dən başqa xəta ilə başa çatır.

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

TSX-in bu manipulyasiyası cani üçün xoş olan başqa bir xüsusiyyətə malikdir (avadanlığın performans sayğacları vasitəsilə izlənilməsinin mümkünsüzlüyündən başqa): bütün yaddaş yazma əmrləri yalnız əməliyyat uğurlu olarsa yerinə yetirildiyi üçün əməliyyatı başa çatdırmağa məcbur etmək yoxlanılan yaddaş hüceyrəsinin dəyişməz qalır.

Nəzarət axını yönləndirmək üçün hack

Anklavdan ROP hücumu həyata keçirərkən - ənənəvi ROP hücumlarından fərqli olaraq - təcavüzkar hücuma məruz qalan proqramda heç bir səhvdən (bufer daşması və ya buna bənzər bir şey) istifadə etmədən RIP reyestrinə nəzarət edə bilər. Təcavüzkar yığında saxlanılan RIP registrinin dəyərinin üzərinə birbaşa yaza bilər. Xüsusilə, bu reyestrin dəyərini öz ROP zənciri ilə əvəz edə bilər.

Bununla belə, əgər ROP zənciri uzundursa, o zaman host proqram yığınının böyük hissəsinin üzərinə yazmaq məlumatların pozulmasına və proqramın gözlənilməz davranışına səbəb ola bilər. Hücumunu üstüörtülü şəkildə həyata keçirməyə çalışan bədxahı bu vəziyyət qane etmir. Buna görə də, özü üçün saxta müvəqqəti yığın çərçivəsi yaradır və ROP zəncirini orada saxlayır. Saxta yığın çərçivəsi təsadüfi yazıla bilən yaddaş yerinə yerləşdirilir və həqiqi yığını toxunulmaz saxlayır.

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

Yuxarıda sadalanan üç hack caniyə nə verir?

(1) Birincisi, zərərli anklav vasitəsilə ünvanların oxunub-oxunmadığını yoxlamaq üçün hack edin, – əsas proqramda sui-istifadə edilə bilən ROP qadcetləri üçün axtarış aparır.

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

(2) Sonra yazılmaq üçün ünvanları yoxlamaq üçün hack, – zərərli anklav host proqramının yaddaşında faydalı yük yeritmək üçün uyğun olan sahələri müəyyən edir.

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

(3) Sonra, anklav (1)-ci addımda aşkar edilmiş qadcetlərdən ROP zənciri yaradır və bu zənciri host proqram yığınına yeridir.

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

(4) Nəhayət, host proqramı əvvəlki addımda yaradılmış ROP zənciri ilə qarşılaşdıqda, zərərli faydalı yük icra etməyə başlayır - host tətbiqinin imtiyazları və sistem zəngləri etmək imkanı ilə.

Bir yaramaz ranzowari yaratmaq üçün bu hacklərdən necə istifadə edir

Əsas tətbiqetmə idarəetməni ECALL-lardan biri vasitəsilə anklava ötürdükdən sonra (bu anklavın zərərli olduğuna şübhə etmədən) zərərli anklav kod yeridilməsi üçün host proqramın yaddaşında boş yer axtarır (boş yerlər kimi həmin hüceyrə ardıcıllığını götürür) sıfırlarla doldurulmuş). Sonra vasitəsilə ünvanların oxunub-oxunmadığını yoxlamaq üçün hack edin, – anklav host proqramında icra oluna bilən səhifələri axtarır və cari kataloqda “RANSOM” adlı yeni fayl yaradan (real hücumda anklav mövcud istifadəçi fayllarını şifrələyir) və fidyə mesajı göstərən ROP zənciri yaradır. Eyni zamanda, host tətbiqi sadəlövhcəsinə anklavın sadəcə iki nömrə əlavə etdiyinə inanır. Bu kodda nə kimi görünür?

Qavrama asanlığı üçün təriflər vasitəsilə bəzi mnemonikaları təqdim edək:

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

Faydalı yükü yerinə yetirdikdən sonra host tətbiqinin normal işləməsini bərpa etmək üçün RSP və RBP registrlərinin orijinal dəyərlərini saxlayırıq:

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

Biz uyğun bir yığın çərçivəsi axtarırıq ("nəzarət axınının yönləndirilməsi üçün hack" bölməsindəki koda baxın).

Uyğun ROP qadcetlərinin tapılması:

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

Faydalı yükü vurmaq üçün yer tapmaq:

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

ROP zəncirini qururuq:

SGX zərərli proqram: yaramazlar yeni Intel texnologiyasından onun nəzərdə tutulduğu məqsədlərdən başqa məqsədlər üçün necə istifadə edirlər

Zərərli proqramların qarşısını almaq üçün nəzərdə tutulmuş Intel-in SGX texnologiyası əks məqsədlərə çatmaq üçün yaramazlar tərəfindən belə istifadə olunur.

Mənbə: www.habr.com

Добавить комментарий