具有 RunAs 用户和自动转录的受限端点未正确记录调用用户

Constrained endpoint with RunAs user and automatic transcription doesn't correctly log the invoking user

我已经使用 RunAs 用户创建了 PowerShell 会话配置。我能够使用 Enter-PSSessionInvoke-Command 以及通过 PowerShell Web 访问连接到配置。它有效,并且似乎 运行 作为 RunAs 用户正确。

我还通过组策略启用了自动转录,以便记录所有 PowerShell 会话。

PowerShell 记录同时记录 "Username" 和 "RunAs User",据我所知,这正是这种情况。

但我遇到的问题是它将 RunAs 用户记录为两个用户,并且用于连接到会话的用户名没有记录在任何地方。

**********************
Windows PowerShell transcript start
Start time: 20161109123326
Username: DOM\adminuser
RunAs User: DOM\adminuser
Machine: HOSTMACHINE (Microsoft Windows NT 6.3.9600.0)
Host Application: C:\Windows\system32\wsmprovhost.exe -Embedding
Process ID: 4676
PSVersion: 5.0.10586.117
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0.10586.117
BuildVersion: 10.0.10586.117
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************

这是我的记录的顶部,其中更改了用户名和机器名。 DOM\adminuser 我们是 RunAs 用户,但对会话进行身份验证的用户不同(我自己的帐户)。

我不认为这应该是这样工作的。我期待在 "Username" 字段中看到我的用户。

我希望有人以前看过这个。

我想我明白了。我很确定 RunAs User 字段是用于虚拟帐户 (RunAsVirtualAccount) 的,如果您将端点设置为模拟,而不是真正用于使用 RunAsCredential.

很遗憾,虚拟帐户对我不起作用,因为它必须是本地帐户,而我需要它来访问域。

我对此不是 100%,所以除非得到确认,否则我不会接受自己的回答,所以希望其他人能提供更多信息。


更新

经过更多阅读,我确信这就是 "expected" 行为,并且以上是正确的。

为了完整起见,我正在寻找的用户("invoker")被称为 "Connected User",如果您正在记录这些事件,它会出现在事件日志中。碰巧我是。事件包含进程的 PID,它也可以在记录中找到,因此我可以从记录中读取 PID,然后找到与其关联的所有事件。

这是一个(非常粗略的)片段:

[int]$logpid = gc $log | % { 
    if ($_ -match '^Process ID:\s(?<pid>\d+)') {
        $Matches['pid']
    }
} | Select-Object -First 1

$events = Get-WinEvent -ProviderName 'Microsoft-Windows-PowerShell' -FilterXPath "*[System[Execution[@ProcessID='$logpid']]]"

(其中 $log 是转录文件的路径)。

这是另一个粗略的片段,[hashtable] 从一些事件中可用的多汁信息中提取出来(它是非结构化文本):

$infohash = $events[0].Properties[0].Value -split '\r?\n' | 
    % -b { $stuff = @{} } -p { 
        $kv = $_ -split '\s+=\s+' 
        $stuff[$kv[0].Trim(' ',"`t")] = $kv[1] 
    } -e { $stuff }

除此之外,您将使用 $infohash.'Connected User' 查找连接到会话的用户,并使用 $infohash.User 查看进程的身份(RunAs 用户)。

这几乎没有经过测试,它需要工作,但希望它能作为一个起点并帮助某人。