一、概述
Windows UAC,即用戶賬戶控制,是Windows Vista及以上版本引入的一種安全特性。它的主要目的是在用戶與系統管理員之間建立一個防火牆,防止管理員不經意間的惡意或者誤操作造成的災難性後果。該技術與Unix/Linux的權限管理類似,可以限制應用程序如何影響系統,並提示用戶在危險操作之前進行確認。在Windows系統中,UAC是一個與系統權限有關的難點,它不僅僅與前端的UI彈出框有關,還有與權限級別相關的API調用以及訪問受限制的資源。
二、UAC的工作原理
Windows UAC的工作原理是利用互相矛盾的權限來實現,通常來說管理員會運行某些需要高權限才能運行的應用,而用戶則需要一個類似管理員一樣的權限才能夠運行這些應用。UAC就是通過彈出請求確認的UI框和權限操作掩碼等實現的。具體來說,當運行一個需要高權限的應用時,Windows就會彈出一個確認操作的UI界面,如果用戶同意,那麼此次操作將會獲得管理員權限,否則只能以舊有用戶權限運行,這種方式可以使管理員和用戶擁有不同的權限等級,從而降低系統被攻擊的風險。
三、UAC實現過程
UAC的實現過程可以分為以下幾個步驟:
1、確定當前用戶是否有管理員權限
2、如果沒有管理員權限,提升權限等級
3、通過API獲取權限掩碼
4、訪問資源並執行操作
以下是一個簡單的代碼示例:
BOOL IsUserAdmin()
{
BOOL fReturn = FALSE;
DWORD dwStatus;
DWORD dwAccessMask;
DWORD dwAccessDesired;
DWORD dwACLSize;
DWORD dwStructureSize = sizeof(PRIVILEGE_SET);
PACL pACL = NULL;
PSID pSIDAdmin = NULL;
HANDLE hToken = NULL;
PRIVILEGE_SET ps;
GENERIC_MAPPING GenericMapping;
SECURITY_DESCRIPTOR sd;
SECURITY_DESCRIPTOR sdAdmin;
SECURITY_QUALITY_OF_SERVICE sqos;
ULONG lInfoLength;
GenericMapping.GenericRead = GENERIC_READ;
GenericMapping.GenericWrite = GENERIC_WRITE;
GenericMapping.GenericExecute = GENERIC_EXECUTE;
GenericMapping.GenericAll = GENERIC_ALL;
dwStatus =
AllocAndInitializeSid(
&gSystemSidAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&pSIDAdmin);
if (dwStatus == ERROR_SUCCESS)
{
if (ImpersonateSelf(SecurityImpersonation) == TRUE)
{
if (OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, TRUE, &hToken) == FALSE)
{
if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken) == FALSE)
{
RevertToSelf();
goto Cleanup;
}
}
if (hToken != NULL)
{
if (AccessCheck(&sd, hToken, dwAccessDesired, &GenericMapping, &ps, &dwStructureSize, &dwStatus, &fReturn))
{
if (fReturn)
{
// ... User is an admin
}
}
CloseHandle(hToken);
}
RevertToSelf();
}
}
Cleanup:
if (pSIDAdmin)
FreeSid(pSIDAdmin);
if (pACL)
LocalFree(pACL);
return(fReturn);
}
四、UAC的優缺點及適用範圍
優點:
1、Windows系統管理員和普通用戶權限能夠分別獨立管理,降低了管理員被攻擊的風險;
2、提供了一個規則化的、標準化的管理策略,方便管理;
3、可以通過SDK對API調用進行限制,提高系統的穩定性。
缺點:
1、彈出過多的UI界面,降低了用戶體驗;
2、會對進程的CPU和內存資源造成額外開銷,降低系統性能;
3、在特殊情況下(如病毒篡改或者UAC彈窗偽造),會影響系統安全。
適用範圍:
用戶賬戶控制幾乎適用於任何需要對安全性進行控制的Windows應用程序,特別是那些需要系統管理員權限才能運行的程序。在家庭電腦上,用戶不一定需要用到UAC,但在商務辦公場景,使用UAC可以大大提高系統的安全性。
原創文章,作者:WEAO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/136641.html
微信掃一掃
支付寶掃一掃