监控UAC发生

问题描述 投票:0回答:2

我正在寻找捕获客户端计算机上发生的用户帐户控制的解决方案。我想开发 Powershell 的脚本并使用 Active Directory 2008 和 Windows 10 客户端在环境中部署。目前,最终用户拥有完全的本地管理权限。我需要一份报告来检查他们真正需要提升权限的频率。

问候, 山猫

windows powershell active-directory windows-server-2008-r2
2个回答
1
投票

要查看何时显示 UAC 提示,您可以在具有注册表项或组策略设置的设备上启用 UAC 审核,如此处所述:

Uac 审计是通过更改 Windows 策略(Local\Group)来完成的。感兴趣的策略位于:Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Audit Policy

Audit Privilege Use 将使用系统事件日志中的 UAC consent.exe 对话框为您提供有关提升使用情况的信息。由此创建的事件 ID:4648 和 4624.

审计流程跟踪将为您提供有关流程及其创建/终止的信息。由此创建的事件 ID:4688。 此外,查看事件 ID 4696 以查看何时将新令牌(用户登录句柄)分配给进程。使用所有这些事件,您可以清楚地了解每个使用 UAC 对话框请求提升权限的进程的时间线。

完成后,您可以通过查找具有适当 ID 的 Windows 事件来审核 PowerShell 脚本中的这些事件,如下所示:

$UACEvents = Get-WinEvent -LogName System | where Id -in (4648, 4624)

然后您只需将其烘焙到您喜欢的任何过程中即可。

活动信息

Id     Event
4624   A new account was logged in
4648   A logon was attempted using explicit credentials
4696   A primary token was assigned to process

0
投票

以下是我正在处理的类似脚本的一些片段,用于检测加入 Azure AD 的 PC 上的 UAC 提升,这些 PC 只能通过 Intune 进行管理。

# Enable Auditing of Sensitive Privilege Use
auditpol.exe /set '/subcategory:{0CCE9228-69AE-11D9-BED3-505054503030}' /success:enable


filter ParseSPUEvent {
    $SelectorStrings = [string[]]@(
        'Event/EventData/Data[@Name="SubjectUserName"]',
        'Event/EventData/Data[@Name="SubjectDomainName"]',
        'Event/EventData/Data[@Name="SubjectUserSid"]',
        'Event/EventData/Data[@Name="ProcessId"]',
        'Event/EventData/Data[@Name="ProcessName"]'
    )
    $PropertySelector = [System.Diagnostics.Eventing.Reader.EventLogPropertySelector]::new($SelectorStrings)
    $SubjectUserName, $SubjectDomainName, $SubjectUserSid, $ProcessId, $ProcessName = $_.GetPropertyValues($PropertySelector)

    [pscustomobject][ordered]@{
        DateTime     = $_.TimeCreated
        UserName     = $SubjectUserName
        Domain       = $SubjectDomainName
        UserSid      = $SubjectUserSid
        ProcessId    = $ProcessId
        ProcessName  = $ProcessName
    } | Write-Output
}

Get-WinEvent -FilterHashtable @{LogName = 'Security'; ID = 4673; StartTime = (Get-Date).AddDays(-1)} | ParseSPUEvent
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.