SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

Seperti yang anda ketahui, kod yang dilaksanakan dalam enklaf adalah terhad dalam fungsinya. Ia tidak boleh membuat panggilan sistem. Ia tidak boleh melaksanakan operasi I/O. Ia tidak mengetahui alamat asas segmen kod aplikasi hos. Ia tidak boleh jmp atau memanggil kod aplikasi hos. Ia tidak tahu tentang struktur ruang alamat yang mengawal aplikasi hos (contohnya, halaman yang dipetakan atau jenis data yang terdapat pada halaman tersebut). Ia tidak boleh meminta sistem pengendalian untuk memetakan sekeping memori aplikasi hos kepadanya (contohnya, melalui /proc/pid/maps). Percubaan naif untuk membaca secara membabi buta kawasan memori sewenang-wenangnya bagi aplikasi hos, apatah lagi percubaan untuk menulis, lambat laun (kemungkinan besar yang pertama) akan membawa kepada penamatan paksa program enklaf. Ini berlaku apabila kawasan ruang alamat maya yang diminta oleh enklaf tidak boleh diakses oleh aplikasi hos.

Memandangkan realiti yang begitu keras, adakah seorang penulis virus boleh menggunakan enklaf SGX untuk mencapai matlamat jahatnya?

– Menggodam alamat menyelidik untuk melihat sama ada ia boleh dibaca
– Menggodam untuk menyiasat alamat untuk kebolehtulisan
– Hack untuk mengubah hala aliran kawalan
– Apakah yang diberikan oleh tiga godam yang disenaraikan di atas kepada penjahat?
– Bagaimana penjahat menggunakan hacks ini untuk mencipta ranzowari

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

Berdasarkan semua perkara di atas, secara amnya diterima bahawa enklaf hanya mampu melayani aplikasi hos, dan bahawa enklaf tidak boleh melaksanakan inisiatifnya sendiri, termasuk yang berniat jahat. Ini bermakna bahawa enklaf tidak mempunyai nilai praktikal kepada penulis virus. Andaian tergesa-gesa ini adalah salah satu sebab mengapa perlindungan SGX adalah tidak simetri: kod aplikasi hos tidak boleh mengakses memori enklaf, manakala kod enklaf boleh membaca dan menulis ke mana-mana alamat memori aplikasi hos.

Oleh itu, jika kod enklaf berniat jahat dapat membuat panggilan sistem sewenang-wenangnya bagi pihak aplikasi hos, melaksanakan kod arbitrari bagi pihaknya, mengimbas memori aplikasi hos dan mencari rantai ROP yang boleh disalahgunakan di dalamnya, ia boleh merampas kawalan sepenuhnya aplikasi hos, dalam mod senyap. Ia bukan sahaja boleh mencuri dan menyulitkan fail pengguna, tetapi juga bertindak bagi pihak pengguna. Contohnya, hantar e-mel pancingan data bagi pihaknya atau lakukan serangan DoS. Tanpa rasa takut walaupun dengan mekanisme perlindungan yang paling moden, seperti tindanan kenari dan menangani sanitasi.

Kami akan menunjukkan kepada anda beberapa penggodaman yang digunakan oleh penyerang untuk mengatasi had yang diterangkan di atas untuk memanfaatkan SGX untuk tujuan jahat mereka sendiri: serangan ROP. Sama ada untuk melaksanakan kod arbitrari yang menyamar sebagai proses aplikasi hos (serupa dengan proses hollowing, yang sering digunakan oleh perisian hasad), atau untuk menyamarkan perisian hasad siap sedia (untuk menyelamatkan perisian hasadnya daripada penganiayaan oleh antivirus dan mekanisme pertahanan lain).

Menggodam alamat menyelidik untuk melihat sama ada ia boleh dibaca

Oleh kerana enklaf tidak mengetahui julat ruang alamat maya yang boleh diakses oleh aplikasi hos, dan kerana enklaf terpaksa ditamatkan apabila cuba membaca alamat yang tidak boleh diakses, penyerang berhadapan dengan tugas mencari jalan untuk melakukan kesalahan- mengimbas ruang alamat secara bertolak ansur. Cari cara untuk memetakan alamat maya yang tersedia. Penjahat menyelesaikan masalah ini dengan menyalahgunakan teknologi TSX Intel. Menggunakan salah satu kesan sampingan TSX: jika fungsi akses memori diletakkan dalam transaksi TSX, maka pengecualian yang timbul daripada mengakses alamat tidak sah ditindas oleh TSX tanpa mencapai sistem pengendalian. Jika percubaan dibuat untuk mengakses alamat memori yang tidak sah, hanya transaksi semasa yang dibatalkan, bukan keseluruhan program enklaf. Itu. TSX membenarkan enklaf untuk mengakses mana-mana alamat dengan selamat dari dalam transaksi - tanpa risiko keruntuhan.

Jika alamat yang dinyatakan tersedia aplikasi hos, transaksi TSX paling kerap berjaya. Dalam kes yang jarang berlaku, ia mungkin gagal disebabkan oleh pengaruh luaran seperti gangguan (seperti gangguan penjadual), pengusiran cache atau pengubahsuaian serentak lokasi memori oleh pelbagai proses. Dalam kes yang jarang berlaku ini, TSX mengembalikan kod ralat yang menunjukkan bahawa kegagalan adalah sementara. Dalam kes ini, anda hanya perlu memulakan semula transaksi.

Jika alamat yang dinyatakan tidak tersedia aplikasi hos, TSX menyekat pengecualian yang berlaku (OS tidak diberitahu) dan membatalkan transaksi. Kod ralat dikembalikan kepada kod enklaf supaya ia boleh bertindak balas terhadap fakta bahawa transaksi telah dibatalkan. Kod ralat ini menunjukkan bahawa alamat yang dipersoalkan tidak tersedia untuk aplikasi hos.

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

Manipulasi TSX dari dalam enklaf ini mempunyai ciri yang bagus untuk penjahat: memandangkan kebanyakan kaunter prestasi perkakasan tidak dikemas kini pada masa kod enklaf dilaksanakan, adalah mustahil untuk menjejaki transaksi TSX yang dilaksanakan di dalam enklaf. Oleh itu, manipulasi berniat jahat TSX kekal tidak dapat dilihat sepenuhnya oleh sistem pengendalian.

Selain itu, memandangkan penggodaman di atas tidak bergantung pada sebarang panggilan sistem, ia tidak boleh dikesan atau dihalang dengan hanya menyekat panggilan sistem; yang biasanya memberikan hasil yang positif dalam memerangi perburuan telur.

Penjahat menggunakan penggodaman yang diterangkan di atas untuk mencari kod aplikasi hos untuk alat yang sesuai untuk membentuk rantaian ROP. Pada masa yang sama, dia tidak perlu menyiasat setiap alamat. Ia cukup untuk menyiasat satu alamat dari setiap halaman ruang alamat maya. Menyelidik semua 16 gigabait memori mengambil masa kira-kira 45 minit (pada Intel i7-6700K). Akibatnya, penjahat menerima senarai halaman boleh laku yang sesuai untuk membina rantaian ROP.

Hack untuk menyelidik alamat untuk kebolehtulisan

Untuk menjalankan versi enklaf serangan ROP, penyerang perlu dapat mencari kawasan memori yang tidak digunakan untuk aplikasi hos yang boleh ditulis. Penyerang menggunakan lokasi memori ini untuk menyuntik bingkai tindanan palsu dan untuk menyuntik muatan (shellcode). Intinya ialah enklaf berniat jahat tidak dapat menghendaki aplikasi hos untuk memperuntukkan memori untuk dirinya sendiri, sebaliknya boleh menyalahgunakan memori yang telah diperuntukkan oleh aplikasi hos. Jika, sudah tentu, dia berjaya mencari kawasan sedemikian tanpa meruntuhkan enklaf itu.

Penjahat menjalankan carian ini dengan mengeksploitasi satu lagi kesan sampingan TSX. Pertama, seperti dalam kes sebelumnya, ia menyiasat alamat untuk kewujudannya, dan kemudian menyemak sama ada halaman yang sepadan dengan alamat ini boleh ditulis. Untuk melakukan ini, penjahat menggunakan penggodaman berikut: dia meletakkan fungsi tulis dalam urus niaga TSX, dan selepas ia selesai, tetapi sebelum ia selesai, dia secara paksa menggugurkan urus niaga itu (pengguguran eksplisit).

Dengan melihat kod pulangan daripada transaksi TSX, penyerang memahami sama ada ia boleh ditulis. Jika ia adalah "pengguguran eksplisit", penjahat itu memahami bahawa rakaman itu akan berjaya jika dia mengikutinya. Jika halaman adalah baca sahaja, maka transaksi berakhir dengan ralat selain daripada "pengguguran eksplisit".

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

Manipulasi TSX ini mempunyai ciri lain yang bagus untuk penjahat (selain kemustahilan untuk menjejaki melalui kaunter prestasi perkakasan): kerana semua arahan tulis memori dilakukan hanya jika transaksi berjaya, memaksa transaksi untuk diselesaikan memastikan bahawa sel memori yang disiasat tetap tidak berubah.

Hack untuk mengubah hala aliran kawalan

Apabila melakukan serangan ROP dari enklaf - tidak seperti serangan ROP tradisional - penyerang boleh mengawal daftar RIP tanpa mengeksploitasi sebarang pepijat dalam program yang diserang (limpahan penimbal atau sesuatu seperti itu). Penyerang boleh terus menulis ganti nilai daftar RIP yang disimpan pada tindanan. Khususnya, ia boleh menggantikan nilai daftar ini dengan rantaian ROPnya sendiri.

Walau bagaimanapun, jika rantaian ROP panjang, maka menimpa sebahagian besar timbunan aplikasi hos boleh membawa kepada rasuah data dan tingkah laku program yang tidak dijangka. Penjahat, yang cuba melakukan serangannya secara rahsia, tidak berpuas hati dengan keadaan ini. Oleh itu, ia mencipta bingkai tindanan sementara palsu untuk dirinya sendiri dan menyimpan rantai ROPnya di dalamnya. Bingkai tindanan palsu diletakkan di lokasi memori boleh tulis rawak, meninggalkan tindanan sebenar utuh.

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

Apakah yang diberikan oleh tiga godam yang disenaraikan di atas kepada penjahat?

(1) Pertama, kepungan berniat jahat melalui menggodam alamat menyelidik untuk melihat sama ada ia boleh dibaca, – mencari aplikasi hos untuk alat ROP yang boleh disalahgunakan.

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

(2) Kemudian oleh menggodam untuk menyelidik alamat untuk kebolehtulisan, – enklaf berniat jahat mengenal pasti kawasan dalam memori aplikasi hos yang sesuai untuk menyuntik muatan.

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

(3) Seterusnya, enklaf mencipta rantaian ROP daripada alat yang ditemui dalam langkah (1) dan menyuntik rantai ini ke dalam timbunan aplikasi hos.

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

(4) Akhir sekali, apabila aplikasi hos menemui rantaian ROP yang dicipta pada langkah sebelumnya, muatan berniat jahat mula dilaksanakan - dengan keistimewaan aplikasi hos dan keupayaan untuk membuat panggilan sistem.

Cara penjahat menggunakan penggodam ini untuk mencipta ranzowari

Selepas aplikasi hos memindahkan kawalan ke enklaf melalui salah satu ECALL (tanpa mengesyaki bahawa enklaf ini berniat jahat), enklaf berniat jahat mencari ruang kosong dalam memori aplikasi hos untuk menyuntik kod (mengambil ruang kosong jujukan sel tersebut yang diisi dengan sifar). Kemudian melalui menggodam alamat menyelidik untuk melihat sama ada ia boleh dibaca, – enklaf mencari halaman boleh laku dalam aplikasi hos dan menjana rantaian ROP yang mencipta fail baharu bernama “RANSOM” dalam direktori semasa (dalam serangan sebenar, enklaf menyulitkan fail pengguna sedia ada) dan memaparkan mesej tebusan. Pada masa yang sama, aplikasi hos secara naif percaya bahawa enklaf hanya menambah dua nombor. Apakah rupa ini dalam kod?

Untuk memudahkan persepsi, mari kita perkenalkan beberapa mnemonik melalui definisi:

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

Kami menyimpan nilai asal daftar RSP dan RBP untuk memulihkan operasi biasa aplikasi hos selepas melaksanakan muatan:

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

Kami sedang mencari bingkai tindanan yang sesuai (lihat kod dari bahagian "godam untuk mengalihkan aliran kawalan").

Mencari alat ROP yang sesuai:

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

Mencari tempat untuk menyuntik muatan:

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

Kami membina rantaian ROP:

SGX malware: bagaimana penjahat mengeksploitasi teknologi Intel baharu untuk tujuan selain daripada yang dimaksudkan

Beginilah cara teknologi SGX Intel, yang direka untuk menentang program berniat jahat, dieksploitasi oleh penjahat untuk mencapai matlamat yang bertentangan.

Sumber: www.habr.com

Tambah komen