windows令牌学习
訪問令牌
訪問令牌(Access Tokens)是Windows操作系統安全性的一個概念。
當用戶登陸時,系統創建一個訪問令牌,里面包含登錄進程返回的SID和由本地安全策略分配給用戶和用戶的安全組的特權列表。
系統使用令牌控制用戶可以訪問哪些安全對象,并控制用戶執行相關系統操作的能力。
有兩種令牌:主令牌和模擬令牌。
主令牌是由windows內核創建并分配給進程的默認訪問令牌,每一個進程有一個主令牌,它描述了與當前進程相關的用戶帳戶的安全上下文。
如果用sysinternal工具logonsessions查看的話,這兩個令牌屬于不同的Logon Session。
OpenProcessToken
函數用來打開與進程相關聯的訪問令牌;
要對一個任意進程(包括系統安全進程和服務進程)進行指定了寫相關的訪問權的OpenProcess操作,只要當前進程具有SeDeDebug權限就可以了。要是一個用戶是Administrator或是被給予了相應的權限,就可以具有該權限。可是,就算我們用Administrator帳號對一個系統安全進程執行OpenProcess(PROCESS_ALL_ACCESS,FALSE, dwProcessID)還是會遇到“訪問拒絕”的錯誤。什么原因呢?原來在默認的情況下進程的一些訪問權限是沒有被啟用(Enabled)的,所以我們要做的首先是啟用這些權限。與此相關的一些API函數有OpenProcessToken、LookupPrivilegevalue、AdjustTokenPrivileges。我們要修改一個進程的訪問令牌,首先要獲得進程訪問令牌的句柄,這可以通過OpenProcessToken得到,函數的原型如下:
BOOL OpenProcessToken(
__in HANDLE ProcessHandle, //要修改訪問權限的進程句柄
__in DWORD DesiredAccess, //指定你要進行的操作類型
__out PHANDLE TokenHandle //返回的訪問令牌指針
);
總結
以上是生活随笔為你收集整理的windows令牌学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超图三维服务学习摘要1
- 下一篇: Linux内核常见FAQ