隐藏/虚拟 Windows 用户帐户列表

Syn*_*ech 47 windows-7 user-accounts

我试图找到一种方法来获取 Windows 7 系统上用户帐户的完整列表,包括隐藏的帐户。该用户帐户对话框(>control userpasswords2)只显示正常的用户帐户,甚至是本地用户和组编辑器只显示正常的用户帐户和标准隐藏/禁用的像Administrator和Guest。在选择用户或组对话框中有一个立即查找按钮,它结合了用户和组,但很可惜,它具有相同的内容LUG。

我正在寻找一个更全面的列表,其中包括“超级隐藏”/虚拟用户帐户,例如 TrustedInstaller(或者更准确地说,NT Service\TrustedInstaller —注意不同的“域”)。

我检查过HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList,但SpecialAccounts密钥不存在。

我还检查了HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList,虽然它确实列出了 SystemProfile、LocalService 和 NetworkService 帐户,但它没有其他帐户(例如 TrustedInstaller 及其同类)。

TrustedInstaller 具体来说有点令人困惑,因为它是一个用户、一个服务和一个可执行文件。我以它为例,因为它是“超级隐藏”的,因为它似乎没有列在任何类型的用户列表中。(作为实验,我尝试在整个注册表中搜索“trustedinstaller”以查看是否可以找到将其列为用户的位置,但没有找到。)

明确地说,我正在寻找的是所有可以在用户输入字段中使用的帐户,例如在权限对话框中或作为runas参数。

Pet*_*orf 50

我认为没有所有可能帐户的最终列表。

您可以在用户输入字段中使用不同类型的名称,例如在权限对话框中。

首先是标准的 Win32_Accounts,要获取完整列表,请打开 PowerShell 会话并运行:

get-wmiobject -class "win32_account" -namespace "root\cimv2" | sort caption | format-table caption, __CLASS, FullName
Run Code Online (Sandbox Code Playgroud)

这些是通常的用户、组和内置帐户。

从 Vista 开始,出现了一类新的帐户,称为虚拟帐户,因为它们不会出现在通常的管理工具中。有时也称为服务帐户,其中至少有三种不同类型:

  • Windows 服务帐户

由于 Vista 每个 Windows 服务都有一个与之关联的虚拟帐户,即使它在不同的用户帐户下运行,即使它根本不运行。看起来像NT Service\MSSQLSERVER

要获取这些使用的列表:

get-service | foreach {Write-Host NT Service\$($_.Name)}
Run Code Online (Sandbox Code Playgroud)
  • IIS 应用程序池

在 ApplicationPoolIdentity 下运行的每个 IIS 应用程序池都在一个名为 IIS APPPOOL\NameOfThePool

假设您安装了 IIS 管理脚本工具,您可以运行:

Get-WebConfiguration system.applicationHost/applicationPools/* /* | where {$_.ProcessModel.identitytype -eq 'ApplicationPoolIdentity'} | foreach {Write-Host IIS APPPOOL\$($_.Name)}
Run Code Online (Sandbox Code Playgroud)
  • Hyper-V 虚拟机

在 Server 2008+ 和 Windows 8+ 上,您有 Hyper-V,每个虚拟机都会创建自己的虚拟帐户,如下所示: NT VIRTUAL MACHINE\1043F032-2199-4DEA-8E69-72031FAA50C5

获取列表使用:

get-vm | foreach {Write-Host NT VIRTUAL MACHINE\$($_.Id) - $($_.VMName)}
Run Code Online (Sandbox Code Playgroud)

尽管权限对话框中不接受这些帐户,但您可以将它们与 icacls.exe 一起使用来设置权限。

还有一个特殊的 group NT Virtual Machine\Virtual Machines,它不会出现在其他地方。所有虚拟机帐户都是该组的成员,因此您可以使用它来设置所有 VM 文件的权限。

这些名称是特定于语言的,例如在德语中它被命名为 NT Virtual Machine\Virtuelle Computer

  • 桌面窗口管理器

dvm.exe 进程(桌面窗口管理器)在一个用户下运行 Windows Manager\DWM-1

同样,您不能在权限对话框中使用此类用户。这是不是真的有可能因为一个存在于每一个“桌面会话”要么列举这些,所以使用两个RDP会话时,你也有DWM-2DWM-3DVM-1。所以有多少桌面可用。

  • 计算机名称

在某些情况下,您还可以在权限对话框中使用计算机名称,通常是在属于 Active Directory 域时。

  • Windows 远程虚拟用户

当使用 PowerShell 和“JEA(恰到好处的管理)”并通过 PS 远程会话连接到服务器时,可能会创建一个临时虚拟用户。

它们具有以下格式:

winrm virtual users\winrm va_x_computername_username

和一个以 S-1-5-94-

'x' 是一个整数。

这些帐户可以在分配 NTFS 权限时使用,但我不知道如何列出所有这些可能的虚拟用户。

在 JEA 会话中,您可以使用它whoami来查找当前帐户名称。

  • 最后:

即使这些列表也不会给您所有可能的帐户。

例如,您可以创建一个应用程序池FooBarPool然后再次删除它,您仍然可以IIS APPPOOL\FooBarPool在权限对话框中使用,因此某处必须有一个内部列表。

  • 嗨,列出 IIS 应用程序池用户的 PowerShell 代码对我不起作用,所以我最终使用了`Get-WebConfiguration system.applicationHost/applicationPools/add`。 (3认同)

sur*_*asb 11

这是因为 TrustedInstaller 是一项服务而不是“用户”对象。在 Vista 中,服务现在是安全主体并且可以分配权限。

http://technet.microsoft.com/en-us/magazine/2007.06.acl.aspx

  • *> 我不知道你为什么想要一个完整的安全主体列表。*好奇心。(现在还有人有那个吗……?) (4认同)

nhi*_*kle 8

  1. 转到硬盘驱动器上的任何文件,右键单击并选择属性。
  2. 转到安全选项卡并单击 Edit

    编辑安全设置

  3. 点击 Add...
  4. 点击 Advanced...

    选择用户或组

  5. 单击Object Types...并取消选中Groups,然后单击OK

    对象类型

  6. 单击Find Now。这将列出所有普通用户和内置系统用户(Windows 称之为“内置安全原则”)。

    立即查找

请注意,并非出现在此页面上的所有帐户都可以在 Run-As 命令中使用,尽管它们都可以在权限对话框中使用。

  • 我熟悉那个对话框,并且已经在问题中提到了它:“立即查找”。请注意,虽然“用户”`SYSTEM` 存在(或至少应该存在),但 TrustedInstaller ** 不**。 (4认同)

M.S*_*sti 5

从 Windows Vista 开始,服务被视为用户。即,为每个服务分配一个安全标识符 (SID)。这并非特定于TrustedInstaller服务。您可以使用以下sc showsid命令查看分配给任何服务的 SID :

用法: sc showid [名称]

描述:显示与任意名称对应的服务 SID 字符串。该名称可以是现有或不存在的服务的名称。

请注意,该服务不需要存在于系统上。例子:

C:\> sc showsid TrustedInstaller
NAME: TrustedInstaller
SERVICE SID: S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464
Run Code Online (Sandbox Code Playgroud)

或者,对于服务Windows Management Instrumentation ( Winmgmt):

C:\> sc showsid Winmgmt
NAME: Winmgmt
SERVICE SID: S-1-5-80-3750560858-172214265-3889451188-1914796615-4100997547
Run Code Online (Sandbox Code Playgroud)

最后,对于虚假服务:

C:\> sc showsid FakeService
NAME: FakeService
SERVICE SID: S-1-5-80-3664595232-2741676599-416037805-3299632516-2952235698
Run Code Online (Sandbox Code Playgroud)

请注意,所有 SID 都以 开头S-1-5-80,其中80分配给SECURITY_SERVICE_ID_BASE_RID子权限。此外,此分配是确定性的:不使用 RID,并且所有系统中的 SID 都相同(有关更多信息,请参阅本文末尾的参考资料)。

例如,我将分配NT Service\Winmgmt服务,对某个文件的写权限:

在此处输入图片说明

Windows 在 name 下划线Winmgmt,确认它是一个有效的身份:

在此处输入图片说明

现在,单击“确定”,然后分配写入权限:

在此处输入图片说明

这确认了任何服务名称都可以用作用户身份。因此,我不会称它们为“超级隐藏”帐户:D

有关更多信息,请阅读以下文章: