Windows işletim sisteminde oturumu kapatmadan farklı bir kullanıcı olarak sistemde bir oturum elde etme veya komut çalıştırma ihtiyacı olabilir. Örneğin RUNAS komutu ile yetkili herhangi bir hesabın kimlik bilgileri ile oturum kapatılmadan komut çalıştırılabilir. Bu işlemin yapılmasını Secondary Logon servisi sağlar. Yani, Service Logon servisi ile yetkili herhangi bir token ile yeni bir proses oluşturulabilir. Ancak bu servisteki bir güvenlik açığı sebebi (talepleri düzgün bir şekilde ele alamaması dolayısı) ile standart bir token ile SYSTEM hesabı yetkileri ile yeni bir proses başlatılabilir.
Bu zafiyete ait istismar kodu exploit-db.com sayfasından indirilebilir.
https://www.exploit-db.com/exploits/39719
Betik çalıştırılmadan önce standart bir kullanıcı ile oturum açılmıştır. Ayrıca Secondary Logon servisi çalışmamaktadır.
net user StandartHesap | findstr Local
Bu kullanıcı ile hak yükseltme gerçekleştirmek için exploit-db’den indirilen kod çalıştırılacaktır.
cd .\Desktop
Import-Module .\39719.ps1
Yukarıda görüldüğü gibi, Import-Module komutu çalıştırıldığında betiklerin çalıştırılamayacağı hatası alınabilir. Bu hatayı almamak için Powershell Execution Politikası ayarlanır.
Powershell.exe -ExecutionPolicy Unrestricted
Import-Module .\39719.ps1
Invoke-MS16-032
Not: İstismarın gerçekleşmesi için işletim sisteminin en az 2 çekirdeği olmalıdır.
Not: Windows komut satırından tek bir komutla çalıştırmak için aşağıdaki gibi bir komut kullanılabilir.
Powershell -ExecutionPolicy Unrestricted -NoLogo -NoProfile -Command “Import-Module .\39719.ps1; Invoke-MS16-032”
Not: Meterpreter bağlantısı sağlayacak olan Powershell senaryolarında, komut satırından çıkış yapılmadan betiğin çalıştırılması gerekebilir.
Powershell -ExecutionPolicy Bypass -NoExit -File Betik.ps1
Böylece SYSTEM yetkileri ile çalışan yeni bir komut satırı açılır. Ayrıca Secondary Logon servisi otomatik olarak başlamıştır.
whoami
Not: Powershell betiği çalıştırıldığında SYSTEM yetkileri ile çalışan cmd.exe başlatılmıştır. Eğer başka bir uygulamanın çalışması istenirse “C:\Windows\System32\cmd.exe” ile ifade edilen satırların güncellenmesi gerekmektedir.
Not: İstismar işlemi için Github üzerinde yüklü olan çalıştırılabilir dosya da yüklenebilir.
https://github.com/Meatballs1/ms16-032
Not: Meterpreter erişimi elde edilmişse, istirmar işlemi için MSF ms16_032_secondary_logon_handle_privesc hak yükseltme modülü de kullanılabilir.
Bu zafiyetten korunmak için Microsoft tarafından yama yayınlanmıştır.
https://technet.microsoft.com/en-us/library/security/ms16-032.aspx
Kaynak:
https://googleprojectzero.blogspot.com.tr/2016/03/exploiting-leaked-thread-handle.html
https://www.youtube.com/watch?v=74EKxv6KxAg