Microsoft Windows Sisteminde Ciddi Bir Açık Analizi: Web3 Ekosisteminin Güvenliğini Tehdit Edebilecek Bir Durum
Geçen ay Microsoft'un yayınladığı güvenlik yamasında, hackerlar tarafından istismar edilen bir Windows yetki yükseltme açığı düzeltildi. Bu açık, esas olarak daha eski Windows sistem sürümlerini etkiliyor, Windows 11'in etkilenmediği görünmektedir.
Bu makale, 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 edecektir. Analizimiz Windows Server 2016'ya dayanmaktadır.
Açık Arka Plan
Bu, henüz kamuya açık olmayan ve düzeltilmemiş bir 0day açığıdır. Hackerlar, kullanıcıların haberi olmadan bunu kullanarak saldırılar gerçekleştirebilir, büyük hasara yol açabilir.
Bu Windows sistem düzeyindeki açık sayesinde, hackerlar sistemi tamamen kontrol edebilirler. Bu, kişisel bilgilerin ifşası, sistem çökmesi, veri kaybı, mali kayıplar gibi ciddi sonuçlara yol açabilir. Web3 kullanıcıları için, özel anahtarlar ve dijital varlıklar çalınabilir. Daha geniş bir perspektiften bakıldığında, bu açık, Web2 altyapısına dayanan tüm Web3 ekosistemini bile etkileyebilir.
Yaman Analizi
Yaman kodunu analiz ederken, sorunun bir nesnenin referans sayısının bir kez daha işlenmesinden kaynaklandığı görünüyor. Önceki kaynak kodu yorumlarına bakarak, önceki kodun yalnızca pencere nesnesini kilitlediğini, pencere içindeki menü nesnesini kilitlemediğini keşfettik; bu, menü nesnesinin yanlış bir şekilde referans verilmesine neden olabilir.
Açıkların Yeniden Üretilmesi
Açıklar fonksiyonunun bağlamını analiz ettiğimizde, xxxEnableMenuItem() parametresi ile geçilen menünün genellikle üst fonksiyon tarafından kilitlendiğini buluyoruz; burada hangi menü nesnesinin korunması gerektiği konusunda bir belirsizlik var.
Daha fazla analiz, xxxEnableMenuItem içindeki MenuItemState fonksiyonunun iki olası menü döndürdüğünü ortaya koydu: pencere ana menüsü veya alt menü ( hatta alt alt menü ).
Özel bir dört katmanlı menü yapısı oluşturduk, bu menülerin fonksiyondaki testleri geçmek için belirli koşulları karşılaması gerekiyor. Anahtar, xxxRedrawTitle kullanıcı katmanına döndüğünde, bazı menüler arasındaki referans ilişkilerini silmek ve belirli menü nesnelerini serbest bırakmaktır. Böylece xxxEnableMenuItem fonksiyonunun dönüş noktasında, referans alınan menü nesnesi geçersiz hale gelir.
Açık Kullanımı
(exp) geliştirirken, iki ana seçeneği değerlendirdik:
Shellcode kodunu çalıştırma: Önceki benzer güvenlik açıklarına referans, ancak yeni Windows sürümünde bazı engeller olabilir.
Token adresini değiştirmek için okuma-yazma ilkelere kullanmak: Bu yöntem, son zamanlarda referans alabileceğiniz açık bir exp'e sahiptir ve masaüstü yığın bellek düzeni ile okuma-yazma ilkelere oldukça iyi bir genel geçerliliğe sahiptir.
İkinci seçeneği tercih ettik, tüm kullanım sürecini iki aşamaya ayırdık: UAF açığından cbwndextra değerini kontrol etme ve okuma/yazma işlemlerini kararlı bir şekilde gerçekleştirme.
Anahtar, bizim oluşturabileceğimiz adres yapısında rastgele veri yazılabilecek bir yer bulmaktır. Sonunda xxxRedrawWindow fonksiyonundaki bir bayrak AND işlemi aracılığıyla bunu gerçekleştirmeyi seçtik.
Kararlı bir bellek düzeni sağlamak için, en az üç ardışık 0x250 baytlık HWND nesnesi tasarladık, ortadaki nesneyi serbest bıraktık ve HWNDClass nesnesi ile kapladık. Ön ve arka HWND nesneleri, işlevler aracılığıyla doğrulama yapmak ve nihai okuma/yazma ilkesini gerçekleştirmek için kullanılır.
Nesnelerin beklenildiği gibi sıralanıp sıralanmadığını kesin bir şekilde saptamak için sızdırılmış çekirdek tutamaç adreslerini de kullanıyoruz. Okuma/yazma ilkelere gelince, rastgele okumak için GetMenuBarInfo()'i, rastgele yazmak için ise SetClassLongPtr()'i kullanıyoruz.
Sonuç
Microsoft, Rust ile win32k ile ilgili kodları yeniden yapılandırmaya çalışıyor, gelecekte bu tür açıkların yeni sistemde ortadan kaldırılması mümkün olabilir.
Bu tür güvenlik açıklarının istismar süreci nispeten basittir, esas olarak masaüstü yığın işleme adresinin sızdırılmasına dayanır. Bu sorunu köklü bir şekilde çözmezsek, eski sistemler sürekli güvenlik tehditleriyle karşılaşacaktır.
Bu açığın keşfi, daha gelişmiş kod kapsamı test tekniklerine bağlı olabilir.
Açık istismar tespiti için, anahtar işlevleri izlemek dışında, anormal bellek düzeni ve veri okuma/yazma davranışlarına da dikkat edilmelidir.
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
7
Repost
Share
Comment
0/400
SelfSovereignSteve
· 08-14 15:57
Linux kullan, neyi kafana takıyorsun ki?
View OriginalReply0
rug_connoisseur
· 08-13 09:13
Bir başka Windows açığı, buna alıştık!
View OriginalReply0
rekt_but_not_broke
· 08-12 05:14
Para kazanmak için hemen harekete geçmelisiniz, Cüzdanınızı öncelikle iyi korumalısınız!
View OriginalReply0
MetaLord420
· 08-12 05:02
Windows kullananlar web3 ile oynamaya cesaret mi ediyor?!
View OriginalReply0
SighingCashier
· 08-12 05:00
Eski sistem bu hatayı veriyor, çoktan değiştirilmeli.
View OriginalReply0
ForkMaster
· 08-12 04:59
insanları enayi yerine koymak değil mi? Hata bulup Mining mi yaptın?
Windows sistem açıkları Web3 ekosistem güvenliğini tehdit ediyor. Uzmanlar derinlik analizleri ile kullanım mekanizmasını inceliyor.
Microsoft Windows Sisteminde Ciddi Bir Açık Analizi: Web3 Ekosisteminin Güvenliğini Tehdit Edebilecek Bir Durum
Geçen ay Microsoft'un yayınladığı güvenlik yamasında, hackerlar tarafından istismar edilen bir Windows yetki yükseltme açığı düzeltildi. Bu açık, esas olarak daha eski Windows sistem sürümlerini etkiliyor, Windows 11'in etkilenmediği görünmektedir.
Bu makale, 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 edecektir. Analizimiz Windows Server 2016'ya dayanmaktadır.
Açık Arka Plan
Bu, henüz kamuya açık olmayan ve düzeltilmemiş bir 0day açığıdır. Hackerlar, kullanıcıların haberi olmadan bunu kullanarak saldırılar gerçekleştirebilir, büyük hasara yol açabilir.
Bu Windows sistem düzeyindeki açık sayesinde, hackerlar sistemi tamamen kontrol edebilirler. Bu, kişisel bilgilerin ifşası, sistem çökmesi, veri kaybı, mali kayıplar gibi ciddi sonuçlara yol açabilir. Web3 kullanıcıları için, özel anahtarlar ve dijital varlıklar çalınabilir. Daha geniş bir perspektiften bakıldığında, bu açık, Web2 altyapısına dayanan tüm Web3 ekosistemini bile etkileyebilir.
Yaman Analizi
Yaman kodunu analiz ederken, sorunun bir nesnenin referans sayısının bir kez daha işlenmesinden kaynaklandığı görünüyor. Önceki kaynak kodu yorumlarına bakarak, önceki kodun yalnızca pencere nesnesini kilitlediğini, pencere içindeki menü nesnesini kilitlemediğini keşfettik; bu, menü nesnesinin yanlış bir şekilde referans verilmesine neden olabilir.
Açıkların Yeniden Üretilmesi
Açıklar fonksiyonunun bağlamını analiz ettiğimizde, xxxEnableMenuItem() parametresi ile geçilen menünün genellikle üst fonksiyon tarafından kilitlendiğini buluyoruz; burada hangi menü nesnesinin korunması gerektiği konusunda bir belirsizlik var.
Daha fazla analiz, xxxEnableMenuItem içindeki MenuItemState fonksiyonunun iki olası menü döndürdüğünü ortaya koydu: pencere ana menüsü veya alt menü ( hatta alt alt menü ).
Özel bir dört katmanlı menü yapısı oluşturduk, bu menülerin fonksiyondaki testleri geçmek için belirli koşulları karşılaması gerekiyor. Anahtar, xxxRedrawTitle kullanıcı katmanına döndüğünde, bazı menüler arasındaki referans ilişkilerini silmek ve belirli menü nesnelerini serbest bırakmaktır. Böylece xxxEnableMenuItem fonksiyonunun dönüş noktasında, referans alınan menü nesnesi geçersiz hale gelir.
Açık Kullanımı
(exp) geliştirirken, iki ana seçeneği değerlendirdik:
Shellcode kodunu çalıştırma: Önceki benzer güvenlik açıklarına referans, ancak yeni Windows sürümünde bazı engeller olabilir.
Token adresini değiştirmek için okuma-yazma ilkelere kullanmak: Bu yöntem, son zamanlarda referans alabileceğiniz açık bir exp'e sahiptir ve masaüstü yığın bellek düzeni ile okuma-yazma ilkelere oldukça iyi bir genel geçerliliğe sahiptir.
İkinci seçeneği tercih ettik, tüm kullanım sürecini iki aşamaya ayırdık: UAF açığından cbwndextra değerini kontrol etme ve okuma/yazma işlemlerini kararlı bir şekilde gerçekleştirme.
Anahtar, bizim oluşturabileceğimiz adres yapısında rastgele veri yazılabilecek bir yer bulmaktır. Sonunda xxxRedrawWindow fonksiyonundaki bir bayrak AND işlemi aracılığıyla bunu gerçekleştirmeyi seçtik.
Kararlı bir bellek düzeni sağlamak için, en az üç ardışık 0x250 baytlık HWND nesnesi tasarladık, ortadaki nesneyi serbest bıraktık ve HWNDClass nesnesi ile kapladık. Ön ve arka HWND nesneleri, işlevler aracılığıyla doğrulama yapmak ve nihai okuma/yazma ilkesini gerçekleştirmek için kullanılır.
Nesnelerin beklenildiği gibi sıralanıp sıralanmadığını kesin bir şekilde saptamak için sızdırılmış çekirdek tutamaç adreslerini de kullanıyoruz. Okuma/yazma ilkelere gelince, rastgele okumak için GetMenuBarInfo()'i, rastgele yazmak için ise SetClassLongPtr()'i kullanıyoruz.
Sonuç
Microsoft, Rust ile win32k ile ilgili kodları yeniden yapılandırmaya çalışıyor, gelecekte bu tür açıkların yeni sistemde ortadan kaldırılması mümkün olabilir.
Bu tür güvenlik açıklarının istismar süreci nispeten basittir, esas olarak masaüstü yığın işleme adresinin sızdırılmasına dayanır. Bu sorunu köklü bir şekilde çözmezsek, eski sistemler sürekli güvenlik tehditleriyle karşılaşacaktır.
Bu açığın keşfi, daha gelişmiş kod kapsamı test tekniklerine bağlı olabilir.
Açık istismar tespiti için, anahtar işlevleri izlemek dışında, anormal bellek düzeni ve veri okuma/yazma davranışlarına da dikkat edilmelidir.