41

Я пытаюсь найти способ получить полный список учетных записей пользователей в системе Windows 7, включая скрытые. В диалоговом окне « Учетные записи пользователей » (>control userpasswords2) отображаются только обычные учетные записи пользователей, и даже в редакторе « Локальные пользователи и группы» отображаются только обычные учетные записи пользователей и стандартные скрытые / отключенные, такие как «Администратор» и «Гость». В диалоговом окне « Выбор пользователей или групп » есть кнопка « Найти сейчас» , которая объединяет пользователей и группы, но, увы, содержит то же содержимое, что и 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 определенно немного сбивает с толку, потому что это пользователь, служба и исполняемый файл. Я использую его в качестве примера, потому что он «супер скрытый» в том смысле, что он, кажется, не указан ни в каком списке пользователей. (В качестве эксперимента я попытался выполнить поиск по «реестру доверенных лиц» по всему реестру, чтобы выяснить, смогу ли я найти место, где он указан как пользователь, но не нашел ни одного.)

Чтобы было ясно, я ищу список всех учетных записей, которые можно использовать в поле ввода пользователя, например, в диалоговых окнах разрешений или в качестве аргумента runas .

5 ответов5

40

Я не думаю, что есть окончательный список всех возможных аккаунтов.

Существуют разные типы имен, которые вы можете использовать в пользовательском поле ввода, например, в диалоговых окнах разрешений.

Прежде всего, это стандартные Win32_Accounts, чтобы получить полный список, откройте сеанс PowerShell и запустите:

get-wmiobject -class "win32_account" -namespace "root\cimv2" | sort caption | format-table caption, __CLASS, FullName

Это обычные пользователи, группы и встроенные учетные записи.

Начиная с Vista, существует новый класс учетных записей, называемый виртуальными учетными записями, поскольку они не отображаются в обычных инструментах управления. Иногда также называются служебными учетными записями, и существует как минимум три различных типа:

  • Учетные записи служб Windows

С каждой операционной системой Windows Vista связана виртуальная учетная запись, даже если она работает под другой учетной записью пользователя, и даже если она вообще не запускается. Похоже, NT Service\MSSQLSERVER

Чтобы получить список тех, кто использует:

get-service | foreach {Write-Host NT Service\$($_.Name)}
  • Пулы приложений IIS

Каждый пул приложений IIS, который запускается под ApplicationPoolIdentity, запускается под специальной учетной записью IIS APPPOOL\NameOfThePool

Предполагая, что у вас установлены инструменты сценариев управления IIS, вы можете запустить:

Get-WebConfiguration system.applicationHost/applicationPools/* /* | where {$_.ProcessModel.identitytype -eq 'ApplicationPoolIdentity'} | foreach {Write-Host IIS APPPOOL\$($_.Name)}
  • Виртуальные машины 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)}

Хотя эти учетные записи не принимаются в диалоговом окне разрешений, вы можете использовать их с icacls.exe для установки разрешений.

Существует также специальная группа NT Virtual Machine\Virtual Machines , которая больше нигде не отображается. Все учетные записи виртуальных машин являются членами этой группы, поэтому вы можете использовать это для установки разрешений для всех файлов виртуальных машин.

Эти имена зависят от языка, например, на немецком языке они называются NT Virtual Machine\Virtuelle Computer

  • Диспетчер окон рабочего стола

Процесс dvm.exe (менеджер окон рабочего стола) выполняется под пользователем Windows Manager\DWM-1

Опять же, вы не можете использовать этот тип пользователей в диалоговых окнах разрешений. Перечислить их на самом деле также невозможно, поскольку они существуют для каждого «сеанса рабочего стола», поэтому при использовании двух сеансов RDP у вас также есть DWM-2 и DWM-3 в дополнение к DVM-1 . Таким образом, существует столько же, сколько доступно рабочих столов.

  • Имена компьютеров

В некоторых случаях вы также можете использовать имена компьютеров в диалоговом окне разрешений, как правило, будучи частью домена Active Directory.

Даже эти списки не дают вам все возможные учетные записи.

Например, вы можете создать пул приложений FooBarPool затем удалить его снова, вы все равно можете использовать IIS APPPOOL\FooBarPool в диалоге разрешений, поэтому где-то должен быть внутренний список.

10

Это связано с тем, что TrustedInstaller является сервисом, а не объектом пользователя. В Vista службы теперь являются участниками безопасности и им могут быть назначены разрешения.

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

7
  1. Перейдите к любому файлу на жестком диске, щелкните правой кнопкой мыши и выберите "Свойства".
  2. Перейдите на вкладку "Безопасность" и нажмите « Edit

    изменить настройки безопасности

  3. Нажмите Add...
  4. Нажмите Advanced...

    выберите пользователей или группы

  5. Нажмите Object Types... и снимите флажок Groups , затем нажмите OK

    типы объектов

  6. Нажмите Find Now . В этом списке будут перечислены все обычные пользователи и пользователи встроенной системы ("встроенные принципы безопасности", как их называет Windows).

    найти сейчас

Обратите внимание, что не все учетные записи, отображаемые на этой странице, могут использоваться в команде «Запуск от имени», хотя все они могут использоваться в диалоговом окне разрешений.

4

Начиная с Windows Vista, сервисы рассматриваются как пользователи. То есть идентификатор безопасности (SID) присваивается каждой службе. Это не относится к службе TrustedInstaller . Вы можете просмотреть SID, назначенный любому сервису, используя команду sc showsid :

ИСПОЛЬЗОВАНИЕ: sc showid [имя]

ОПИСАНИЕ: отображает строку SID службы, соответствующую произвольному имени. Имя может быть именем существующего или несуществующего сервиса.

Обратите внимание, что нет необходимости в существовании службы в системе. Примеры:

C:\> sc showsid TrustedInstaller
NAME: TrustedInstaller
SERVICE SID: S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464

или, для службы Windows Management Instrumentation (Winmgmt):

C:\> sc showsid Winmgmt
NAME: Winmgmt
SERVICE SID: S-1-5-80-3750560858-172214265-3889451188-1914796615-4100997547

и, наконец, для поддельного сервиса:

C:\> sc showsid FakeService
NAME: FakeService
SERVICE SID: S-1-5-80-3664595232-2741676599-416037805-3299632516-2952235698

Обратите внимание, что все идентификаторы SID начинаются с S-1-5-80 , где 80 назначено суб-полномочия SECURITY_SERVICE_ID_BASE_RID . Более того, это назначение является детерминированным: идентификаторы RID не используются, и идентификатор SID будет одинаковым во всех системах (для получения дополнительной информации см. Ссылки в конце этого поста).

В качестве примера я назначу службу NT Service\Winmgmt , разрешение на запись в некоторый файл:

Windows подчеркивает имя Winmgmt , подтверждая, что это действительный идентификатор:

Теперь нажмите OK, а затем назначьте разрешение на запись:

Это подтверждает, что любое имя службы может использоваться в качестве идентификатора пользователя. Поэтому я бы не назвал их «скрытыми за ужином» аккаунтами:D

Для получения дополнительной информации, пожалуйста, прочитайте следующие статьи:

1

Вы можете использовать NetQueryDisplayInformation API, в сочетании с побитовой проверкой флага информации о пользователе. У меня точно такое же требование, поэтому я готовлю пример кода (модифицированный из запроса MSDN GROUP).

Я использовал пользовательский флаг UF_NORMAL_ACCOUNT UF_ACCOUNTDISABLE UF_PASSWD_NOTREQD ---> это гарантирует, что мы получим учетную запись Human, учетная запись Human всегда требует пароль.

рабочий код по адресу: http://www.cceye.com/list-system-normal-user-account-only/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .