Basic Active Directory Attack (Single Domain Lab — Silver Ticket Attack) 0x09

Muhamad Hidayat
8 min readJul 10, 2023

--

Assalamualaikum Wr. Wb.

Seperti yang kita tau, saat kita mau akses suatu sumber daya di jaringan, kita harus minta izin dulu, ya kan? Nah, ini dia alur minta izinnya dalam protokol Kerberos.

Kerberos Protocol Security

Pertama, kita minta apa yang disebut Tiket Granting Ticket (TGT) ke Server Authentication (biasanya server domain controller). TGT ini seperti kartu akses kita yang dihasilkan setelah kita autentikasi. Kita kasih username dan password kita, terus server ngecek apakah beneran kita itu siapa yang kita klaim. Kalau bener, server kasih TGT yang berisi informasi tentang kita.

A Detailed Guide on Rubeus — Hacking Articles

Setelah dapat TGT, langkah selanjutnya adalah minta Tiket Service (TGS) ke Server Pemberian Tiket Service (biasanya server yang menyediakan sumber daya yang kita mau akses, misalnya server SQL). Jadi, kita kasih TGT kita ke server itu, trus servernya ngecek lagi, apakah TGT kita valid dan kita punya akses ke sumber daya yang kita mau.

A Detailed Guide on Rubeus — Hacking Articles

Kalau semuanya oke, server bakal ngasih kita Tiket Service (TGS). Tiket ini kayak kunci akses ke sumber daya yang kita mau. Nah, kita bisa bawa Tiket ini dan tunjukkin ke server sumber daya itu, misalnya server SQL. Server SQL bakal cek Tiket kita, dan kalau valid, kita bisa akses data di dalamnya.

A Detailed Guide on Rubeus — Hacking Articles

Service Principal Name

KSEC ARK — Pentesting and redteam knowledge base | How Attackers Use Kerberos Silver Tickets to Exploit Systems (ivoidwarranties.tech)

Di Kerberos, ada dua jenis akun yang beda, yaitu User Principal Name (UPN) dan Service Principal Name (SPN). Kalo kita mau kasih istilah yang lebih gaul, kita bisa sebut UPN sebagai “nama user” dan SPN sebagai “nama service”.

SPN (Service Principal Name) itu harus unik di seluruh forest Active Directory dan bisa diberikan ke user Account atau computer Account. Cuma akun komputer aja yang otomatis punya SPN terdefinisi.

SPN itu nentuin service apa yang berjalan di bawah konteks keamanan akun tersebut. Misalnya, beberapa service yang bisa ada di komputer itu kayak File server / CIFS (Common Internet File System), kalo itu domain controller, pasti punya LDAP SPN, Active Directory Replication SPN, dan FRS SPN.

Untuk lebih lengkapnya sudah ada pada article sebelumnya yah..

Basic Active Directory Attack (Single Domain Lab — LDAP, Kerberos, NTLM) 0x05 | by Muhamad Hidayat | Medium

Pada Silver Ticket attack, penyerang jahat ini bisa memanfaatkan SPN. Dia bisa buat tiket palsu untuk layanan tertentu, tanpa perlu lewat verifikasi yang seharusnya dilakukan. Jadi, penyerang ini bisa masuk ke sistem tanpa sepengetahuan kita. SPN ini jadi salah satu komponen yang dimanfaatkan dalam serangan ini.

Silver Ticket Attack

Steal or Forge Kerberos Tickets: Silver Ticket, Sub-technique T1558.002 — Enterprise | MITRE ATT&CK®

Nah, kita udah ngomongin soal verifikasi-verifikasi di protokol Kerberos, kan? Sekarang, ada serangan yang namanya Silver Ticket attack, yang caranya tanpa harus melewati langkah verifikasi TGT dan TGS-nya. Serangan ini dilakukan dengan memalsukan tiket Service. berikut penjelasan lengkapnya, ya!

Jadi begini, biasanya dalam Kerberos, setelah kita dapetin TGT dan TGS, server tujuan bakal ngecek tuh tiket-tiket itu untuk memastikan keasliannya. Tapi dalam Silver Ticket attack, si penyerang jahat ini berhasil melakukan pemalsuan tiket Service. Dia ngotak-atik tiket tersebut tanpa harus lewat verifikasi TGT dan TGS yang seharusnya dilakukan.

KSEC ARK — Pentesting and redteam knowledge base | How Attackers Use Kerberos Silver Tickets to Exploit Systems (ivoidwarranties.tech)

Gimana caranya? Nah, penyerang ini membutuhkan akses komputer atau server yang udah di compromise, lalu dia bisa dapetin informasi penting kayak hash komputer akun. Hash ini sebenernya bentuk Encrypted dari kata sandi Computer User yang ada di AD. Nah, dengan informasi ini, si penyerang bisa buat tiket palsu, tiket Service palsu, tanpa perlu lewat tahap verifikasi yang seharusnya ada.

How to Secure Kerberos Authentication Protocol — 1 | Forestall Security

Jadi, pokoknya, penyerang ini bikin tiket Service yang kelihatan asli, tapi sebenernya palsu. Tiket ini dia bisa pake buat akses sumber daya yang seharusnya di-verify dulu.

Forging ticket for CIFS SPNs

Ticket Bodong

CIFS itu adalah kependekan dari Common Internet File System. Di Active Directory (AD), CIFS ini berperan sebagai salah satu service yang digunakan buat File Sharing di jaringan. Misalnya, kamu mau akses file-file penting yang ada di server lain, nah CIFS ini bantu banget buat akses file-file itu dengan mudah. Nah, terkait Silver Ticket attack, CIFS bisa jadi target serangan karena penyerang jahat bisa memanfaatkan mesin yang sudah ter-compremise untuk melakukan dump credensial Computer Account ( contoh: Account$ ), yang nantinya digunakan untuk melakukan pemalsuan tiket service.

Terdapat data yang dibutuhkan untuk melakukan pemalsuan ticket service yaitu:

  • Hash Computer User (Account$)
  • SPN Name
  • Domain SID
  • Domain Controller ip
  • Domain Name

Collecting Data for Forging Ticket Service

Credentials Dump (Computer Account)

Attacker butuh hash dari akun komputer yang nantinya bakal attacker pakai buat palsu-palsuin tiket layanan. Nah, supaya aku bisa dapetin hash-nya, aku pake tools yang namanya Mimikatz. Ini tuh tools yang keren buat ngambil data kredensial dari memori mesin yang sudah tercompromise.

Jadi, tujuan aku ngambil hash komputer account ini adalah biar bisa buat tiket layanan palsu yang keliatan asli. Makanya, aku pake Mimikatz buat ngambil data-data penting kayak hash ini dari memori. Dengan hash-nya, aku bisa buat tiket layanan palsu tanpa harus lewat proses otentikasi yang seharusnya.

Data yang diambil yang akan digunakan untuk pembuatan ticket palsu adalah sebagai berikut.

  1. Computer Account Hash
NTLM Hash Computer User

NTLM: 56431a8a34aa762c1ce38b9fd72c800f

2. Domain SID

SID Domain

Bagian yang di highlight warna kuning adalah SID milik domain dc.snaplabs.local, dengan cara menjalankan command:

whoami /user

Domain SID: S-1–5–21–2574976019–2108132042–3243833284

3. SPNs Name

SPNs Name

Attacker melakukan enumerasi untuk menemukan nama SPNs yang tersedia pada domain tersebut dengan cara:

Get-ADUSer -Filter { ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName | select SamAccountName, ServicePrincipalName

SPNs Name: cifs/dc.snaplabs.local

Lets Crafting the Tickets!!

Ticket For Accessing Resource

Tidak memililki akses ke File share Domain Controller

Disini attacker mencoba mengakses resource file share dc, namun tidak bisa, disini lah peran ticket palsu tersebut.

Forging Ticket CIFS Service
mimikatz.exe "kerberos::golden /domain:snaplabs.local /sid:S-1-5-21-2574976019-2108132042-3243833284 /rc4:56431a8a34aa762c1ce38b9fd72c800f /user:tessting /service:cifs /target:dc.snaplabs.local /ptt" "exit"

kerberos::golden — Untuk melakukan forging golden ticket.

/domain:snaplabs.local — Nama domain Target

/sid: S-1–5–21XXXX — Nomor Sid Domain

/rc4:5643xxxxxx — Hash Computer User

/user:tessting — Fake User for manipulating TGT

/Service:cifs — Service Principal Name

/ptt — Pass the ticket (for injecting ticket to memory)

we get permission

Berhasil setelah melakukan pass the ticket service palsu yang kita buat, kita telah diizinkan mengakses resouce tersebut.

Ticket for Gaining Access

Oke, bro! Udah terkumpul nih beberapa data yang kita butuhin buat ngepalsuin Ticket Service. Sekarang waktunya kita buat tiket palsunya dengan menggunakan salah satu tools dari modul impacket, yaitu Ticketer.py.

Jadi, kita pake Ticketer.py ini buat ngarahin data-data yang udah kita kumpulin tadi ke proses crafting tiket palsu. Tools ini bakal bantu kita buat mengatur dan memanipulasi data-data itu dengan mudah.

https://github.com/SecureAuthCorp/impacket/blob/master/examples/ticketer.py

Dengan Ticketer.py, kita bisa ngerjain tiket palsu dengan nyaman. Kita bisa masukin data-data yang diperlukan, kayak SPN name, domain SID, hash computer user, IP domain controller, dan nama domain. Tools ini bakal ngebantu kita nge-generate tiket palsu yang keliatan asli, tapi sebenernya palsu.

Ticketer.Py

Ticketer.py dari Impacket bisa digunakan buat serangan Silver Ticket, di mana kita bisa bikin tiket TGS yang valid untuk suatu layanan tertentu dengan menggunakan NTLM hash yang valid dari pengguna yang punya akses. Setelah itu, kita bisa dapetin akses ke layanan tersebut. Nah, dengan menggunakan perintah berikut, kita bisa bikin TGS untuk layanan SMB yang nantinya bisa kita gunakan buat dapetin shell.

Berhasil crafting ticket palsu

Tiket palsu udah berhasil di-crafting dan disimpan di direktori saat ini.

Melakukan Export Service Ticket & PsExec

Pada serangan Silver Ticket, melakukan ekspor dengan menggunakan perintah “export KRB5CCNAME=/home/me/administrator.ccache” bertujuan untuk menentukan tempat penyimpanan file cache tiket Kerberos (ccache) yang akan digunakan dalam serangan tersebut.

Setelah mengekspor variabel KRB5CCNAME dan menyimpan tiket palsu di file cache yang ditentukan, langkah selanjutnya adalah menggunakan Impacket-psexec untuk mendapatkan shell.

Impacket-psexec adalah alat yang kuat dalam toolkit Impacket yang digunakan untuk melakukan eksekusi perintah jarak jauh di sistem yang rentan. Dalam konteks serangan Silver Ticket, Impacket-psexec digunakan untuk memanfaatkan tiket palsu yang telah dibuat sebelumnya dan mendapatkan akses ke SMB, agar dapat melakukan uploading shell pada sistem target yang menjadi sasaran.

serangannya tuh berdasarkan mekanisme offline dan enggak melibatkan DC (Domain Controller), jadi memang agak sulit buat mengatasinya. Tapi, tetap ada langkah-langkah yang bisa diambil buat memastikan perlindungan:

  • Aktifkan Validasi PAC (Privilege Attribute Certificate). Kalau ini diaktifkan, tiket yang disajikan harus divalidasi dulu oleh DC. Jadi, tiket silver akan ditolak langsung.
  • Gunakan kata sandi yang kuat buat mencegah serangan bruteforce. Ini penting banget buat jaga keamanan akun pengguna.
  • Kontrol hak akses yang diperlukan atau whitelist pengguna tertentu yang boleh akses service tertentu. Dengan begitu, kita bisa batasi akses ke service yang hanya boleh diakses oleh pengguna yang sah.
  • Kurangi risiko serangan Kerberoasting. Ini serangan lain yang berhubungan dengan Kerberos. Dengan mengambil langkah-langkah untuk mengurangi kerentanan terhadap serangan Kerberoasting, kita bisa memperkuat keamanan sistem.
  • Pokoknya, dengan mengambil langkah-langkah ini, kita bisa tetap melindungi sistem kita meskipun serangan silver ticket ini agak sulit buat dihadapi.

Refferensi:

Basic Active Directory Attack (Single Domain Lab — Kerberoasting ) 0x08 | by Muhamad Hidayat | Jul, 2023 | Medium

KSEC ARK — Pentesting and redteam knowledge base | How Attackers Use Kerberos Silver Tickets to Exploit Systems (ivoidwarranties.tech)

Silver Ticket — HackTricks

What are Kerberos Golden Ticket Attacks and How to Detect Them (extrahop.com)

Silver Ticket — Pentest Everything (gitbook.io)

--

--