背景:服務是攻擊面最大的系統組件
服務在背景長期執行、高權限、網路暴露面大。XP 時代多數服務以 LocalSystem(最高權限)執行,一旦被攻破即等於全系統淪陷。Vista 重寫服務模型,從架構層級降低風險。
十大強化策略詳細解析
1. SCM 統一管理服務生命週期
服務控制管理員 (SCM) 建立已安裝服務資料庫,管理啟動/停止/暫停狀態,集中控管減少殘留/孤兒服務風險。
2. 權限越高 = 風險越高
XP 多數服務跑 LocalSystem。Vista 原則:服務只擁有完成工作所需的最小權限。
3. 最小權限執行:NetworkService / LocalService 取代 LocalSystem
| 帳戶類型 | 權限範圍 | 典型服務 |
| LocalSystem | 本機完整存取,網路以電腦帳戶身分 | 關鍵核心服務(極少數) |
| NetworkService | 本機有限權限,網路以電腦帳戶身分 | DNS Client, DHCP Client |
| LocalService | 本機有限權限,網路以匿名身分 | Windows Firewall, Themes |
4. Session 0 隔離:服務與使用者桌面分離
- Session 0 專供系統服務、非互動程式。
- 使用者登入建立 Session 1+,擁有互動桌面。
- 防止「碎裂視窗攻擊」:惡意程式在使用者 Session 注入訊息竊取服務權限。
- 舊版服務若嘗試在 Session 0 顯示 UI,Vista 會彈出「互動式服務偵測」提示,隔離風險。
5. 每服務獨立 SID (Service SID)
格式:S-1-5-80-<服務專屬 ID>。
效用:作業系統可針對單一服務套用 ACL,不再共用帳戶 SID,實現精細權限控管。
6. ACL 套用至服務物件
- 服務物件(註冊表機碼、檔案、命名管道、埠)均可設定 ACL。
- ACL 由 ACE 組成,指定「允許/拒絕」特定 SID/群組的存取權限。
- 範例:僅允許「Windows Update 服務 SID」寫入
C:\Windows\SoftwareDistribution。
7. Windows 防火牆與服務 SID 整合
- 建立防火牆規則時,可指定「服務 SID」為主體,而非 IP/埠。
- 例:允許「DNS Client 服務 SID」發送 UDP 53 封包,拒絕其他程式冒用該埠。
- 規則隨服務啟動/停止自動生效,無需手動管理 IP 清單。
8. 限制服務功能:寫入登錄檔/系統檔案範圍鎖定
- 服務只能存取預先定義的登錄檔機碼路徑、檔案系統路徑。
- 嘗試越界存取 → 系統直接拒絕,事件記錄審計。
- 防止服務被利用竄改關鍵系統設定或植入惡意啟動項。
9. 服務強化腳本預先部署
- 每個系統服務內建「服務強化腳本」,定義允許/禁止的操作集合。
- SCM 啟動服務時依腳本自動套用權限、ACL、防火牆規則、資源限制。
- 零管理介入,開箱即用。
10. 強化目標:降低被入侵後的傷害,而非防止入侵
服務強化屬於縱深防禦內層。假設前線(防火牆、補丁、AV)已失守,服務強化確保攻擊者即使控制某服務,也無法橫向移動、提權、存取核心資產。配合 UAC、ASLR、DEP、PatchGuard 構建多層防護。
對管理員的啟示
- 自訂服務開發時,務必指定最低權限帳戶、定義 Service SID、撰寫強化腳本。
- 第三方服務若仍用 LocalSystem 執行,視為高風險,要求廠商更新或自行建立專用服務帳戶並套用 ACL。
- 定期稽核
sc qsidtype <服務名> 確認服務擁有獨立 SID(UNRESTRICTED 或 RESTRICTED)。