Microsoft Windows Sistemi 0day Açığı Analizi ve Kullanımı
Son zamanlarda, Microsoft'un yayınladığı güvenlik yamanında aktif olarak kullanılan bir win32k yükseltme açığı düzeltildi. Bu açık, esas olarak eski Windows sistem sürümlerini etkilemekte ve Windows 11'de tetiklenememektedir. Bu makale, mevcut güvenlik ortamında, saldırganların bu tür açıkları nasıl kullanmaya devam edebileceğini analiz edecektir. Aşağıdaki analiz, Windows Server 2016 ortamında yapılmıştır.
Açık Arka Plan
0day açığı, kamuya açıklanmamış ve düzeltilmemiş güvenlik açığıdır; bu, finansal piyasalardaki T+0 ticaret kavramına benzer. Bu tür açıklar kötüye kullanıldığında ciddi zararlara yol açabilir. Bu sefer keşfedilen Windows sistemindeki 0day açığı, saldırganların sistem üzerinde tam kontrol elde etmesine olanak tanır ve bu da bilgi hırsızlığı, sistemin tahrip edilmesi, kötü amaçlı yazılım yerleştirilmesi gibi saldırılara yol açabilir. Web3 açısından bakıldığında, bu özel anahtarların çalınmasına, dijital varlıkların transfer edilmesine ve hatta Web2 altyapısına dayanan tüm Web3 ekosisteminin tehlikeye girmesine neden olabilir.
Yaman Analizi
Yaman kodunu analiz ettiğimizde, esas olarak bir nesne referans sayımı işleme sorununu düzelttiği görülüyor. Erken dönem win32k kaynak kodu açıklamalarıyla birleştirildiğinde, orijinal kodun yalnızca pencere nesnesini kilitlediği, pencere içindeki menü nesnesini kilitlemediği, bu durumun menü nesnesinin yanlış referanslanmasına neden olabileceği anlaşılmaktadır.
Açık Kullanım Kavram Kanıtı ( PoC )
Analizler, xxxEnableMenuItem fonksiyonundaki MenuItemState'in ana menü veya alt menü döndürebileceğini göstermektedir. Aşağıdaki özelliklere sahip özel bir dört katmanlı menü yapısı oluşturduk:
En alt seviye menü D'nin ID'si sistem menü türü olmalıdır.
Üst düzey menü A da sistem menüsü olmalıdır, ancak menü D ile aynı ID'ye sahip olan öğeyi silmeniz gerekir.
Menü B'deki Menü C referansını sil.
Menü B'nin varlığı, Menü C'nin serbest bırakılmasına yardımcı gibi görünüyor.
Hata tetiklendiğinde, xxxRedrawTitle kullanıcı katmanına dönerken menü C ve B'nin ilişkilendirilmesini kaldırın, menü C'yi serbest bırakın. Bu, xxxEnableMenuItem fonksiyonunun sonrasında geçersiz bir menü C nesnesine referans vermesine neden olur.
Açık Kullanımı (Exp) Gerçekleştirme
Genel düşünce
İki olası kullanım yönünü düşünün:
Shell kodunu çalıştırma: Önceki CVE-2017-0263 gibi açıklar için referans, ancak yeni Windows sürümlerinde birçok engelle karşılaşabilir.
Token'ı okumak ve yazmak için atomik işlemler kullanma: Son yıllarda referans alınabilecek açık exp'ler hala mevcut, esasen cbwndextra değerini ilk kez nasıl kontrol edeceğimizi çözmemiz gerekiyor.
İkinci seçeneği kabul ediyoruz, exp'yi cbwndextra değerini kontrol etme ve kararlı okuma/yazma ilkesini oluşturma olarak iki adımda ayırıyoruz.
 İlk veri yazımı
WNDClass isimli pencere sınıfı nesnesini serbest bırakılan menü nesnesi belleğini kullanarak işgal edin. xxxRedrawWindow fonksiyonunda yazılabilir veri konumunu bulun, işlevdeki bayrak kontrolünü karşılamak için önceki nesnenin bellek verilerini kontrol ederek.
![Numen Özel: Microsoft 0day açığı, Web3 oyununu sistem ve fiziksel düzeyde sarsabilir]###https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
) stabil bellek düzeni
Üç ardışık 0x250 baytlık HWND nesnesinin bellek düzenini tasarlayın, orta nesneyi serbest bırakın ve HWNDClass nesnesi ile doldurun. Ön ve arka HWND nesneleri, işlevler aracılığıyla kontrol etmek ve okuma/yazma ilkelere uygulamak için kullanılır. Nesne sıralamasını hassas bir şekilde belirlemek için çekirdek tanıtıcı adresi sızıntısını kullanın.
![Numen Özel: Microsoft 0day açığı, Web3 oyununu sistem ve fiziksel düzeyde sarsabilir]###https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
) okuma yazma ilkesinin uygulanması
GetMenuBarInfo fonksiyonunu kullanarak rastgele okuma, SetClassLongPtr fonksiyonunu kullanarak rastgele yazma yapılır. TOKEN yazımı dışında, diğer tüm yazma işlemleri ilk pencere nesnesinin sınıf nesnesi aracılığıyla gerçekleştirilir.
![Numen Özel: Microsoft 0day açığı, Web3 oyununu sistem ve fiziksel düzeyde altüst edebilir]###https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(
Sonuç
Microsoft, win32k kodunu Rust ile yeniden yapılandırıyor, bu tür açıkları gelecekte tamamen çözebilir.
Bu tür güvenlik açıkları, özellikle eski sistemler için hala güvenlik riski oluşturmakta olan masaüstü yığın işaretçi adresi sızıntısına dayanmaktadır.
Bu açığın keşfi, daha kapsamlı bir kod kapsamı denetimine atfedilebilir.
Anormal bellek düzeni ve pencere verisi okuma/yazma izleme, benzer güvenlik açıklarını tespit etmeye yardımcı olur.
View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
11 Likes
Reward
11
6
Share
Comment
0/400
TestnetNomad
· 14h ago
Sen ne hakkında Rust'tan bahsediyorsun?
View OriginalReply0
StealthDeployer
· 14h ago
Zaten Linux'a geçtim, akıllıca.
View OriginalReply0
CryptoMotivator
· 14h ago
Yine bir şeyler oldu, Microsoft'un bu hatası gerçekten eski bir gelenek.
Windows sistemindeki 0day açık analizi: win32k'dan yükseltme ile Web3 güvenlik risklerine
Microsoft Windows Sistemi 0day Açığı Analizi ve Kullanımı
Son zamanlarda, Microsoft'un yayınladığı güvenlik yamanında aktif olarak kullanılan bir win32k yükseltme açığı düzeltildi. Bu açık, esas olarak eski Windows sistem sürümlerini etkilemekte ve Windows 11'de tetiklenememektedir. Bu makale, mevcut güvenlik ortamında, saldırganların bu tür açıkları nasıl kullanmaya devam edebileceğini analiz edecektir. Aşağıdaki analiz, Windows Server 2016 ortamında yapılmıştır.
Açık Arka Plan
0day açığı, kamuya açıklanmamış ve düzeltilmemiş güvenlik açığıdır; bu, finansal piyasalardaki T+0 ticaret kavramına benzer. Bu tür açıklar kötüye kullanıldığında ciddi zararlara yol açabilir. Bu sefer keşfedilen Windows sistemindeki 0day açığı, saldırganların sistem üzerinde tam kontrol elde etmesine olanak tanır ve bu da bilgi hırsızlığı, sistemin tahrip edilmesi, kötü amaçlı yazılım yerleştirilmesi gibi saldırılara yol açabilir. Web3 açısından bakıldığında, bu özel anahtarların çalınmasına, dijital varlıkların transfer edilmesine ve hatta Web2 altyapısına dayanan tüm Web3 ekosisteminin tehlikeye girmesine neden olabilir.
Yaman Analizi
Yaman kodunu analiz ettiğimizde, esas olarak bir nesne referans sayımı işleme sorununu düzelttiği görülüyor. Erken dönem win32k kaynak kodu açıklamalarıyla birleştirildiğinde, orijinal kodun yalnızca pencere nesnesini kilitlediği, pencere içindeki menü nesnesini kilitlemediği, bu durumun menü nesnesinin yanlış referanslanmasına neden olabileceği anlaşılmaktadır.
Açık Kullanım Kavram Kanıtı ( PoC )
Analizler, xxxEnableMenuItem fonksiyonundaki MenuItemState'in ana menü veya alt menü döndürebileceğini göstermektedir. Aşağıdaki özelliklere sahip özel bir dört katmanlı menü yapısı oluşturduk:
Hata tetiklendiğinde, xxxRedrawTitle kullanıcı katmanına dönerken menü C ve B'nin ilişkilendirilmesini kaldırın, menü C'yi serbest bırakın. Bu, xxxEnableMenuItem fonksiyonunun sonrasında geçersiz bir menü C nesnesine referans vermesine neden olur.
Açık Kullanımı (Exp) Gerçekleştirme
Genel düşünce
İki olası kullanım yönünü düşünün:
Shell kodunu çalıştırma: Önceki CVE-2017-0263 gibi açıklar için referans, ancak yeni Windows sürümlerinde birçok engelle karşılaşabilir.
Token'ı okumak ve yazmak için atomik işlemler kullanma: Son yıllarda referans alınabilecek açık exp'ler hala mevcut, esasen cbwndextra değerini ilk kez nasıl kontrol edeceğimizi çözmemiz gerekiyor.
İkinci seçeneği kabul ediyoruz, exp'yi cbwndextra değerini kontrol etme ve kararlı okuma/yazma ilkesini oluşturma olarak iki adımda ayırıyoruz.
 İlk veri yazımı
WNDClass isimli pencere sınıfı nesnesini serbest bırakılan menü nesnesi belleğini kullanarak işgal edin. xxxRedrawWindow fonksiyonunda yazılabilir veri konumunu bulun, işlevdeki bayrak kontrolünü karşılamak için önceki nesnenin bellek verilerini kontrol ederek.
![Numen Özel: Microsoft 0day açığı, Web3 oyununu sistem ve fiziksel düzeyde sarsabilir]###https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
) stabil bellek düzeni
Üç ardışık 0x250 baytlık HWND nesnesinin bellek düzenini tasarlayın, orta nesneyi serbest bırakın ve HWNDClass nesnesi ile doldurun. Ön ve arka HWND nesneleri, işlevler aracılığıyla kontrol etmek ve okuma/yazma ilkelere uygulamak için kullanılır. Nesne sıralamasını hassas bir şekilde belirlemek için çekirdek tanıtıcı adresi sızıntısını kullanın.
![Numen Özel: Microsoft 0day açığı, Web3 oyununu sistem ve fiziksel düzeyde sarsabilir]###https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
) okuma yazma ilkesinin uygulanması
GetMenuBarInfo fonksiyonunu kullanarak rastgele okuma, SetClassLongPtr fonksiyonunu kullanarak rastgele yazma yapılır. TOKEN yazımı dışında, diğer tüm yazma işlemleri ilk pencere nesnesinin sınıf nesnesi aracılığıyla gerçekleştirilir.
![Numen Özel: Microsoft 0day açığı, Web3 oyununu sistem ve fiziksel düzeyde altüst edebilir]###https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(
Sonuç
Microsoft, win32k kodunu Rust ile yeniden yapılandırıyor, bu tür açıkları gelecekte tamamen çözebilir.
Bu tür güvenlik açıkları, özellikle eski sistemler için hala güvenlik riski oluşturmakta olan masaüstü yığın işaretçi adresi sızıntısına dayanmaktadır.
Bu açığın keşfi, daha kapsamlı bir kod kapsamı denetimine atfedilebilir.
Anormal bellek düzeni ve pencere verisi okuma/yazma izleme, benzer güvenlik açıklarını tespit etmeye yardımcı olur.
Makaleye yapılan yorum:
Rust, Windows'u kurtarabilir mi? Güldürdü.