Список прихованих / віртуальних облікових записів користувачів Windows


44

Я намагаюся знайти спосіб отримати вичерпний список облікових записів користувачів у системі Windows 7, включаючи приховані. User Accounts діалог ( >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аргументу.


Відповіді:


43

Я не думаю, що існує остаточний перелік усіх можливих рахунків.

Існують різні типи імен, які ви можете використовувати в полі введення користувача, наприклад, у діалогах дозволів.

Спочатку до стандартних Win32_Accounts, щоб отримати повний список, відкрийте сеанс PowerShell і запустіть:

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

Це звичайні користувачі, групи та вбудовані акаунти.

З Vista існує новий клас облікових записів, який називається віртуальними обліковими записами, оскільки вони не відображаються у звичайних інструментах управління. Іноді також називають облікові записи служб, і є щонайменше три різних типи:

  • Облікові записи служби Windows

Оскільки в Vista кожен сервіс Windows має з ним пов’язаний віртуальний обліковий запис, навіть він працює під іншим обліковим записом користувача, навіть якщо він взагалі не працює. Це виглядає як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

На серверах 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, яка не з’являється в іншому місці. Усі облікові записи віртуальної машини є членами цієї групи, тому ви можете використовувати це для встановлення дозволів для всіх файлів VM.

Ці назви є специфічними для мови, наприклад, німецькою мовою вона названа NT Virtual Machine\Virtuelle Computer

  • Менеджер вікон робочого столу

Процес dvm.exe (Менеджер вікон робочого столу) працює під користувачем Windows Manager\DWM-1

Знову не можна використовувати цей тип користувачів у діалогових вікнах дозволів. Перерахувати їх не представляється можливим, оскільки існує один для кожного "сеансу робочого столу", тож при використанні двох сеансів RDP у вас є DWM-2і DWM-3на додаток до DVM-1. Таким чином, є стільки, скільки є настільних комп'ютерів.

  • Комп'ютерні імена

У певних випадках ви також можете використовувати імена комп'ютерів у діалоговому вікні дозволів, як правило, коли вони є частиною домену Active Directory.

  • Видалення віртуальних користувачів Windows

Під час використання PowerShell та 'JEA (Просто достатнє адміністрування)' та підключення до сервера за допомогою віддаленого сеансу PS може бути створений тимчасовий віртуальний користувач.

вони мають такий формат:

winrm virtual users\winrm va_x_computername_username

і SID, який починається з S-1-5-94-

'x' - ціле число.

Ці облікові записи можна використовувати при призначенні дозволів NTFS, але я не знаю, як перелічити всіх цих можливих віртуальних користувачів.

Перебуваючи в сесії JEA, ви можете використовувати whoamiдля з'ясування назви поточного рахунку.

  • нарешті:

Навіть ці списки не дають вам усіх можливих рахунків.

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


Дуже хороша! Перший запит повертав спеціальні «користувачів» , як everyone, restrictedі т.д., і ваше обговорення NT Service\*рахунків пояснює іншим , як TrustedInstaller. Ви також охоплювали більш екзотичні особливі випадки, але схоже, що всі загальні випадки враховуються.
Synetech

@Ahmed - які користувачі? Якщо у вас є проблеми, вам слід створити нове запитання та детально описати там свою проблему. Це не місце для цього.
Пітер Гандорф

Вибачте, я видалив свій коментар. Ось моє запитання, якщо цікаво.
Ахмед

3
Привіт, код PowerShell для переліку користувачів IIS App Pool не працював для мене, тому я Get-WebConfiguration system.applicationHost/applicationPools/addнатомість використовував замість цього.
Тахір Хассан

1
Чудова відповідь. Тут є додаткова інформація від MS про облікові записи сервісів
CJBS

10

Це відбувається тому, що TrustedInstaller - це сервіс, а не "користувальницький" об'єкт. З Vista, Служби тепер є принципами безпеки, і їм можна призначити дозволи.

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


Так; саме про це я і говорю. Я шукаю вичерпний перелік речей, на які можна отримати дозволи, будь то користувачі, послуги чи що у вас є. Чи є повний перелік "керівників безпеки"?
Synetech

Я не думаю, що існує спосіб скористатися ACL-адресами та знайти ПОВНИЙ список принципів безпеки. Я не впевнений, чому ви хочете в першу чергу повний перелік директорів безпеки. Технічно інсталятор модулів Windows (ім'я служби TRUSTEDINSTALLER) працює під обліковим записом Local SYSTEM.
surfasb

4
> Я не впевнений, чому ви хочете в першу чергу повний перелік принципів безпеки. Цікавість. (У когось цього немає вже сьогодні ...?)
Synetech

Ви можете вказати на цю цікавість до бібліотеки MSDN.
surfasb

7
  1. Перейдіть до будь-якого файлу на жорсткому диску, клацніть правою кнопкою миші та виберіть властивості.
  2. Перейдіть на вкладку безпеки та натисніть Edit

    редагувати параметри безпеки

  3. Клацніть Add...
  4. Клацніть Advanced...

    виберіть користувачів або групи

  5. Клацніть Object Types...та зніміть прапорці Groups, а потім клацнітьOK

    типи об'єктів

  6. Клацніть Find Now. У цьому списку будуть перераховані всі постійні користувачі та вбудовані користувачі системи ("вбудовані в принципи безпеки", як їх називає Windows).

    знайти зараз

Зауважте, що не всі облікові записи, що з’являються на цій сторінці, можуть використовуватися в команді Run-As, хоча всі вони можуть використовуватися в діалоговому вікні дозволів.


4
Я знайомий із цим діалогом і вже згадував його у запитанні: «знайди зараз». Зауважте, що поки «користувач» SYSTEMзнаходиться (або принаймні повинен бути) там, TrustedInstaller ні .
Synetech

Вибачте, я думав, що ви посилаєтесь на find nowкнопку на панелі керування "Користувачі та групи", яка схожа, але трохи відрізняється. Наскільки мені відомо, єдиний обліковий запис, який тут не відображається, - це TrustedInstaller. Це пов’язано з тим, що Microsoft робить все можливе, щоб не дозволяти вам робити що-небудь з обліковим записом TrustedInstaller. Я дам вам знати, якщо я думаю про будь-які інші способи зробити це.
nhinkle

Ось чому я прошу; Мені цікаво, що існують інші незадокументовані користувачі…
Synetech

Є стаття Microsoft TechNet з інформацією про більшість із них, але TrustedInstaller там не знаходиться. support.microsoft.com/kb/243330
nhinkle

1
не забудьте встановити Locations...свій комп’ютер, якщо ви перебуваєте в домені (але хочете лише комп'ютер).
n611x007

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
Дуже цікаво. Спасибі за інформацію!
Synetech

1

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

Прапор користувача, який я використовував, це UF_NORMAL_ACCOUNT UF_ACCOUNTDISABLE UF_PASSWD_NOTREQD ---> це гарантує отримання облікового запису Human, для людського акаунта завжди потрібен пароль.

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


Будь ласка, розгорніть свою відповідь, щоб безпосередньо містити релевантну інформацію на відповідне питання. Якщо це посилання коли-небудь перестане працювати, ваша відповідь буде не такою корисною.
Mxx
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.