萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

Windows 系統權限模型深度解析:從 DACL 到完整性級別的訪問控制全景圖

Windows 權限系統是一個多層次、多維度的訪問控制矩陣。許多管理員只知道「管理員組最高權限」,卻不懂 DACL、SACL、Owner、Integrity Level、Privilege、Capability、AppContainer 如何協同工作。本文為您繪製完整權限全景圖。

核心對象:安全描述符

每個可安全保護對象(文件、註冊表鍵、進程、線程、服務、管道、Socket 等)均附帶一個 SECURITY_DESCRIPTOR 結構:

typedef struct _SECURITY_DESCRIPTOR {
  BYTE  Revision;
  BYTE  Sbz1;
  SECURITY_DESCRIPTOR_CONTROL Control;
  PSID  Owner;           // 擁有者 SID
  PSID  Group;           // 主群組 SID
  PACL  Sacl;            // 系統審計 ACL (SACL)
  PACL  Dacl;            // 自主訪問控制 ACL (DACL)
} SECURITY_DESCRIPTOR;

DACL:訪問控制的核心邏輯

  • ACE (Access Control Entry):DACL 中的單元,包含 Type (Allow/Deny)、Flags (繼承)、Mask (權限位)、SID (信任主體)
  • 評估順序:顯式拒絕 → 顯式允許 → 繼承拒絕 → 繼承允許。拒絕優先於允許,顯式優先於繼承
  • 權限位:標準權限 (READ/WRITE/EXECUTE/DELETE) + 對象特定權限 (FILE_READ_DATA、KEY_SET_VALUE、PROCESS_TERMINATE 等)
  • 典型誤區:Deny ACE 放在 Allow ACE 之後 → 無效;組嵌套導致意外繼承;CREATOR OWNER 繼承誤解

SACL:審計的眼睛

  • 定義「誰做了什麼操作」被記錄到安全日誌 (Event ID 4663/4656/4658/4670)
  • 配置路徑:組策略 → 物件存取審計 → 成功/失敗
  • 關鍵場景:敏感文件讀取、關鍵註冊表修改、特權使用、服務安裝

完整性級別:強制完整性控制 (MIC) 的「隱形牆」

級別SID 後綴典型進程訪問規則
SystemS-1-16-16384Services.exe、Lsass.exe、內核模式驅動可寫入所有較低級別對象
HighS-1-16-12288管理員提權進程 (UAC 彈窗後)可寫入 Medium/Low,不可寫 System
MediumS-1-16-8192標準用戶進程、IE 受保護模式 (Low)可寫入 Low,不可寫 High/System
LowS-1-16-4096IE Protected Mode、Chrome Sandbox、Outlook 附件預覽僅可寫入 Low 標記對象 (如 %LocalAppData%\Low)
UntrustedS-1-16-0匿名登入、未受信任進程幾乎無寫入權限

規則:No Write Up(不可向更高完整性級別寫入),No Read Up(可選,針對機密數據)。MIC 獨立於 DACL,即使 DACL 允許,MIC 也能阻止寫入。

特權:繞過 DACL 的「超級鑰匙」

  • 分配給用戶/組的系統級能力,如 SeDebugPrivilege (調試進程)、SeTakeOwnershipPrivilege (取得擁有權)、SeBackup/RestorePrivilege (備份/還原繞過 ACL)
  • 通過組策略「用戶權利指派」配置,或編程調用 AdjustTokenPrivileges 啟用
  • 危險特權最小化原則:服務帳號僅授予必要特權,定期審計

能力與 AppContainer:現代沙箱模型

  • Capability (SID 以 S-1-15-3 開頭):細粒度權限(如 internetClient、musicLibrary、removableStorage),UWP 應用聲明式請求
  • AppContainer:進程隔離邊界,擁有獨特 SID、私有註冊表/文件系統視圖、網絡隔離、無法訪問非聲明資源
  • 傳統 Win32 應用可通過 CreateProcessAsUser + AppContainer 模式運行(如 IE Enhanced Protected Mode)

實戰權限故障排查清單

  1. icacls 文件/目錄 查看 DACL、完整性標籤
  2. whoami /all 查看當前 Token:用戶/組 SID、特權、完整性級別、能力
  3. accesschk.exe -s -d 文件/註冊表/進程 (Sysinternals) 顯示完整有效訪問權限
  4. ProcMon 過濾「Access Denied」結果,定位被拒絕的對象、請求權限、調用堆疊
  5. PowerShell Get-Acl / Set-Acl 程式化管理 ACL

最佳實踐原則

  1. 最小權限:服務/用戶/應用僅獲取完成任務所需的最小 DACL、特權、能力集合
  2. 預設拒絕:新建對象預設不繼承父級 ACE,顯式定義所需 ACE
  3. 分層防護:DACL (自主) + MIC (強制) + 特權 (例外) + AppContainer (隔離) 多層生效
  4. 審計先行:先配置 SACL 記錄訪問嘗試,分析基線後再收緊 DACL
  5. 自動化基線:DSC/Ansible/Intune 將權限配置代碼化、版本化、可審計

Windows 權限模型看似複雜,實則邏輯自洽。搞清 Owner → DACL → SACL → MIC → Privilege → Capability 六層關係,配合工具鏈驗證,即可駕馭最棘手的訪問控制難題。

copyright © 萬盛學電腦網 all rights reserved