Windows User Privileges
Cơ bản Windows Privilege
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
Enum
wmic qfe # check updates
wmic product get name # check app installed
query user # get user logged in
pipelist.exe /accepteula # list namepipe
gci \\.\pipe\ # list namepipe in powershell
accesschk.exe /accepteula \\.\Pipe\lsass -v # view namepipe permission
SeImpersonate and SeAssignPrimaryToken
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:
SeDebugPrivilege
Đâ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
procdump.exe -accepteula -ma lsass.exe lsass.dmp
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
.\psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>,"")
Ngoài ra ta cũng có thể dùng tool:
SeTakeOwnershipPrivilege
Đú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ỳ
PS C:\htb> takeown /f 'C:\Department Shares\Private\IT\cred.txt'
Chỉnh ACl để tương tác với file
PS C:\htb> icacls 'C:\Department Shares\Private\IT\cred.txt' /grant htb-student:F
Last updated