SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

Bildiğiniz gibi, yerleşim bölgesinde yürütülen kodun işlevselliği ciddi şekilde sınırlıdır. Sistem çağrıları yapamaz. G/Ç işlemlerini gerçekleştiremez. Ana bilgisayar uygulamasının kod bölümünün temel adresini bilmiyor. Ana bilgisayar uygulama kodunu jmp yapamaz veya çağıramaz. Ana uygulamayı yöneten adres alanı yapısı (örneğin, hangi sayfaların eşlendiği veya bu sayfalarda ne tür verilerin bulunduğu) hakkında hiçbir fikri yoktur. İşletim sisteminden ana bilgisayar uygulamasının belleğinin bir parçasını kendisine eşlemesini isteyemez (örneğin, /proc/pid/maps yoluyla). Bir ana bilgisayar uygulamasının rastgele bir bellek bölgesini körü körüne okumaya yönelik saf girişimler, yazma girişimlerinden bahsetmiyorum bile, er ya da geç (büyük olasılıkla ilki) enklav programının zorla sonlandırılmasına yol açacaktır. Bu durum, yerleşim bölgesi tarafından talep edilen sanal adres alanı bölgesine ana bilgisayar uygulaması tarafından erişilemediğinde meydana gelir.

Bu kadar sert gerçekler göz önüne alındığında, bir virüs yazarı kötü niyetli hedeflerine ulaşmak için SGX bölgelerini kullanabilecek mi?

– Okunup okunamayacaklarını görmek için adresleri araştırın
– Yazılabilirlik için adresleri hacklemek
– Kontrol akışını yeniden yönlendirmek için hack
– Yukarıda sıralanan üç tüyo kötü adama ne kazandırıyor?
– Kötü adam ranzowari yaratmak için bu hileleri nasıl kullanıyor?

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

Yukarıdakilerin hepsine dayanarak, bir enclave'in yalnızca ana bilgisayar uygulamasına hizmet verebildiği ve enclave'in kötü niyetli olanlar da dahil olmak üzere kendi inisiyatifini kullanamayacağı genel olarak kabul edilir. Bu, yerleşim bölgelerinin virüs yazarları için hiçbir pratik değere sahip olmadığı anlamına gelir. Bu aceleci varsayım, SGX korumasının asimetrik olmasının nedenlerinden biridir: ana bilgisayar uygulama kodu, enclave belleğine erişemezken, enclave kodu, herhangi bir ana bilgisayar uygulamasının bellek adresini okuyabilir ve yazabilir.

Bu nedenle, kötü niyetli yerleşim kodu, ana bilgisayar uygulaması adına rastgele sistem çağrıları yapabilseydi, onun adına rastgele kod yürütebilseydi, ana bilgisayar uygulamasının belleğini tarayabilir ve içinde kötüye kullanılabilir ROP zincirleri bulabilirse, ana bilgisayar uygulamasının tam kontrolünü ele geçirebilirdi. gizli modu. Yalnızca kullanıcı dosyalarını çalıp şifrelemekle kalmaz, aynı zamanda kullanıcı adına da hareket eder. Örneğin, onun adına kimlik avı e-postaları gönderin veya DoS saldırıları gerçekleştirin. Yığın kanaryaları ve adres temizleme gibi en modern koruyucu mekanizmalardan bile korkmadan.

Saldırganların yukarıda açıklanan sınırlamaları aşmak ve SGX'ten kendi kötü amaçları doğrultusunda yararlanmak için kullandıkları birkaç hack'i size göstereceğiz: ROP saldırıları. Ya bir ana bilgisayar uygulama işlemi olarak gizlenen rastgele kodu yürütmek (kötü amaçlı yazılımlar tarafından sıklıkla kullanılan işlem boşluğuna benzer) ya da hazır bir kötü amaçlı yazılımı gizlemek (kötü amaçlı yazılımını antivirüsler ve diğer savunma mekanizmaları tarafından yapılan zulümden kurtarmak için).

Okunup okunamayacaklarını görmek için adresleri araştırmak için hackleyin

Enclave, sanal adres alanının hangi aralıklarının ana bilgisayar uygulaması tarafından erişilebilir olduğunu bilmediğinden ve erişilemeyen bir adresi okumaya çalışırken enclave sonlandırılmaya zorlandığından, saldırgan, hata vermenin bir yolunu bulma göreviyle karşı karşıya kalır. adres alanını toleranslı bir şekilde tarayın. Kullanılabilir sanal adresleri eşlemenin bir yolunu bulun. Kötü adam bu sorunu Intel'in TSX teknolojisini kötüye kullanarak çözüyor. TSX'in yan etkilerinden birini kullanır: Bellek erişim işlevi bir TSX işlemine yerleştirilirse, geçersiz adreslere erişimden kaynaklanan istisnalar, işletim sistemine ulaşmadan TSX tarafından bastırılır. Geçersiz bir bellek adresine erişim girişiminde bulunulursa enclave programının tamamı değil, yalnızca geçerli işlem iptal edilir. O. TSX, bir yerleşim bölgesinin bir işlem içinden herhangi bir adrese çökme riski olmadan güvenli bir şekilde erişmesine olanak tanır.

Eğer belirtilen adres mevcut Ana bilgisayar uygulamasında TSX işlemi çoğunlukla başarılı olur. Nadir durumlarda, kesintiler (zamanlayıcı kesintileri gibi), önbellek tahliyeleri veya bir bellek konumunun birden fazla işlem tarafından eşzamanlı olarak değiştirilmesi gibi dış etkiler nedeniyle başarısız olabilir. Bu nadir durumlarda TSX, arızanın geçici olduğunu belirten bir hata kodu döndürür. Bu durumlarda işlemi yeniden başlatmanız yeterlidir.

Eğer belirtilen adres kullanılamıyor Ana bilgisayar uygulamasında TSX, meydana gelen istisnayı bastırır (işletim sistemine bilgi verilmez) ve işlemi iptal eder. İşlemin iptal edildiği gerçeğine tepki verebilmesi için bölge koduna bir hata kodu döndürülür. Bu hata kodları, söz konusu adresin ana uygulama tarafından kullanılamadığını gösterir.

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

TSX'in bölge içinden bu manipülasyonu, kötü adam için güzel bir özelliğe sahiptir: Çoğu donanım performans sayacı, bölge kodu yürütüldüğü sırada güncellenmediğinden, bölge içinde yürütülen TSX işlemlerini izlemek imkansızdır. Böylece TSX'in kötü niyetli manipülasyonu işletim sistemi tarafından tamamen görünmez kalır.

Ek olarak, yukarıdaki hack herhangi bir sistem çağrısına dayanmadığı için, sistem çağrılarının engellenmesiyle ne tespit edilebilir ne de önlenebilir; Bu da genellikle yumurta avcılığına karşı mücadelede olumlu sonuç verir.

Kötü adam, ROP zinciri oluşturmaya uygun gadget'ları ana bilgisayar uygulama kodunu aramak için yukarıda açıklanan hack'i kullanıyor. Aynı zamanda her adresi araştırmasına da gerek yok. Sanal adres alanının her sayfasından bir adresi araştırmak yeterlidir. 16 gigabaytlık belleğin tamamının incelenmesi yaklaşık 45 dakika sürer (Intel i7-6700K'da). Sonuç olarak kötü adam, ROP zinciri oluşturmaya uygun yürütülebilir sayfaların bir listesini alır.

Yazılabilirlik için adresleri araştırmak için hack

ROP saldırısının enklav versiyonunu gerçekleştirmek için, saldırganın ana bilgisayar uygulamasının yazılabilir kullanılmayan bellek alanlarını arayabilmesi gerekir. Saldırgan bu bellek konumlarını sahte bir yığın çerçevesi ve bir veri yükü (kabuk kodu) enjekte etmek için kullanır. Sonuç olarak, kötü niyetli bir yerleşim, ana bilgisayar uygulamasının kendisi için bellek ayırmasını talep edemez; bunun yerine, ana bilgisayar uygulaması tarafından zaten ayrılmış olan belleği kötüye kullanabilir. Tabii yerleşim bölgesini çökertmeden bu tür alanları bulmayı başarabilirse.

Kötü adam bu araştırmayı TSX'in başka bir yan etkisinden yararlanarak gerçekleştiriyor. Öncelikle önceki durumda olduğu gibi adresin varlığını araştırır ve ardından bu adrese karşılık gelen sayfanın yazılabilir olup olmadığını kontrol eder. Bunu yapmak için kötü adam şu hack'i kullanıyor: TSX işlemine bir yazma işlevi yerleştiriyor ve işlem tamamlandıktan sonra, ancak tamamlanmadan önce işlemi zorla iptal ediyor (açık iptal).

Saldırgan, bir TSX işleminin dönüş koduna bakarak bunun yazılabilir olup olmadığını anlar. Eğer bu bir "açık kürtaj" ise, kötü adam, kaydın devam etmesi durumunda başarılı olacağını anlıyor. Sayfa salt okunur ise işlem “açık iptal” dışında bir hatayla sonlanır.

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

TSX'in bu manipülasyonunun, kötü adam için hoş olan başka bir özelliği daha vardır (donanım performans sayaçları aracılığıyla izlemenin imkansızlığının yanı sıra): tüm bellek yazma komutları yalnızca işlem başarılı olduğunda işlendiğinden, işlemi tamamlamaya zorlamak, incelenen bellek hücresinin güvenli olmasını sağlar. değişmeden kalır.

Kontrol akışını yeniden yönlendirmek için hack

Geleneksel ROP saldırılarından farklı olarak, bir yerleşim bölgesinden ROP saldırısı gerçekleştirirken, saldırgan, saldırıya uğrayan programdaki herhangi bir hatadan (arabellek taşması veya buna benzer bir şey) yararlanmadan RIP kaydının kontrolünü ele geçirebilir. Saldırgan, yığında depolanan RIP kaydının değerinin üzerine doğrudan yazabilir. Özellikle bu yazmacın değerini kendi ROP zinciriyle değiştirebilir.

Ancak ROP zinciri uzunsa, ana bilgisayar uygulamasının yığınının büyük bir bölümünün üzerine yazmak, verilerin bozulmasına ve beklenmeyen program davranışına yol açabilir. Saldırısını gizlice gerçekleştirmeye çalışan hain bu durumdan memnun değildir. Bu nedenle kendisi için sahte bir geçici yığın çerçevesi oluşturur ve ROP zincirini bunun içinde saklar. Sahte yığın çerçevesi, gerçek yığını olduğu gibi bırakarak rastgele yazılabilir bir bellek konumuna yerleştirilir.

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

Yukarıda sıralanan üç tüyo kötü adama ne sağlıyor?

(1) İlk olarak, kötü niyetli yerleşim bölgesi aracılığıyla okunup okunamayacaklarını görmek için adresleri araştırmak için hack, – ana bilgisayar uygulamasında kötüye kullanılabilen ROP aygıtlarını arar.

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

(2) Daha sonra yazılabilirlik için adresleri araştırmak için hack, – kötü amaçlı bir yerleşim, ana bilgisayar uygulamasının belleğinde bir verinin enjekte edilmesi için uygun olan alanları tanımlar.

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

(3) Daha sonra yerleşim, (1) adımda keşfedilen araçlardan bir ROP zinciri oluşturur ve bu zinciri ana bilgisayar uygulama yığınına enjekte eder.

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

(4) Son olarak, ana bilgisayar uygulaması önceki adımda oluşturulan ROP zinciriyle karşılaştığında, kötü amaçlı yük, ana bilgisayar uygulamasının ayrıcalıkları ve sistem çağrıları yapma yeteneği ile birlikte yürütülmeye başlar.

Bir kötü adam ranzowari yaratmak için bu hileleri nasıl kullanıyor?

Ana bilgisayar uygulaması kontrolü ECALL'lardan biri aracılığıyla bölgeye aktardıktan sonra (bu bölgenin kötü amaçlı olduğundan şüphelenmeden), kötü niyetli bölge, kodu enjekte etmek için ana bilgisayar uygulamasının belleğinde boş alan arar (bu hücre dizilerini boş alanlar olarak alır) sıfırlarla dolu). Sonra aracılığıyla okunup okunamayacaklarını görmek için adresleri araştırmak için hack, – enclave, ana bilgisayar uygulamasında yürütülebilir sayfaları arar ve mevcut dizinde “RANSOM” adında yeni bir dosya oluşturan bir ROP zinciri oluşturur (gerçek bir saldırıda, enclave mevcut kullanıcı dosyalarını şifreler) ve bir fidye mesajı görüntüler. Aynı zamanda, ana bilgisayar uygulaması saf bir şekilde yerleşim bölgesinin yalnızca iki sayı eklediğine inanıyor. Bu kodda neye benziyor?

Algılamayı kolaylaştırmak için tanımlar aracılığıyla bazı anımsatıcıları tanıtalım:

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

Yükü yürüttükten sonra ana bilgisayar uygulamasının normal çalışmasını geri yüklemek için RSP ve RBP kayıtlarının orijinal değerlerini kaydediyoruz:

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

Uygun bir yığın çerçevesi arıyoruz ("kontrol akışını yeniden yönlendirmek için hack" bölümündeki koda bakın).

Uygun ROP araçlarını bulma:

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

Yükü enjekte edecek bir yer bulma:

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

Bir ROP zinciri oluşturuyoruz:

SGX kötü amaçlı yazılımı: kötü adamlar yeni Intel teknolojisini tasarlandığı amaç dışında nasıl kullanıyor?

Kötü amaçlı programlara karşı koymak için tasarlanan Intel'in SGX teknolojisi, kötü adamlar tarafından zıt hedeflere ulaşmak için bu şekilde kullanılıyor.

Kaynak: habr.com

Yorum ekle