Microsoft Windows Sistemi 0day Açığı Analizi ve Kullanımı
Son zamanlarda Microsoft tarafından yayımlanan güvenlik yamasında, kullanılan bir win32k yükseltme açığı bulunmaktadır. Bu açık, esas olarak daha eski Windows sistem versiyonlarında mevcuttur ve Windows 11'de tetiklenemez. Bu makalede, mevcut güvenlik önlemlerinin sürekli güçlendiği bir bağlamda, saldırganların bu tür açıkları nasıl kullanmaya devam ettiğini analiz edeceğiz. Analiz sürecimiz Windows Server 2016 ortamında tamamlanmıştır.
Açık Arka Plan
0day açığı, henüz kamuya açıklanmamış ve düzeltilmemiş güvenlik açıklarını ifade eder; bu, finansal piyasalardaki T+0 işlem kavramına benzer. Bu tür açıklar keşfedildiğinde, fark edilmeden kötü niyetli bir şekilde kullanılabilir ve büyük zararlara yol açabilir.
Bu keşfedilen Windows sistemindeki 0day açığı, saldırganların sisteme tamamen erişim sağlamasına olanak tanıyor. Bu, kişisel bilgilerin ifşası, sistem çökmesi, veri kaybı, mali kayıplar gibi ciddi sonuçlara yol açabilir. Web3 açısından bakıldığında, kullanıcıların özel anahtarları çalınabilir ve dijital varlıklar transfer edilebilir. Daha geniş bir perspektiften, bu açık, Web2 altyapısı üzerine inşa edilmiş olan Web3 ekosistemini etkileyebilir.
Açık Analizi
Yamanı kodunu analiz ederek, bunun bir nesne referans sayımı hatası olduğunu keşfettik. Daha önceki win32k kodundaki yorumlar, yalnızca pencere nesnesinin kilitlendiğini ve pencere içindeki menü nesnesinin kilitlenmediğini gösteriyor, bu da menü nesnesinin yanlış bir şekilde referans alınmasına neden olabilir.
Daha derinlemesine bir analiz, xxxEnableMenuItem fonksiyonunda döndürülen menü nesnesinin ana pencere menüsü, alt menü veya daha derin bir menü olabileceğini ortaya koydu. Bu, POC oluşturma konusunda bir fikir sağlıyor.
POC Uygulaması
Özel bir çok katmanlı menü yapısı oluşturarak, belirli bir ilişkiye sahip dört menü nesnesi içeriyoruz. Bu menülerin özelliklerini ve ilişkilerini dikkatlice ayarlayarak, xxxEnableMenuItem fonksiyonunun kontrolünü atlayabilir ve fonksiyon döndüğünde kritik menü nesnelerini serbest bırakabiliriz. Böylece, bu nesneye sonraki atıflarda UAF açığı tetiklenecektir.
Açık Kullanımı ( EXP ) ile gerçekleştirildi
Genel düşünce
İki tür istismar yönünü değerlendirdik: shellcode çalıştırmak ve okuma/yazma ilkelere token'ı değiştirmek. Sonunda, daha yüksek sürüm Windows'ta daha uygulanabilir olduğu için ikincisini seçtik. Tüm istismar sürecini iki adımda ayırdık: UAF aracılığıyla cbwndextra değerini nasıl kontrol edeceğimiz ve kontrol edilen cbwndextra ile istikrarlı okuma/yazma ilkelere nasıl ulaşacağımız.
başlangıç verisi yazma
Serbest bırakılmış menü nesnesinin belleğini işgal etmek için pencere türü WNDClass'ın ad nesnesini kullanıyoruz. Çeşitli olası yazma noktalarını analiz ederek, nihayetinde xxxRedrawWindow fonksiyonunda nesne bayrağının AND işlemi kullanılarak HWNDClass'ın cb-extra değerine yazma işlemini seçtik.
bellek düzeni
Üç ardışık HWND nesnesinden oluşan bir bellek düzeni tasarladık, ortadaki nesne serbest bırakıldı ve HWNDClass nesnesi tarafından kullanıldı. Önceki ve sonraki HWND nesneleri, sırasıyla tespiti atlatmak ve nihai okuma/yazma ilkelini gerçekleştirmek için kullanılır. Sızan çekirdek tanıtıcı adresi aracılığıyla, bu nesnelerin dizilimini hassas bir şekilde kontrol edebiliriz.
okuma yazma ilkeleri gerçekleştirme
Herhangi bir okuma işlemi GetMenuBarInfo fonksiyonunu kullanırken, herhangi bir yazma işlemi SetClassLongPtr fonksiyonunu kullanır. TOKEN'ın yazımı ikinci pencerenin class nesnesine bağımlıyken, diğer yazma işlemleri birinci pencere nesnesinin class nesnesini ofset aracılığıyla kullanarak gerçekleştirilir.
Özet
Microsoft, win32k kodunu Rust ile yeniden yapılandırmayı deniyor, gelecekte bu tür zafiyetler yeni sistemde tamamen çözülebilir.
Bu tür açıkların istismar süreci nispeten basittir, ana zorluk ilk veri yazımını nasıl kontrol edeceğinizdir.
Açıkların keşfi, daha kapsamlı kod kapsamı tespit teknolojilerinden faydalanıyor olabilir.
Açık tespiti için, tetikleyici işlevin kritik noktalarına dikkat etmenin yanı sıra, anormal bellek düzeni ve veri okuma/yazma işlemlerini de kontrol etmek gerekir.
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.
7 Likes
Reward
7
6
Share
Comment
0/400
DeFiGrayling
· 10h ago
Microsoft bu sefer gerçekten büyük oynadı -_-
View OriginalReply0
HackerWhoCares
· 10h ago
Bilgisayarımın bu kadar yavaş olmasına şaşmamalı!
View OriginalReply0
ResearchChadButBroke
· 10h ago
Microsoft bu sefer gitti ha
View OriginalReply0
GasWrangler
· 10h ago
teknik olarak konuşursak, bu bellek düzeni hatası oldukça suboptimal
Windows sistemindeki 0day açığı, Web3 güvenlik tehditlerini tetikliyor. Uzmanlar, kullanma sürecini analiz ediyor.
Microsoft Windows Sistemi 0day Açığı Analizi ve Kullanımı
Son zamanlarda Microsoft tarafından yayımlanan güvenlik yamasında, kullanılan bir win32k yükseltme açığı bulunmaktadır. Bu açık, esas olarak daha eski Windows sistem versiyonlarında mevcuttur ve Windows 11'de tetiklenemez. Bu makalede, mevcut güvenlik önlemlerinin sürekli güçlendiği bir bağlamda, saldırganların bu tür açıkları nasıl kullanmaya devam ettiğini analiz edeceğiz. Analiz sürecimiz Windows Server 2016 ortamında tamamlanmıştır.
Açık Arka Plan
0day açığı, henüz kamuya açıklanmamış ve düzeltilmemiş güvenlik açıklarını ifade eder; bu, finansal piyasalardaki T+0 işlem kavramına benzer. Bu tür açıklar keşfedildiğinde, fark edilmeden kötü niyetli bir şekilde kullanılabilir ve büyük zararlara yol açabilir.
Bu keşfedilen Windows sistemindeki 0day açığı, saldırganların sisteme tamamen erişim sağlamasına olanak tanıyor. Bu, kişisel bilgilerin ifşası, sistem çökmesi, veri kaybı, mali kayıplar gibi ciddi sonuçlara yol açabilir. Web3 açısından bakıldığında, kullanıcıların özel anahtarları çalınabilir ve dijital varlıklar transfer edilebilir. Daha geniş bir perspektiften, bu açık, Web2 altyapısı üzerine inşa edilmiş olan Web3 ekosistemini etkileyebilir.
Açık Analizi
Yamanı kodunu analiz ederek, bunun bir nesne referans sayımı hatası olduğunu keşfettik. Daha önceki win32k kodundaki yorumlar, yalnızca pencere nesnesinin kilitlendiğini ve pencere içindeki menü nesnesinin kilitlenmediğini gösteriyor, bu da menü nesnesinin yanlış bir şekilde referans alınmasına neden olabilir.
Daha derinlemesine bir analiz, xxxEnableMenuItem fonksiyonunda döndürülen menü nesnesinin ana pencere menüsü, alt menü veya daha derin bir menü olabileceğini ortaya koydu. Bu, POC oluşturma konusunda bir fikir sağlıyor.
POC Uygulaması
Özel bir çok katmanlı menü yapısı oluşturarak, belirli bir ilişkiye sahip dört menü nesnesi içeriyoruz. Bu menülerin özelliklerini ve ilişkilerini dikkatlice ayarlayarak, xxxEnableMenuItem fonksiyonunun kontrolünü atlayabilir ve fonksiyon döndüğünde kritik menü nesnelerini serbest bırakabiliriz. Böylece, bu nesneye sonraki atıflarda UAF açığı tetiklenecektir.
Açık Kullanımı ( EXP ) ile gerçekleştirildi
Genel düşünce
İki tür istismar yönünü değerlendirdik: shellcode çalıştırmak ve okuma/yazma ilkelere token'ı değiştirmek. Sonunda, daha yüksek sürüm Windows'ta daha uygulanabilir olduğu için ikincisini seçtik. Tüm istismar sürecini iki adımda ayırdık: UAF aracılığıyla cbwndextra değerini nasıl kontrol edeceğimiz ve kontrol edilen cbwndextra ile istikrarlı okuma/yazma ilkelere nasıl ulaşacağımız.
başlangıç verisi yazma
Serbest bırakılmış menü nesnesinin belleğini işgal etmek için pencere türü WNDClass'ın ad nesnesini kullanıyoruz. Çeşitli olası yazma noktalarını analiz ederek, nihayetinde xxxRedrawWindow fonksiyonunda nesne bayrağının AND işlemi kullanılarak HWNDClass'ın cb-extra değerine yazma işlemini seçtik.
bellek düzeni
Üç ardışık HWND nesnesinden oluşan bir bellek düzeni tasarladık, ortadaki nesne serbest bırakıldı ve HWNDClass nesnesi tarafından kullanıldı. Önceki ve sonraki HWND nesneleri, sırasıyla tespiti atlatmak ve nihai okuma/yazma ilkelini gerçekleştirmek için kullanılır. Sızan çekirdek tanıtıcı adresi aracılığıyla, bu nesnelerin dizilimini hassas bir şekilde kontrol edebiliriz.
okuma yazma ilkeleri gerçekleştirme
Herhangi bir okuma işlemi GetMenuBarInfo fonksiyonunu kullanırken, herhangi bir yazma işlemi SetClassLongPtr fonksiyonunu kullanır. TOKEN'ın yazımı ikinci pencerenin class nesnesine bağımlıyken, diğer yazma işlemleri birinci pencere nesnesinin class nesnesini ofset aracılığıyla kullanarak gerçekleştirilir.
Özet
Microsoft, win32k kodunu Rust ile yeniden yapılandırmayı deniyor, gelecekte bu tür zafiyetler yeni sistemde tamamen çözülebilir.
Bu tür açıkların istismar süreci nispeten basittir, ana zorluk ilk veri yazımını nasıl kontrol edeceğinizdir.
Açıkların keşfi, daha kapsamlı kod kapsamı tespit teknolojilerinden faydalanıyor olabilir.
Açık tespiti için, tetikleyici işlevin kritik noktalarına dikkat etmenin yanı sıra, anormal bellek düzeni ve veri okuma/yazma işlemlerini de kontrol etmek gerekir.