我试图了解为什么我的 WDAC 策略不允许使用事件查看器日志允许列出的程序运行。
以下是我根据事件查看器审核日志制定 WDAC 策略允许列表的方法:
New-CIPolicy -FilePath .\EventsPolicy.xml -Audit -Level FilePath –UserPEs -UserWriteablePaths -MultiplePolicyFormat 3> .\EventsPolicyWarnings.txt
我只想使用 FilePath,因为这样当程序更新到较新版本时就不需要更新策略。
EventViewer 策略中负责应用程序允许列表的一些部分:
<Allow ID="ID_ALLOW_A_6" FriendlyName="GLOBALROOT\Device\HarddiskVolume4\Program Files\7-Zip\7zFM.exe FileRule" MinimumFileVersion="0.0.0.0" FilePath="GLOBALROOT\Device\HarddiskVolume4\Program Files\7-Zip\7zFM.exe" />
<Allow ID="ID_ALLOW_A_14" FriendlyName="GLOBALROOT\Device\HarddiskVolume4\Program Files\7-Zip\7-zip.dll FileRule" MinimumFileVersion="0.0.0.0" FilePath="GLOBALROOT\Device\HarddiskVolume4\Program Files\7-Zip\7-zip.dll" />
<Allow ID="ID_ALLOW_A_11" FriendlyName="GLOBALROOT\Device\HarddiskVolume4\Program Files\Mullvad VPN\resources\mullvad-daemon.exe FileRule" MinimumFileVersion="0.0.0.0" FilePath="GLOBALROOT\Device\HarddiskVolume4\Program Files\Mullvad VPN\resources\mullvad-daemon.exe" />
创建此策略后,我将它与之前基于 Microsoft ISG(签名和信誉良好模式)制定的策略合并,在最终策略中,即合并的结果,这些是我设置的策略规则:
<Rules>
<Rule>
<Option>Enabled:Unsigned System Integrity Policy</Option>
</Rule>
<Rule>
<Option>Enabled:UMCI</Option>
</Rule>
<Rule>
<Option>Enabled:Inherit Default Policy</Option>
</Rule>
<Rule>
<Option>Enabled:Update Policy No Reboot</Option>
</Rule>
<Rule>
<Option>Enabled:Intelligent Security Graph Authorization</Option>
</Rule>
<Rule>
<Option>Enabled:Developer Mode Dynamic Code Trust</Option>
</Rule>
<Rule>
<Option>Enabled:Revoked Expired As Unsigned</Option>
</Rule>
<Rule>
<Option>Required:Enforce Store Applications</Option>
</Rule>
<Rule>
<Option>Required:WHQL</Option>
</Rule>
<Rule>
<Option>Enabled:Dynamic Code Security</Option>
</Rule>
<Rule>
<Option>Disabled:Runtime FilePath Rule Protection</Option>
</Rule>
<Rule>
<Option>Enabled:Invalidate EAs on Reboot</Option>
</Rule>
<Rule>
<Option>Enabled:Allow Supplemental Policies</Option>
</Rule>
<Rule>
<Option>Enabled:Advanced Boot Options Menu</Option>
</Rule>
<Rule>
<Option>Enabled:Unsigned System Integrity Policy</Option>
</Rule>
一开始,我以为在 SYSTEM 用户下运行的程序是内核模式驱动程序。阅读下面的评论和答案后,我意识到事实并非如此。让我这样想的是 1)
在这里: 位于“FilePath”旁边
它说:“FilePath 规则仅适用于用户模式二进制文件,不能用于允许内核模式驱动程序。”
2)
当我使用它根据事件查看器日志创建 WDAC 策略允许列表时,只有以 SYSTEM 身份运行的程序无法运行,而其他程序(例如 7-zip)则被允许运行。
New-CIPolicy -FilePath .\EventsPolicy.xml -Audit -Level FileName -Fallback FilePath –UserPEs -UserWriteablePaths -MultiplePolicyFormat 3> .\EventsPolicyWarnings.txt
使用此策略创建的 WDAC 策略允许所有被 WDAC 阻止的程序运行:
New-CIPolicy -FilePath .\EventsPolicy.xml -Audit -Level hash –UserPEs -UserWriteablePaths -MultiplePolicyFormat 3> .\EventsPolicyWarnings.txt
答案1
不,以 SYSTEM 身份运行的进程不在内核模式下运行。简短的解释是:
所有驱动程序都与内核的其余部分一起在单个内核进程中运行。
进程 ID 0 是“空闲进程”,进程 ID 4(在 XP 及更高版本中)是内核“进程”。
从这回答
例如,这是所有内核模式驱动程序在其下运行的内核进程 (PID 4):
如果没有看到您的 FilePath 规则或您是如何创建它的,我不确定,但有很多原因可能导致它不起作用:
- 必须为扫描路径中的每个文件生成唯一的、完全限定的路径规则,除非使用通配符
*
- 通配符只能用在 FilePath 规则的开头或结尾(不能用在中间)。每个路径规则只允许使用一个通配符。
- 如果文件路径允许任何不在 WDAC 管理员列表中的 SID 具有写入权限,则该文件路径将被视为用户可写入。除非您明确禁用
Runtime FilePath Rule Protection
- 哈希规则允许进行细微的更改,因为在文件重命名、重新签名、加盖时间戳等操作时,文件的哈希值不会改变。
- 目前存在一个错误,即 MSI 无法在文件路径规则中被允许列出。
编辑:我个人不使用这样的文件路径,\Device\HarddiskVolume4\
因为卷号无法保证。尝试使用-ScanPath
来生成有效的文件路径规则:
New-CIPolicy -ScanPath 'C:\Program Files\7-Zip' -UserPEs -FilePath .\FilePolicy.xml -Level FilePath
答案2
如果您想基于审计事件日志创建 WDAC 策略,首先您必须在审计模式下部署 WDAC 策略才能开始该过程,之后您开始安装您的程序并在安装后运行它们,以便为每个文件创建审计事件日志,完成后,您可以扫描日志并基于它们创建 WDAC 策略。
您需要将此策略与基本策略(例如 AllowMicrosoft)合并,以允许基本 Windows 组件以及 Microsoft 签名的文件运行。
不推荐使用 FilePath 规则,因为它们不像文件哈希、文件发布者等。
您可以使用我在 GitHub 上创建的有关 Windows Defender 应用程序控制的指南:
https://github.com/HotCakeX/Harden-Windows-Security/wiki/WDAC-for-Fully-Managed-Devices
还有WDACConfig PowerShell 模块将为您自动完成整个过程。
完全托管设备的 WDAC 策略 - 变体 1
基本策略类型 | 使用的方法 | 签 | 保护评分 1-5 |
---|---|---|---|
允许 Microsoft/默认 Windows | WDACConfig 模块 | 不 | 4 |
此变体可帮助你为完全托管的设备创建和部署 WDAC 策略仅使用事件查看器审计日志。
此场景包括对文件和证书/签名者使用明确的允许规则,我们将要制定的政策不允许的任何内容都会被自动拒绝/阻止。
准备虚拟机
如果尚未安装,请从可选的 Windows 功能中安装 Hyper-V 角色。
Enable-WindowsOptionalFeature -Online -FeatureName Containers-DisposableClientVM -All -norestart
下载最新的 Windows.ISO
文件来自微软网站,用它创建一个新的虚拟机,安装 Windows 并登录。完全更新 Windows,然后重新启动以应用更新。此时您可以创建一个 Hyper-V 检查点,以便以后需要时可以返回到此干净状态。
准备基本政策
有两种类型的基本政策可供您选择。
- 允许 Microsoft:仅允许由 Microsoft 受信任的根证书签名的文件和应用程序。
- 默认 Windows:仅允许 Windows 预安装的文件和应用程序。
部署允许 Microsoft Prep 模式基础策略
New-WDACConfig -PrepMSFTOnlyAudit -LogSize 10MB
参数信息
部署默认 Windows Prep 模式基础策略
New-WDACConfig -PrepDefaultWindowsAudit -LogSize 10MB
参数信息
根据您选择的选项,它会在审核模式下部署基本策略。无需重新启动。
在系统上生成审计事件日志
在虚拟机上安装您想要在 WDAC 策略中允许的所有程序。这些是您在部署 WDAC 策略后想要允许在目标系统上运行和安装的程序。
安装或运行第三方非 Microsoft 程序,同时允许 Microsoft审计模式的策略部署在虚拟机上,为每个程序及其文件生成事件日志。
安装或运行任何非 Windows 默认预装的程序,同时默认窗口审计模式的策略部署在虚拟机上,为每个程序及其文件生成事件日志。
这些事件日志正是我们识别和为检测到的文件创建允许规则所需要的。
只有在准备模式阶段执行的文件才会生成事件日志,因此,仅使用安装程序安装程序无法触发每个程序所具有的每个组件和可执行文件的事件日志生成。因此,安装程序后,请运行它们,并像平常一样使用它们,以便执行所有程序的组件并为其生成事件日志。
从审计事件日志生成补充策略
如果您选择允许 Microsoft 路径
New-WDACConfig -MakePolicyFromAuditLogs -BasePolicyType 'Allow Microsoft Base' -NoDeletedFiles
参数信息
如果您选择默认 Windows 路径
New-WDACConfig -MakePolicyFromAuditLogs -BasePolicyType 'Default Windows Base' -NoDeletedFiles
参数信息
所有输出都保存在当前工作目录内名为“WDAC”的文件夹中。
-Deployit
如果在上述命令中使用可选的 switch 参数,则会自动发生 3 件事:
- 已部署的准备模式基础策略将被删除。
- 实际的基础策略将根据您的选择进行部署。
- 将部署从审计日志生成的补充策略。
如果你不使用开关-Deployit
,你可以.cip
使用以下方法手动部署二进制文件CI工具。