Privilege escalation pada Windows dapat terjadi ketika konfigurasi akun, permission, service, scheduled task, atau aplikasi memberikan akses lebih tinggi daripada yang seharusnya. Pemeriksaan berikut merupakan teknik enumerasi dasar untuk audit keamanan dan lab pengujian.
Setiap temuan perlu divalidasi berdasarkan konteks akun, permission yang dimiliki, akun yang menjalankan proses, serta kondisi yang memicu eksekusi. Keberadaan sebuah konfigurasi atau privilege tidak secara otomatis berarti bahwa sistem dapat dieksploitasi.
Akun, Group, dan Token#
Windows memiliki group Administrators dan Users dengan cakupan akses yang berbeda. Selain itu, beberapa service dapat berjalan menggunakan akun bawaan seperti LocalSystem, LocalService, atau NetworkService. LocalSystem memiliki hak lokal yang sangat tinggi, tetapi proses yang berjalan sebagai akun tersebut tetap dipengaruhi oleh mekanisme keamanan Windows lainnya.
Informasi akun dan group yang relevan dapat diperiksa menggunakan:
whoami /all
whoami /groups
net user
net localgroup administratorsToken privilege dapat dilihat menggunakan:
whoami /privPrivilege yang tercantum tidak otomatis dapat digunakan untuk privilege escalation. Status privilege, jenis token, hak akses terhadap objek terkait, dan cara privilege tersebut dapat digunakan perlu dianalisis secara terpisah. Referensi Priv2Admin dapat digunakan untuk mempelajari hubungan antara beberapa Windows privilege dan teknik penyalahgunaannya.
Artefak Credential#
PowerShell History#
PowerShell dapat menyimpan history command pada file PSReadLine. File tersebut perlu diperiksa untuk menemukan password, token, connection string, atau informasi sensitif lain yang tidak sengaja dimasukkan ke terminal.
Get-Content "$env:USERPROFILE\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt"Lokasi dan ketersediaan file dapat berbeda berdasarkan versi PowerShell, konfigurasi PSReadLine, dan profile user. Isi file harus diperlakukan sebagai data sensitif.
Windows Credential Manager#
cmdkey menampilkan credential tersimpan yang terdaftar untuk target tertentu:
cmdkey /listOutput tersebut tidak selalu berisi password dan username yang tampil tidak otomatis dapat digunakan untuk login. Pemeriksaan perlu memperhatikan target credential, jenis credential, account context, dan izin yang tersedia.
Pada kondisi tertentu, credential yang sebelumnya disimpan dengan mekanisme /savecred dapat digunakan melalui runas:
runas /savecred /user:DOMAIN\username cmd.exePerintah tersebut hanya berhasil jika credential yang sesuai memang tersimpan dan user saat ini memiliki akses terhadapnya. Penggunaan /savecred perlu diuji hanya pada lingkungan yang telah diberi izin.
Konfigurasi Aplikasi dan IIS#
File konfigurasi aplikasi web dapat berisi connection string, API key, atau credential service. Lokasi yang perlu ditinjau bergantung pada aplikasi dan deployment, misalnya:
C:\inetpub\wwwroot\web.config
C:\Windows\System32\inetsrv\config\applicationHost.config
C:\Windows\Microsoft.NET\Framework64\<version>\Config\web.configapplicationHost.config merupakan konfigurasi utama IIS, sedangkan web.config biasanya berada pada level aplikasi atau directory. Credential juga dapat berada pada file deployment, environment variable, secret provider, atau konfigurasi aplikasi lain. Keberadaan file tidak berarti bahwa isinya dapat dibaca atau credential di dalamnya masih aktif.
Konfigurasi PuTTY#
PuTTY menyimpan konfigurasi session pada registry, misalnya:
reg query "HKCU\Software\SimonTatham\PuTTY\Sessions" /sData tersebut umumnya berisi parameter koneksi dan session configuration. Password SSH tidak secara umum disimpan dalam bentuk plaintext oleh PuTTY. Nilai registry tetap perlu ditinjau karena dapat mengungkap hostname, username, proxy, atau konfigurasi lain yang sensitif.
Scheduled Tasks#
Scheduled task perlu diperiksa berdasarkan nama task, trigger, user yang menjalankan task, command yang dieksekusi, serta permission terhadap command dan seluruh parent directory pada path-nya.
Daftar task dan detail task dapat diperiksa menggunakan:
schtasks /query /fo table /v
schtasks /query /tn "TaskName" /fo list /vTask dapat menjadi jalur privilege escalation jika user non-privileged dapat mengubah konfigurasi task atau memodifikasi binary, script, maupun parent directory yang dipanggil oleh task tersebut. Selain itu, task harus berjalan dengan account yang memiliki privilege lebih tinggi dan memiliki trigger yang dapat dicapai. Binary yang dapat ditulis saja tidak cukup jika task tidak pernah dijalankan atau berjalan menggunakan account dengan privilege yang sama.
Windows Services#
Informasi dasar service dapat diperiksa menggunakan:
sc qc ServiceName
sc query ServiceNameOutput sc qc perlu ditinjau terutama pada BINARY_PATH_NAME dan SERVICE_START_NAME. Beberapa kondisi yang perlu dianalisis adalah:
- binary service dapat ditulis oleh user non-privileged;
- salah satu parent directory pada path binary dapat ditulis;
- konfigurasi service memiliki unquoted service path; atau
- service ACL mengizinkan user mengubah konfigurasi service.
Unquoted service path tidak otomatis dapat dieksploitasi. Risiko bergantung pada adanya spasi pada path, urutan kandidat path yang diproses Windows, permission terhadap directory terkait, serta kemampuan untuk memicu service. Path yang dikutip dengan benar dan permission directory yang ketat mengurangi risiko tersebut.
Service ACL juga perlu diperiksa karena user dengan hak konfigurasi tertentu dapat mengubah binary path atau parameter service. Perubahan hanya relevan jika user memang memiliki permission tersebut dan service dapat dihentikan, dimulai ulang, atau dipicu sesuai kondisi pengujian.
Software dan Patch#
Inventarisasi software dan patch dapat membantu mengidentifikasi versi yang sudah tidak didukung atau memiliki advisory keamanan. Informasi sistem dasar dapat dikumpulkan menggunakan:
systeminfo
wmic qfe get HotFixID,InstalledOn,DescriptionWES-NG terutama digunakan untuk membandingkan informasi patch Windows, seperti output systeminfo, dengan vulnerability database. WES-NG bukan pengganti validasi manual dan tidak membuktikan bahwa exploit dapat digunakan pada host tertentu.
Versi software pihak ketiga perlu diperiksa menggunakan advisory vendor atau sumber vulnerability yang sesuai. Versi lama saja tidak cukup untuk menyimpulkan adanya privilege escalation karena konfigurasi, patch, mitigasi, dan hak akses aplikasi juga berpengaruh.
Tools Pendukung#
Tools berikut dapat membantu proses enumerasi:
- winPEAS untuk pemeriksaan konfigurasi Windows secara luas;
- PrivescCheck untuk pemeriksaan konfigurasi dan indikator privilege escalation;
- WES-NG untuk analisis missing patch Windows; dan
- Metasploit
local_exploit_suggesteruntuk menyarankan exploit berdasarkan session Metasploit yang sesuai.
Hasil tools otomatis harus divalidasi secara manual. False positive dapat terjadi karena tool tidak selalu mengetahui seluruh permission, mitigasi, konfigurasi endpoint protection, atau kondisi trigger pada host yang diperiksa.
Catatan Pengujian#
Pemeriksaan dan validasi privilege escalation hanya boleh dilakukan pada sistem milik sendiri, lab, atau lingkungan yang telah memperoleh izin tertulis. Temuan perlu didokumentasikan bersama account context, permission yang relevan, prasyarat eksekusi, dampak, dan rekomendasi mitigasinya.

