Windows User Privileges
Last updated
Last updated
Về cơ bản cơ chế kiểm soát quyền trong windows sẽ như hình sau
Mỗi security principal trong windows đều sẽ có 1 SID, khi 1 subject (ví dụ user) muốn truy cập một object nào đó (ví dụ file) thì subject sẽ cung cấp Access Token (bao gồm Usersid, groupsid, priv, và một số thông tin khác) hệ điều hành sẽ dùng Access Token để so sánh với ACEs trong object để quyết định xem subject này access hay denied
SeImpersonate
là một quyền mặc định enable đối với Local Admin và Local Service Account. Vai trò của priv này cho phép user có thể impersonate security context của user khác. Tính năng này nhằm hỗ trợ việc 1 user nào đó khi truy cập web hoặc db muốn truy cập tài nguyên của user đó, mà không muốn thêm nhiều quyền cho service account thì SeImpersonate được dùng để impersonate user đó và truy cập tài nguyên (SeAssignPrimaryToken
cũng có tác dụng tương tự). Bởi vì điều này mà thường các user service như IIS hay MSSQL đều có priv này.
Để lợi dụng quyền này thì ta sẽ dùng các exploit liên quan đến Potato family
Tuy nhiên JuicyPotato
sẽ không work với Windows Server 2019 và Windows 10 build 1809 trở lên. Ta có thể dùng PrintSpoofer
và RoguePotato
để thay thế
Cụ thể cơ chế có thể tham khảo 2 blog sau:
Ngoài ra trong một số trường hợp, user service đã bị disable SeImpersonate thì ta vẫn có thể chạy script để enable nó lại.
Script enable: https://github.com/itm4n/FullPowers
Hoặc script này để enable all disable priv: https://raw.githubusercontent.com/fashionproof/EnableAllTokenPrivs/master/EnableAllTokenPrivs.ps1
Đây là một quyền đặc biệt, dùng dể debug các process trong win, và thông thường chỉ Local Admin mới mặc định có.
Với quyền này ta có thể dump process bất kỳ, ví dụ dump lsass
Do đó ta cũng có thể chạy mimikatz với quyền này.
Ngoài ra ta cũng có thể lợi dụng quyền này để lên SYSTEM bằng cách spawn 1 process con với process SYSTEM (hoặc user bất kỳ nào khác nếu muốn LPE sang user đó). Nhờ vào SeDebugPrivilege ta khiến process con inherit toke từ process cha (lúc này là SYSTEM) từ đó ta spawn được process với quyền sysytem
Ta sẽ sử dụng script: https://github.com/decoder-it/psgetsystem
Ngoài ra ta cũng có thể dùng tool:
Đúng như tên gọi thì priv này cho phép ta take ownership của bất kỳ securable object nào như AD object, NTFS file/folder, service, process,…
Takeown 1 file bất kỳ
Chỉnh ACl để tương tác với file