iT邦幫忙

2023 iThome 鐵人賽

DAY 17
1
Security

Windows Security 101系列 第 17

[Day17] User Account Control (UAC)

  • 分享至 

  • xImage
  •  

在 Windows Vista 之前,如果該用戶具有 Administrator Group (admin user) 的話,執行任何程式會繼承該用戶在當初建立 logon session 時的 token,因此所有的 process 都會是 high integrity level。

User Access Control (UAC) 的設計可以讓 admin user 在預設狀態下都是以 medium integrity level 執行 process,在有需要的狀況下,可以將提升至 high integrity level。

在 Windows 10,UAC 可以透過 User Account Control Settings 來設定不同等級(UAC slider level)。

https://ithelp.ithome.com.tw/upload/images/20231001/20120098M8Dz3WVr85.png

前三個等級差異是存取 resource 的範圍,最後的 Nevet notify 則會讓 notify (consent) 自動同意,而不是關閉 UAC。

The Architecture of UAC

Tokens

根據 csandker 的文章,在 UAC 啟用的狀態下,每當 admin user 登入時會建立一組 tokens:

  • Full Admin Token
  • Filter Admin Token

這一組 token 會相互連結 (linked),所以每當有新的 thread 執行時可以存取兩個 tokens。

需要以 high integrity level 執行時,在透過 consent.exe 提供的視窗進行提升權限。

Windows 預設的 Local Adminstrator 用戶(SID 的格式是 SID: S-1-5-21-DomainID-500) 是不屬於 UAC 的範疇,而其他的 admin user 預設則是屬於 UAC 的範疇。

Flow

根據 MSDN 的 UAC 介紹 ,大致說明了 UAC 的流程

https://ithelp.ithome.com.tw/upload/images/20231001/20120098Td2TVwcIjb.png
(ref: https://learn.microsoft.com/en-us/windows/security/application-security/application-control/user-account-control/how-it-works)

大致上可以將 UAC 分成幾個步驟:

  1. 使用者執行了需要 Administrator 權限的操作
  2. ShellExecute 先呼叫 CreateProcess 執行使用者的操作。如果收到 ERROR_ELEVATION_REQUIRED,則呼叫 Application Information service。
  3. Application Information service (appinfo.dll) 是 UAC 的核心

https://ithelp.ithome.com.tw/upload/images/20231001/20120098oVINEbPE6C.png

Application Information service 會負責以下事項:
- 檢查 manifest
- 彈出視窗 (consent.exe) 讓使用者點擊
- 取得使用者同意後會使用 Full Admin Token 執行 CreateProcess

  1. 在 ActiveX 沒安裝的情況下,只會檢查 UAC slider level;有 ActiveX 安裝的情況下,會多檢查 group policy User Account Control: Switch to the secure desktop when prompting for elevation (預設是開啟)
  2. 最後跳出視窗 (consent.exe),在預設的情況下,會將背景桌面變暗,也就是從 user desktop 切換至 secure desktop。使用者選擇後,切換回 user desktop。
  3. 如果使用者同意,Application Information service 會使用 Full Admin Token 執行 CreateProcess,並且將 parent 修改為當初呼叫的 process。

下一篇,我要介紹的是如何 Bypass UAC!

References


上一篇
[Day16] Token & Object (Part 3): Impersonate
下一篇
[Day18] Bypass UAC
系列文
Windows Security 10130
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言