R2R Stomping – İkili Dosyalarda Gizli Kodu Çalıştırmanın Yeni Yöntemi


Algılanan gerçekliğiniz, dnSpy gibi hata ayıklayıcılarda gözlemlediğiniz .NET kodundan farklı olabilir, bu da hata ayıklamanın ötesinde davranışı hakkında sorular ortaya çıkarabilir.

AOT derlemesi için ReadyToRun (R2R) biçimini kullanarak .NET uygulamasının başlatılmasını ve gecikme süresini iyileştirin, daha iyi performans için hem IL kodu hem de yerel sürümlerle daha büyük ikili dosyalar oluşturun.

CheckPoint araştırmacıları yakın zamanda, .NET optimizasyonundan yararlanarak, önceden derlenmiş yerel koddan farklılaşacak şekilde IL kodunu değiştirerek ReadyToRun (R2R) .NET ikili dosyalarında gizli kodu çalıştırmak için yeni bir yöntem açıkladı.

Belge

Ücretsiz demo

Yapay Zeka Destekli E-posta güvenlik çözümlerini uygulamak “Trustifi”, işletmenizi E-posta İzleme, Engelleme, Değiştirme, Kimlik Avı, Hesabın Devralınması, İş E-postasının Tehlikeye Atılması, Kötü Amaçlı Yazılım ve Fidye Yazılımı gibi günümüzün en tehlikeli e-posta tehditlerine karşı koruyabilir

R2R’nin ezilmesi

Başlangıçta Microsoft’un Dotnet çerçevesi artık açık kaynaklı ve çapraz platformlu olup C#, F#, VB.NET ve PowerShell gibi dilleri desteklemektedir. 2002’de yalnızca Windows’a yönelik kapalı kaynakla başladı, ancak 2004’te açık kaynaklı “Mono Proje” ortaya çıktı.

Microsoft daha sonra kendi açık kaynak sürümü olan .NET Core’u (2016) tanıttı ve .NET 5’e (2020) dönüştü. Bu araştırma, ReadyToRun formatı nedeniyle .NET Core 3.0+ ila .NET 5+ sürümlerini hedefliyor.

Geleneksel .NET derlemeleri kod yürütme için JIT’e güvenir ve bu da gecikmeye neden olur. Dotnet kullanımı arttıkça çözümler, JIT bağımlılığını azaltmaya ve önceden (AOT) derleme yoluyla başlatma sürelerini iyileştirmeye odaklanıyor.

Aşağıda AOT derlemesinin tüm ana formatlarından bahsettik: –

ReadyToRun (R2R) derlenmiş derlemeler, hem IL kodunu hem de yerel kodu içerir; bunları diğer CLI görüntülerinden ayıran, “0x00525452” imzasına sahip bir “READYTORUN_HEADER”a işaret eden bir “ManagedNativeHeader” ile zenginleştirilmiş CLI formatına uygundur.

ReadyToRun başlık yapısı
ReadyToRun başlık yapısı (Kaynak – CheckPoint)

R2R durdurma, R2R ikili dosyalarını değiştirerek IL kodunun önceden derlenmiş yerel koddan farklı olmasını sağlar ve yerel yürütmeye öncelik verir.

Bununla birlikte, dnSpy/dnSpyEx gibi yönetilen hata ayıklayıcıların farklı optimizasyon ayarları vardır, bu da farklı kod yürütmeye yol açar ve bu yöntem, MS Office’teki VBA durdurmaya benzer.

R2R Ezme

R2R durdurma, yöntem IL davranışının önceden derlenmiş yerel koddan farklı olmasını sağlamak için derleme kodunu değiştirir.

Aşağıda değişiklik yöntemlerinden bahsettik: –

  • Gerçeği derle – Tuzakla değiştir
  • Yemi derleyin – Gerçekle değiştirin

Çoğu araştırmacı, genellikle dnSpy/dnSpyEx gibi araçları kullanarak dotnet derlemesini IL veya kaynak koda dönüştürülmüş C# kodu düzeyinde analiz eder. Bununla birlikte, R2R’nin durdurulmuş montaj analizi, yerel kodun daha derinlemesine incelenmesini gerektirir.

R2R durdurulmuş montaj analizi, standart noktanet montaj analizine kıyasla, belirli görevleri yerine getiren çeşitli araçlarla benzersiz bir yaklaşım ve araç seti gerektirir.

Burada bu özel görevler şu şekilde ayrılmıştır: –

  • ReadyToRun derleme yapısını ayrıştırma (R2RDump, dotPeek)
  • IL kodunu ve yorumlanmış kaynak koda dönüştürülmüş C# kodunu gösterme (ILSpy, dnSpyEx, dotPeek)
  • Önceden derlenmiş yerel kodu bulma ve parçalara ayırma (R2RDump, ILSpy)

ReadyToRun derlemesini tespit etmek, manuel olarak veya dotnet paket dosya formatlarını da işleyebilen dotPeek veya ILSpy gibi araçlarla basittir.

R2R düzeneğinin tespiti
R2R düzeneğinin tespiti (Kaynak – CheckPoint)

Üretim için statik, otomatik algılama mevcut olmasa da davranışa dayalı algılama, R2R durdurma işleminden etkilenmez.

850’den fazla üçüncü taraf uygulamaya hızlı bir şekilde yama uygulamak için Patch Manager Plus’ı kullanarak kendinizi güvenlik açıklarından koruyun. Avantajlardan yararlanın ücretsiz deneme % 100 güvenlik sağlamak için.



Source link