Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

Seperti yang Anda ketahui, kode yang dieksekusi di enclave sangat terbatas fungsinya. Itu tidak dapat melakukan panggilan sistem. Itu tidak dapat melakukan operasi I/O. Ia tidak mengetahui alamat dasar segmen kode aplikasi host. Itu tidak dapat jmp atau memanggil kode aplikasi host. Ia tidak mengetahui struktur ruang alamat yang mengatur aplikasi host (misalnya, halaman mana yang dipetakan atau jenis data apa yang terletak di halaman tersebut). Ia tidak dapat meminta sistem operasi untuk memetakan sebagian memori aplikasi host ke dalamnya (misalnya, melalui /proc/pid/maps). Upaya naif untuk membaca secara membabi buta wilayah memori sewenang-wenang dari aplikasi host, belum lagi upaya untuk menulis, cepat atau lambat (kemungkinan besar yang pertama) akan menyebabkan penghentian paksa program enclave. Hal ini terjadi setiap kali wilayah ruang alamat virtual yang diminta oleh enclave tidak dapat diakses oleh aplikasi host.

Mengingat kenyataan pahit seperti itu, akankah pembuat virus dapat menggunakan kantong SGX untuk mencapai tujuan jahatnya?

– Retas untuk menyelidiki alamat untuk melihat apakah alamat tersebut dapat dibaca
– Retas untuk menyelidiki alamat agar dapat ditulisi
– Retas untuk mengalihkan aliran kontrol
– Apa yang diberikan oleh tiga peretasan di atas kepada penjahatnya?
– Bagaimana penjahat menggunakan peretasan ini untuk membuat ranzomwari

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

Berdasarkan semua hal di atas, secara umum diterima bahwa enclave hanya mampu melayani aplikasi host, dan enclave tidak dapat menjalankan inisiatifnya sendiri, termasuk inisiatif jahat. Artinya, enclave tidak mempunyai nilai praktis bagi pembuat virus. Asumsi yang tergesa-gesa ini adalah salah satu alasan mengapa perlindungan SGX bersifat asimetris: kode aplikasi host tidak dapat mengakses memori enklave, sedangkan kode enklave dapat membaca dan menulis ke alamat memori aplikasi host mana pun.

Oleh karena itu, jika kode enclave yang berbahaya dapat membuat panggilan sistem sewenang-wenang atas nama aplikasi host, mengeksekusi kode arbitrer atas namanya, memindai memori aplikasi host dan menemukan rantai ROP yang dapat disalahgunakan di dalamnya, kode tersebut dapat mengambil kendali penuh atas aplikasi host, di modus siluman. Itu tidak hanya dapat mencuri dan mengenkripsi file pengguna, tetapi juga bertindak atas nama pengguna. Misalnya mengirim email phishing atas namanya atau melakukan serangan DoS. Tanpa rasa takut terhadap mekanisme perlindungan paling modern sekalipun, seperti stack canaries dan sanitasi alamat.

Kami akan menunjukkan kepada Anda beberapa peretasan yang digunakan penyerang untuk mengatasi batasan yang dijelaskan di atas guna memanfaatkan SGX untuk tujuan jahat mereka sendiri: serangan ROP. Baik untuk mengeksekusi kode arbitrer yang disamarkan sebagai proses aplikasi host (mirip dengan proses pengosongan yang sering digunakan oleh malware), atau untuk menyamarkan malware yang sudah jadi (untuk menyelamatkan malware-nya dari penganiayaan oleh antivirus dan mekanisme pertahanan lainnya).

Retas untuk menyelidiki alamat untuk melihat apakah alamat tersebut dapat dibaca

Karena enklave tidak mengetahui rentang ruang alamat virtual mana yang dapat diakses oleh aplikasi host, dan karena enklave terpaksa dihentikan ketika mencoba membaca alamat yang tidak dapat diakses, penyerang dihadapkan pada tugas untuk menemukan cara untuk melakukan kesalahan. memindai ruang alamat dengan toleran. Temukan cara untuk memetakan alamat virtual yang tersedia. Penjahat memecahkan masalah ini dengan menyalahgunakan teknologi Intel TSX. Menggunakan salah satu efek samping TSX: jika fungsi akses memori ditempatkan dalam transaksi TSX, maka pengecualian yang timbul dari pengaksesan alamat yang tidak valid akan disembunyikan oleh TSX tanpa mencapai sistem operasi. Jika ada upaya untuk mengakses alamat memori yang tidak valid, hanya transaksi saat ini yang dibatalkan, bukan keseluruhan program enclave. Itu. TSX memungkinkan enklave mengakses alamat mana pun dengan aman dari dalam transaksi - tanpa risiko keruntuhan.

Jika alamat yang ditentukan tersedia aplikasi host, transaksi TSX paling sering berhasil. Dalam kasus yang jarang terjadi, ini mungkin gagal karena pengaruh eksternal seperti interupsi (seperti interupsi penjadwal), penggusuran cache, atau modifikasi lokasi memori secara bersamaan oleh beberapa proses. Dalam kasus yang jarang terjadi ini, TSX mengembalikan kode kesalahan yang menunjukkan bahwa kegagalan tersebut bersifat sementara. Dalam kasus ini, Anda hanya perlu memulai kembali transaksi.

Jika alamat yang ditentukan tidak tersedia aplikasi host, TSX menekan pengecualian yang terjadi (OS tidak diberitahu) dan membatalkan transaksi. Kode kesalahan dikembalikan ke kode enklave sehingga dapat bereaksi terhadap fakta bahwa transaksi telah dibatalkan. Kode kesalahan ini menunjukkan bahwa alamat yang dimaksud tidak tersedia untuk aplikasi host.

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

Manipulasi TSX dari dalam enklave ini memiliki fitur yang bagus untuk penjahat: karena sebagian besar penghitung kinerja perangkat keras tidak diperbarui pada saat kode enklave dijalankan, tidak mungkin melacak transaksi TSX yang dieksekusi di dalam enklave. Dengan demikian, manipulasi jahat terhadap TSX tetap tidak terlihat oleh sistem operasi.

Selain itu, karena peretasan di atas tidak bergantung pada panggilan sistem apa pun, peretasan ini tidak dapat dideteksi atau dicegah hanya dengan memblokir panggilan sistem; yang biasanya memberikan hasil positif dalam memerangi perburuan telur.

Penjahat menggunakan peretasan yang dijelaskan di atas untuk mencari kode aplikasi host untuk gadget yang cocok untuk membentuk rantai ROP. Pada saat yang sama, dia tidak perlu menyelidiki setiap alamat. Cukup dengan menyelidiki satu alamat dari setiap halaman ruang alamat virtual. Menyelidiki semua memori 16 gigabyte membutuhkan waktu sekitar 45 menit (pada Intel i7-6700K). Akibatnya, penjahat menerima daftar halaman yang dapat dieksekusi yang cocok untuk membangun rantai ROP.

Retas untuk menyelidiki alamat agar dapat ditulisi

Untuk melakukan serangan ROP versi enclave, penyerang harus dapat mencari area memori yang tidak terpakai yang dapat ditulisi pada aplikasi host. Penyerang menggunakan lokasi memori ini untuk memasukkan bingkai tumpukan palsu dan memasukkan muatan (kode shell). Intinya adalah bahwa enclave jahat tidak dapat meminta aplikasi host untuk mengalokasikan memori untuk dirinya sendiri, namun malah dapat menyalahgunakan memori yang telah dialokasikan oleh aplikasi host. Jika, tentu saja, dia berhasil menemukan area tersebut tanpa meruntuhkan daerah kantongnya.

Penjahat melakukan pencarian ini dengan memanfaatkan efek samping lain dari TSX. Pertama, seperti pada kasus sebelumnya, ia memeriksa keberadaan alamat tersebut, dan kemudian memeriksa apakah halaman yang terkait dengan alamat ini dapat ditulis. Untuk melakukan ini, penjahat menggunakan peretasan berikut: dia menempatkan fungsi tulis dalam transaksi TSX, dan setelah selesai, tetapi sebelum selesai, dia secara paksa membatalkan transaksi (batalkan secara eksplisit).

Dengan melihat kode pengembalian dari transaksi TSX, penyerang memahami apakah kode tersebut dapat ditulis. Jika ini adalah "aborsi eksplisit", penjahat memahami bahwa rekaman tersebut akan berhasil jika dia menindaklanjutinya. Jika halaman tersebut bersifat read-only, maka transaksi berakhir dengan kesalahan selain “pembatalan eksplisit”.

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

Manipulasi TSX ini memiliki fitur lain yang bagus untuk penjahat (selain ketidakmungkinan pelacakan melalui penghitung kinerja perangkat keras): karena semua perintah penulisan memori dilakukan hanya jika transaksi berhasil, memaksa transaksi untuk diselesaikan memastikan bahwa sel memori yang diperiksa tetap tidak berubah.

Retas untuk mengalihkan aliran kontrol

Saat melakukan serangan ROP dari enklave - tidak seperti serangan ROP tradisional - penyerang dapat menguasai register RIP tanpa mengeksploitasi bug apa pun dalam program yang diserang (buffer overflow atau semacamnya). Seorang penyerang dapat langsung menimpa nilai register RIP yang disimpan di stack. Secara khusus, ia dapat mengganti nilai register ini dengan rantai ROPnya sendiri.

Namun, jika rantai ROP panjang, menimpa sebagian besar tumpukan aplikasi host dapat menyebabkan kerusakan data dan perilaku program yang tidak diharapkan. Penjahat, yang berusaha melakukan serangannya secara diam-diam, tidak puas dengan keadaan ini. Oleh karena itu, ia membuat bingkai tumpukan sementara palsu untuk dirinya sendiri dan menyimpan rantai ROP-nya di dalamnya. Bingkai tumpukan palsu ditempatkan di lokasi memori acak yang dapat ditulis, membiarkan tumpukan sebenarnya tetap utuh.

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

Apa yang diberikan oleh tiga peretasan di atas kepada penjahatnya?

(1) Pertama, kantong jahat lewat hack untuk menyelidiki alamat untuk melihat apakah alamat tersebut dapat dibaca, – mencari aplikasi host untuk gadget ROP yang dapat disalahgunakan.

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

(2) Kemudian oleh retas untuk menyelidiki alamat agar dapat ditulisi, – kantong jahat mengidentifikasi area di memori aplikasi host yang cocok untuk memasukkan muatan.

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

(3) Selanjutnya, enklave membuat rantai ROP dari gadget yang ditemukan pada langkah (1) dan memasukkan rantai ini ke tumpukan aplikasi host.

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

(4) Terakhir, ketika aplikasi host menemukan rantai ROP yang dibuat pada langkah sebelumnya, muatan berbahaya mulai dieksekusi - dengan hak istimewa dari aplikasi host dan kemampuan untuk melakukan panggilan sistem.

Bagaimana penjahat menggunakan peretasan ini untuk membuat ranzowari

Setelah aplikasi host mentransfer kontrol ke enklave melalui salah satu ECALL (tanpa mencurigai bahwa enklave ini berbahaya), enklave jahat mencari ruang kosong di memori aplikasi host untuk memasukkan kode (mengambil urutan sel tersebut sebagai ruang kosong yang diisi dengan angka nol). Kemudian melalui hack untuk menyelidiki alamat untuk melihat apakah alamat tersebut dapat dibaca, – enclave mencari halaman yang dapat dieksekusi di aplikasi host dan menghasilkan rantai ROP yang membuat file baru bernama “RANSOM” di direktori saat ini (dalam serangan sebenarnya, enclave mengenkripsi file pengguna yang ada) dan menampilkan pesan tebusan. Pada saat yang sama, aplikasi host secara naif percaya bahwa enclave hanya menambahkan dua angka. Seperti apa tampilannya dalam kode?

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

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

Kami menyimpan nilai asli register RSP dan RBP untuk memulihkan operasi normal aplikasi host setelah menjalankan payload:

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

Kami mencari bingkai tumpukan yang sesuai (lihat kode dari bagian "peretasan untuk mengarahkan aliran kontrol").

Menemukan gadget ROP yang cocok:

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

Menemukan tempat untuk menyuntikkan muatan:

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

Kami membangun rantai ROP:

Malware SGX: bagaimana penjahat mengeksploitasi teknologi Intel baru untuk tujuan selain yang dimaksudkan

Beginilah cara teknologi Intel SGX, yang dirancang untuk melawan program jahat, dieksploitasi oleh penjahat untuk mencapai tujuan yang berlawanan.

Sumber: www.habr.com

Tambah komentar