Sebuah toolkit baru untuk dumping Kerberos Ticket Granting Ticket (TGT) secara remote telah dirilis oleh researcher Jake Otte. klist2ccache memanfaatkan binary klist.exe bawaan Windows untuk mengekstrak TGT dari sesi logon aktif, lalu mengonversinya ke format ccache yang dapat digunakan dengan impacket dan tools Kerberos berbasis Linux lainnya. Tool ini mendukung tiga metode ekstraksi: konversi lokal dari output klist, remote melalui Task Scheduler + SMB, serta remote melalui WinRM.
Apa yang Terjadi?
Jake Otte, seorang researcher offensive security, menemukan bahwa binary klist.exe bawaan Windows memiliki kemampuan untuk mengekstrak session key dari TGT milik sesi logon lain — bahkan tanpa memerlukan SeTcbPrivilege. Temuan ini cukup mengejutkan karena sebelumnya dipercaya bahwa hak istimewa SeTcbPrivilege diperlukan untuk mendapatkan non-zeroed session key. Namun, penelitian lebih lanjut menunjukkan bahwa selama target logon ID berbeda dengan caller, session key dapat diekstrak tanpa hak istimewa khusus.
Tool klist2ccache terdiri dari tiga komponen utama. Pertama, klist2ccache.py yang mengonversi output klist tgt ke format ccache secara lokal. Kedua, klistremote.py yang melakukan dumping TGT secara remote melalui Task Scheduler dan SMB — tidak memerlukan shell interaktif. Ketiga, klistwinrm.py yang melakukan hal yang sama namun menggunakan protokol WinRM, sehingga hanya memerlukan port 5985/5986 terbuka tanpa dependensi SMB. Ketiga tool ini secara otomatis mendeteksi host yang menggunakan Credential Guard dan menolak untuk mengekstrak session key yang terenkripsi.
Detail Teknis
Mekanisme inti di balik tool ini adalah exploitasi dari LsaCallAuthenticationPackage yang dipanggil oleh klist.exe dalam mode tgt handler. Ketika caller menargetkan logon ID yang berbeda (bukan miliknya sendiri), LSA mengizinkan pengembalian session key yang non-zeroed. Namun, ketika target adalah logon ID caller sendiri, LSA mengembalikan session key yang di-zeroed — bahkan untuk Administrator non-SYSTEM. Fenomena ini masih menjadi misteri teknis mengapa LSA membatasi akses pada logon ID sendiri tetapi tidak pada logon ID milik sesi lain.
Untuk metode remote, klistremote.py menggunakan Task Scheduler untuk menjalankan klist.exe di target, menyimpan output ke file sementara di C:\ProgramData\, lalu membacanya melalui SMB share C$. Alternatifnya, flag -named-pipes mengalirkan output melalui SMB IPC$ tanpa menulis file ke disk — sangat berguna untuk menghindari deteksi EDR. klistwinrm.py melakukan pendekatan serupa namun melalui protokol WinRM, yang secara natural menghasilkan high-integrity process sehingga tidak memerlukan privilege eskalasi tambahan.
Pada host dengan Credential Guard aktif, klist.exe akan mengembalikan session key berupa KerberosKeyWithMetadata blob yang terenkripsi oleh secure kernel (VTL1). Meskipun tampilannya seperti session key yang valid, nilai tersebut tidak dapat digunakan secara offline karena hanya VTL1 yang memiliki unwrap key. Tool ini mendeteksi kondisi ini dan menolak dengan pesan yang jelas, atau pengguna dapat menyediakan key secara manual menggunakan flag -K.
Dampak Terhadap Indonesia
Banyak organisasi besar di Indonesia — termasuk bank pemerintah, perusahaan telekomunikasi, dan instansi pemerintah — mengandalkan Active Directory sebagai backbone autentikasi mereka. Serangan yang memanfaatkan Kerberos TGT, seperti Golden Ticket dan Kerberoasting, merupakan salah satu vektor serangan paling berbahaya di lingkungan enterprise. Dengan adanya tool seperti klist2ccache yang mempermudah ekstraksi TGT secara remote, risiko serangan Kerberos menjadi lebih tinggi.
Indonesia sendiri sedang dalam transisi menuju adopsi zero-trust architecture, namun banyak organisasi masih mengandalkan model keamanan perimeter tradisional. Credential Guard, yang menjadi pertahanan terhadap tool ini, belum diaktifkan secara luas di infrastruktur Indonesia karena kompatibilitas hardware dan kompleksitas deployment. PDP Law mensyaratkan pelindungan data pribadi yang memadai, dan ekstraksi Kerberos TGT dapat menjadi pintu masuk untuk pencurian data berskala besar. BSSN dan SOCSIRT nasional perlu mengeluarkan advisory khusus mengenai mitigasi serangan Kerberos pasca-temuan ini.
Rekomendasi Mitigasi
Langkah pertama dan paling kritis adalah mengaktifkan Credential Guard pada seluruh workstation dan server yang menjalankan Windows 10/11 atau Windows Server 2016 ke atas. Credential Guard memastikan bahwa session key tidak dapat diekstrak secara offline. Kedua, batasi akses WinRM dan Task Scheduler hanya kepada administrator yang sah — gunakan firewall untuk memblokir port 5985/5986 dari subnet yang tidak perlu. Ketiga, implementasikan monitoring terhadap aktivitas klist.exe yang mencurigakan, terutama penggunaan flag -li yang menargetkan logon ID selain milik caller sendiri.
Keempat, implementasikan privileged access management (PAM) untuk membatasi siapa yang dapat menjalankan command remote pada sistem. Kelima, gunakan Windows Event Forwarding (WEF) untuk mengumpulkan log dari semua domain controller dan workstation, lalu analisis menggunakan SIEM untuk mendeteksi pola ekstraksi kredensial. Terakhir, pertimbangkan untuk mengimplementasikan managed service accounts (gMSA) yang mengrotasi password secara otomatis, sehingga TGT yang berhasil diekstrak memiliki masa berlaku yang terbatas.
Analisa Retasan
Temuan Jake Otte mengenai kemampuan klist.exe untuk mengekstrak session key tanpa SeTcbPrivilege merupakan pengembangan signifikan dalam offensive security Windows. Mekanisme LUID-gated privilege escalation di klist.exe menunjukkan bahwa logika keamanan LSA memiliki celah yang belum sepenuhnya dipahami oleh komunitas keamanan. Perbandingan antara logon ID caller dan target sebagai pengganti pengecekan privilege adalah pola keamanan yang menarik — dan berpotensi ditemukan di komponen Windows lainnya.
Dari perspektif attacker, klist2ccache menghilangkan hambatan terbesar dalam Kerberos post-exploitation: kebutuhan akan SYSTEM shell atau SeTcbPrivilege. Dengan WinRM sebagai transport, attacker hanya perlu kredensial Administrator untuk mengekstrak TGT dari semua sesi logon aktif di target. Ini sangat berbahaya dalam lingkungan Active Directory di mana satu TGT yang valid dapat digunakan untuk lateral movement ke seluruh domain. Pola serangan ini mirip dengan teknik Rubeus tgtdeleg, namun dilakukan secara remote dan tanpa perlu exec di target — sebuah peningkatan kemampuan yang signifikan.
Untuk organisasi Indonesia, temuan ini menegaskan pentingnya deployment Credential Guard sebagai pertahanan prioritas. Tanpa Credential Guard, satu set kredensial Administrator yang bocor dapat membuka akses ke seluruh jaringan Active Directory. Namun, tantangan implementasi Credential Guard di Indonesia cukup besar — banyak server lama yang tidak mendukung VBS (Virtualization-Based Security), dan proses migrasi memerlukan investasi hardware yang substansial. Solusi interim yang bisa diterapkan adalah membatasi akses WinRM, mengaktifkan Enhanced Auditing untuk logon events, dan menggunakan tiered administration model untuk meminimalkan blast radius dari kompromi kredensial.
🔗 Sumber: github.com/jakeotte/klist2ccache | Blog: klist.exe Revisited