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