Windows Defender Application Control (WDAC) 是一种基于策略的应用程序控制机制,旨在通过定义允许或拒绝执行哪些应用程序来增强 Windows 系统的安全性。C:\Windows\System32\CodeIntegrity 文件夹与 Windows Defender Application Control (WDAC) 策略之间有着重要的关系
Windows Defender Application Control (WDAC) 是一种基于策略的应用程序控制机制,旨在通过定义允许或拒绝执行哪些应用程序来增强 Windows 系统的安全性。WDAC 可以限制未知或不受信任的代码执行,减少恶意软件的感染风险,特别是在企业环境中。
WDAC 策略通过配置和管理一组规则,控制哪些应用程序、脚本或其他可执行文件能够运行。它是 Windows 10 和 Windows Server 2016 及更高版本的一项重要安全功能。
WDAC 策略的核心概念:
-
策略级别:
- 应用程序控制策略:控制系统上能够运行的所有应用程序。
- 驱动程序控制策略:控制能够加载到系统中的驱动程序。
-
策略模式:
- 基本模式:系统中只允许已知的应用程序运行,未明确授权的应用程序将被阻止。
- 审计模式:虽然应用程序会被阻止,但会生成事件日志,以便管理员审计并查看哪些应用程序被阻止。
- 强制模式:这是更严格的模式,所有未在策略中明确允许的应用程序都无法运行。
-
策略文件: WDAC 策略通常由一个 XML 格式的策略文件定义,管理员可以使用 PowerShell 或组策略来配置和管理。
-
策略配置方式:
- 基于文件哈希:通过文件的哈希值来唯一标识应用程序,确保只有预定义的文件能运行。
- 基于证书:通过数字证书来标识合法的应用程序或驱动程序,允许运行所有通过该证书签名的应用程序。
- 基于路径:可以允许特定路径下的应用程序运行,但通常不推荐在生产环境中使用这种方法,因为路径可能会被更改。
- 基于Windows应用程序符号:允许指定特定的应用程序包或已知的应用程序符号。
-
PowerShell命令: 管理员可以使用 PowerShell 来创建、修改和应用 WDAC 策略。常用命令包括:
New-CIPolicy
:创建新的应用程序控制策略。Set-CIPolicy
:应用策略。Get-CIPolicy
:查看当前的应用程序控制策略。ConvertFrom-CIPolicy
和ConvertTo-CIPolicy
:将现有的策略转换为不同的格式。
配置 WDAC 策略的步骤:
-
生成默认策略文件: 可以使用 PowerShell 来创建一个基本的策略文件。例如,使用以下命令创建一个基于文件哈希的策略:
powershellCopy CodeNew-CIPolicy -Level Publisher -User
-
审计与测试: 在正式应用之前,建议使用审计模式来测试 WDAC 策略,确保不会误阻止合法的应用程序:
powershellCopy CodeSet-CIPolicy -PolicyFile "path_to_policy.xml" -AuditMode
-
应用策略: 一旦策略验证无误,可以将其应用到系统中:
powershellCopy CodeSet-CIPolicy -PolicyFile "path_to_policy.xml" -EnforceMode
-
监控和管理: 使用事件查看器监控 WDAC 策略的执行情况。WDAC 会记录被阻止的应用程序及其原因。
-
发布策略: 在组织环境中,策略可以通过组策略进行分发和应用,以便集中管理多个机器上的 WDAC 设置。
WDAC 的优势:
- 防止恶意软件执行:通过仅允许签名且受信任的代码运行,极大降低了恶意软件通过未签名或未授权代码感染系统的风险。
- 细粒度控制:可以基于证书、文件哈希、路径等多种方式进行配置,提供灵活的应用程序控制。
- 增强的安全性:通过与 BitLocker、Device Guard 等技术结合,WDAC 能提供更全面的安全防护。
- 企业合规性:适合用于政府和企业环境,确保合规性并防止未经授权的应用程序或脚本在企业系统中运行。
需要注意的事项:
- 兼容性问题:应用程序可能会因为其未签名或不符合策略要求而无法执行,配置时需要确保所有常用和业务相关的应用程序都在策略中列出。
- 策略管理:WDAC 策略通常需要细心维护,尤其是在频繁安装新应用程序或更新系统时,策略文件需要及时更新以适应新的变化。
- 对用户体验的影响:在强制执行模式下,某些未授权的应用程序将无法运行,这可能会影响终端用户的工作效率。
总结:
WDAC 是 Windows 系统中的一种强大的安全控制机制,帮助管理员对应用程序的执行进行细粒度的控制,增强系统的防护能力。在使用过程中,合理配置和管理策略是确保系统安全与正常运行的关键。
在 Windows 操作系统中,C:\Windows\System32\CodeIntegrity
文件夹与 Windows Defender Application Control (WDAC) 策略之间有着重要的关系。CodeIntegrity
是 Windows 操作系统的一部分,负责处理与应用程序控制相关的安全任务,特别是在启用 WDAC(Windows Defender 应用程序控制)时,CodeIntegrity
文件夹中的组件和数据文件起到了核心作用。
1. CodeIntegrity 文件夹的作用
C:\Windows\System32\CodeIntegrity
文件夹用于存储与 Windows 代码完整性(Code Integrity, CI)相关的配置和日志。Code Integrity 是一种安全机制,旨在确保系统上的代码(如驱动程序、应用程序、脚本等)在执行时未被篡改或损坏,并且符合管理员或系统的策略要求。
WDAC 是 Code Integrity 的一个重要组成部分,主要用于控制哪些应用程序和驱动程序能够在系统上执行。CodeIntegrity
文件夹中的文件和日志帮助系统执行这些策略并验证代码的完整性。
2. WDAC 策略与 CodeIntegrity 的关系
WDAC 策略实际上是 Code Integrity 安全框架中的一种具体应用。它允许管理员制定应用程序控制策略,确保只有经过验证的应用程序或驱动程序能够运行。具体来说,WDAC 策略的执行和管理通过以下几个步骤与 CodeIntegrity
文件夹中的组件密切相关:
-
策略存储和执行:
- WDAC 策略通常以 XML 文件形式存储并由管理员配置。该策略文件指定了哪些程序、脚本或驱动程序可以在系统上执行,通常是通过文件哈希、证书或其他标识符进行控制。
- 当 WDAC 策略被应用到系统时,Code Integrity 驱动程序会读取这些策略并对正在运行的程序进行检查。如果某个程序不符合策略要求(如它未签名或被标记为恶意),Code Integrity 会阻止该程序的执行。
-
策略文件存储与管理:
- WDAC 策略通常在文件系统中存储,并且与
CodeIntegrity
相关联。管理员可以使用 PowerShell 或组策略来创建、编辑和应用这些策略文件。 - 在
CodeIntegrity
文件夹内,系统会存储由 Windows Defender 或管理员定义的策略文件,并确保这些策略的有效性和一致性。
- WDAC 策略通常在文件系统中存储,并且与
-
日志记录与审计:
CodeIntegrity
文件夹还存储与 WDAC 相关的审计日志。当某个应用程序被阻止执行时,这些日志文件会记录被拒绝的事件。管理员可以通过查看这些日志来审计和诊断执行中出现的问题。
-
驱动程序和代码签名验证:
- 除了应用程序,WDAC 还可以控制驱动程序的加载。
CodeIntegrity
驱动程序会检查驱动程序是否符合 WDAC 策略的要求(例如,驱动程序是否有有效的签名)。 - 如果没有通过验证,Code Integrity 将阻止驱动程序加载,以防止未授权或恶意的驱动程序影响系统的稳定性和安全性。
- 除了应用程序,WDAC 还可以控制驱动程序的加载。
3. WDAC 策略与 CodeIntegrity 的工作流
-
策略定义:管理员定义 WDAC 策略,指定允许或拒绝的应用程序、驱动程序等。这个策略文件存储在某个位置,并由
CodeIntegrity
驱动程序使用。 -
策略应用:WDAC 策略被应用到 Windows 系统中。此时,
CodeIntegrity
驱动程序会根据这些策略来控制和检查每个启动或执行的程序。 -
策略验证:当一个应用程序尝试执行时,
CodeIntegrity
驱动程序会验证该程序是否符合 WDAC 策略。验证方式包括检查文件的哈希值、证书或路径等。 -
审计和记录:如果某个程序不符合 WDAC 策略要求,
CodeIntegrity
会阻止它的执行,并将事件记录到日志中,供管理员后续审计和分析。
4. WDAC 策略的实际效果
- 强制执行:在强制模式下,所有不符合策略要求的程序都将被拒绝执行,包括未经签名或不在允许列表中的应用程序和驱动程序。
- 审计模式:在审计模式下,虽然程序会被阻止,但
CodeIntegrity
会将这些拒绝事件记录到日志文件中,而不会中断程序的执行。
5. 常见的 CodeIntegrity 文件和目录
- **C:\Windows\System32\CodeIntegrity\CI**:存储 Windows 系统生成的代码完整性和应用程序控制策略日志文件。
- C:\Windows\System32\CodeIntegrity\CIPolicy.xml:存储 WDAC 策略文件,包含所有的允许或拒绝规则。
6. PowerShell 命令和 WDAC 策略管理
管理员可以使用 PowerShell 来管理 WDAC 策略,并将其与 CodeIntegrity
文件夹中的日志文件进行交互。例如:
Get-WdacPolicy
:查看当前的 WDAC 策略。Set-WdacPolicy
:设置和应用 WDAC 策略。New-CIPolicy
:创建新的 Code Integrity 策略文件。
总结
C:\Windows\System32\CodeIntegrity
文件夹是 Windows 系统中实现代码完整性验证和执行控制的核心组件之一,WDAC 策略的执行离不开该文件夹中的配置文件和日志。通过 Code Integrity 驱动程序,WDAC 策略能够有效地限制恶意软件、未签名或未经授权的程序和驱动程序的执行,从而增强 Windows 系统的安全性。
C:\Windows\System32\CodeIntegrity>dir /s /b C:\Windows\System32\CodeIntegrity\CIPolicies C:\Windows\System32\CodeIntegrity\driver.stl C:\Windows\System32\CodeIntegrity\driversipolicy.p7b C:\Windows\System32\CodeIntegrity\previous.driver.stl C:\Windows\System32\CodeIntegrity\Tokens C:\Windows\System32\CodeIntegrity\Update C:\Windows\System32\CodeIntegrity\CIPolicies\Active C:\Windows\System32\CodeIntegrity\CIPolicies\Internal C:\Windows\System32\CodeIntegrity\CIPolicies\Staged C:\Windows\System32\CodeIntegrity\CIPolicies\Active\{784C4414-79F4-4C32-A6A5-F0FB42A51D0D}.cip C:\Windows\System32\CodeIntegrity\CIPolicies\Active\{A072029F-588B-4B5E-B7F9-05AAD67DF687}.cip C:\Windows\System32\CodeIntegrity\Tokens\Active C:\Windows\System32\CodeIntegrity\Tokens\Staged C:\Windows\System32\CodeIntegrity\Update\Previous |