我LogonUser用來獲取目標會話令牌的句柄并將其用于函式CreateProcessAsUser。
status = LogonUserW(sessiondata->UserName.Buffer, sessiondata->LogonDomain.Buffer,NULL,LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &targettoken);
我的可執行檔案將由管理員執行,但即使我是管理員,我也無法獲取令牌的句柄并且總是得到1326 錯誤:登錄失敗:未知用戶名或密碼錯誤。. 我輸入lpszPasswordNULL是希望它檢查我是否是管理員并授予我獲取訪問令牌的權限。
當然,我不應該為此目的使用LogonUser ,那么您有什么建議呢?
由于我的高級權限(管理員),我希望在不提供密碼的情況下獲得訪問令牌的句柄。
uj5u.com熱心網友回復:
我的可執行檔案是一個簡單的應用程式,旨在從所有登錄會話中獲取螢屏截圖
嘿,我們可以忘記獲取用戶的登錄令牌。實際上有一個相當好的方法可以做到這一點。
- 列舉所有行程。
- 如果行程是 WINLOGON 行程并且會話 id 不為零
- 竊取它的令牌
- 使用該令牌啟動一個行程;在命令列上傳遞一個檔案
- 該程序會截取螢屏截圖并將其保存到檔案中
- 當您的所有流程都完成后,拿起您的檔案。
來自 WINLOGON 的令牌具有管理權限,并且位于正確的會話上以查看用戶的桌面。如果您不創建任何視窗,您就不會容易受到用戶的干擾。(事實上??,這個令牌以更高的完整性級別創建視窗。正常的粉碎攻擊不起作用,但是如果您創建視窗,您仍然可以收到虛假的鍵盤或滑鼠輸入。)
最有可能的是,您只會從當前活動的螢屏和任何活動的遠程桌面會話中獲得螢屏截圖。其他會話停止重繪并洗掉螢屏緩沖區以節省記憶體。
您的用戶很可能沒有 SeAssignPrimaryTokenPrivilege 和 SeTcbPrivilege。我過去曾將這些提供給我的用戶;但是,獲取它們的最簡單方法是通過設定和啟動作為服務成為本地系統,然后在完成后洗掉服務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451053.html
上一篇:Prolog:將術語轉換為字串?
