28 Ocak 2014

Windows EPATHOBJ üzerinden metasploit ile yetki yükseltme

Posted by: Barkın Kılıç 28 Ocak 2014
Yakın zamanda Seclist mail listelerinde yayınlanan yetkisiz bir kullanıcının sistem yöneticisi yetkilerine kendisini dikey olarak yükseltmesini sağlayan bir zafiyeti halka açık olarak bildiriyordu. Win32k.sys içindeki EPATHOBJ::pprFlattenRec fonksiyonu düzgün bir şekilde sonraki obje için işaretçi döndüremediğinden kaynaklanan bu zafiyeti Microsoft'a bildirmek yerine bunu topluluk ile paylaşmayı seçen Tavis Ormand adındaki güvenlik uzmanı güvenlik denetmenlerini sevindirsede Microsoft tarafında bu durum çokta iyi karşılanmadı.  Beraberinde proof-of-concept dediğimiz zafiyet kanıtlamak amaçlı çalışan bir exploit kaynak koduda paylaşmıştı. Hala daha 0 gün açıklığı olarak bulunmakta.

Microsoft tarafında yama çıkarma konusunda baya gecikme yaşanmış durumda.
Hali hazırda güvenlik yaması konusuna önem vermeyen yada henüz güncellemeyi almamış sistemlerde ileriki zamanlarda bile kullanılabilecek bu yetki yükseltmenin sağlıklı çalışıp çalışmadığı konusunda merakımı gidermek için bir uygulama yapmak istedim. Windows 2003 ve xp sistemlerde başarılı bir şekilde çalışan proof-of-concept windows 7 sistemde pek başarılı olmadı açıkçası. Exploit'in çalışma yapısında zafiyeti başarılı bir şekilde sömürsede exploit süreci oluşurken yapılan hafızadan yer alma esnasında başarılı olamayıp süreç ölebilmekte. Güzel tarafı sistem çakılmadığı için tekrar tekrar denenebiliniyor zafiyet sömürme işlemi.

Bunun üzerine çok gecikmeden metasploit geliştiricileri boş durmayıp hemen bir modül hazır hale getirmişler. Kalinin reposundan en son sürümü (bugün itibari ile) çekmeme rağmen henüz metasploit içerisine eklenmediğini gördüm. Bundan ötürü elle ekleme yoluna gittim ve testlerimi yaptım. 3 adet dosya gerekiyor bu modülün çalışması için:

  • 1 Adet process.rb ruby eklentisi (Hali hazırda metasploit içerisinde olan bir modül değil)
  • 1 Adet exploit.dll dosyası (Diske yazılmasın, direk ram'e kod enjekte edilsin diye yazmışlar)
  • ppr_flatter_rec.rb adındaki metasploit exploit kodunun kendisi
  wget "https://github.com/jvazquez-r7/metasploit-framework/raw/a4d353fcb3b783d5a106c7b2a519f2eb523ffa8e/lib/msf/core/post/windows/process.rb"

 wget "https://github.com/jvazquez-r7/metasploit-framework/raw/a4d353fcb3b783d5a106c7b2a519f2eb523ffa8e/data/exploits/cve-2013-3660/exploit.dll"

wget "http://dev.metasploit.com/redmine/projects/framework/repository/revisions/master/raw/modules/exploits/windows/local/ppr_flatten_rec.rb

Sırası ile indirmek için kodu da paylaştığımıza göre, dosyaları indirip gerekli yerlerine koyduktan sonra metasploit ile kurban bir makinada çalıştırmaya hazır hale geliyor.

 ppr_flatten_rec.rb -> /opt/metasploit/apps/pro/msf3/modules/exploits/windows/local/

process.rb -> /usr/share/metasploit-framework/lib/msf/core/post/windows/

exploit.dll -> /opt/metasploit/apps/pro/msf3/data/exploits/cve-2013-3660/

(Tabi önce bu dizin oluşturulması gerekiyor)



Daha sonra ise yetkisiz bir kullanıcı ile oturum açtığım windows 7 32 bit kullanıcı ile yaptığım testin ekran görüntüleri aşağıdadır.






Ele geçirilen makinadaki yetkisiz bir kullanıcı, kendi süreçleri haricinde diğer süreçteki kullanıcı adlarını göremiyor resimdeki gibi.





Meterpreter oturumu arka tarafa atılıp exploit altında yeri belirtilip paramatreler ayarlanıyor.


Daha sonra exploit komutu ile beraber başarılı olana kadar tekrar tekrar uygulanabiliyor ve nihayetinde başarılı olduğunda ise sistem yetkilerinde bir meterpreter ajanı daha yüklenip bir oturum daha elde ediliyor. Gerisi ise size kalmış.

Çözüm ise gayet basit, Microsoft'un çıkardığı yamayı(şayet yakında çıkarsa) yüklemek.




Makalelerin kötüye kullanım kullanıcının sorumluluğundadır. | networkpentest.net. Blogger tarafından desteklenmektedir.