web-dev-qa-db-ja.com

非表示/仮想Windowsユーザーアカウントのリスト

非表示のものも含め、Windows 7システム上のユーザーアカウントの包括的なリストを取得する方法を探しています。 User Accountsダイアログ(>control userpasswords2)は通常のユーザーアカウントのみを表示し、ローカルユーザーとグループエディターも通常のユーザーアカウントと管理者や管理者などの標準の非表示/無効なアカウントのみを表示しますゲスト。 Select Users or Groupsダイアログには、Find Nowボタンがあり、ユーザーとグループですが、残念ながら、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とそのilkなど)。

TrustedInstallerは、ユーザー、サービス、および実行可能ファイルであるため、具体的には少し混乱しています。例として使用しているのは、どのユーザーリストにもリストされていないように見える「スーパー非表示」であるためです。 (実験として、「trustedinstaller」をレジストリ全体で検索して、ユーザーとしてリストされている場所を見つけることができるかどうかを確認しましたが、見つかりませんでした。)

明確にするために、私が探しているのは、権限ダイアログなどのユーザー入力フィールドやrunas引数として使用できるすべてのアカウントのリストです。

45
Synetech

すべての可能なアカウントの最終的なリストがあるとは思いません。

権限ダイアログなど、ユーザー入力フィールドで使用できる名前にはさまざまなタイプがあります。

まず、標準のWin32_Accountsです。完全なリストを取得するには、PowerShellセッションを開いて実行します。

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

これらは通常のユーザー、グループ、およびビルトインアカウントです。

Vista以降、通常の管理ツールには表示されないため、仮想アカウントと呼ばれる新しいクラスのアカウントがあります。サービスアカウントと呼ばれることもあり、これらには少なくとも3つの異なるタイプがあります。

  • Windowsサービスアカウント

VistaのすべてのWindowsサービスには仮想アカウントが関連付けられているため、たとえ別のユーザーアカウントで実行されていても、まったく実行されていなくてもです。 NT Service\MSSQLSERVERのように見えます

それらの使用のリストを取得するには:

get-service | foreach {Write-Host NT Service\$($_.Name)}
  • IISアプリケーションプール

ApplicationPoolIdentityの下で実行される各IISアプリケーションプールは、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もあります。すべての仮想マシンアカウントはこのグループのメンバーであるため、これを使用してすべてのVMファイルにアクセス許可を設定できます。

これらの名前は言語固有です。ドイツ語ではNT Virtual Machine\Virtuelle Computerという名前です

  • デスクトップウィンドウマネージャー

Dvm.exeプロセス(デスクトップウィンドウマネージャー)はユーザーWindows Manager\DWM-1の下で実行されます

この場合も、権限ダイアログでこのタイプのユーザーを使用することはできません。 「デスクトップセッション」ごとに1つずつ存在するため、これらを列挙することは実際には不可能です。したがって、2つのRDPセッションを使用する場合、DWM-2に加えてDWM-3およびDVM-1も使用できます。したがって、利用可能なデスクトップの数だけあります。

  • コンピュータ名

場合によっては、通常はActive Directoryドメインの一部であるときに、アクセス許可ダイアログでコンピューター名を使用することもできます。

  • Windows Remoting仮想ユーザー

PowerShellと「JEA(ジャストアドミニストレーション)」を使用して、PSリモートセッションでサーバーに接続すると、一時的な仮想ユーザーが作成される場合があります。

これらの形式は次のとおりです。

winrm virtual users\winrm va_x_computername_username

およびS-1-5-94-で始まるSID

「x」は整数です。

これらのアカウントはNTFSアクセス許可を割り当てるときに使用できますが、これらの可能な仮想ユーザーをすべて一覧表示する方法がわかりません。

JEAセッションでは、whoamiを使用して現在のアカウント名を確認できます。

  • 最終的に:

これらのリストでさえ、すべての可能なアカウントを与えるわけではありません。

たとえば、アプリケーションプールFooBarPoolを作成してからもう一度削除しても、権限ダイアログでIIS APPPOOL\FooBarPoolを使用できるため、どこかに内部リストが必要です。

44
Peter Hahndorf

これは、TrustedInstallerがサービスであり、「ユーザー」オブジェクトではないためです。 Vistaでは、サービスがセキュリティプリンシパルになり、アクセス許可を割り当てることができます。

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

10
surfasb
  1. ハードドライブ上の任意のファイルに移動し、右クリックして、プロパティを選択します。
  2. [セキュリティ]タブに移動し、Editをクリックします

    edit security settings

  3. Add...をクリックします
  4. Advanced...をクリックします

    select users or groups

  5. Object Types...をクリックしてGroupsのチェックを外し、次にOKをクリックします。

    object types

  6. Find Nowをクリックします。これにより、すべての通常のユーザーと組み込みのシステムユーザーが一覧表示されます(Windowsがそれらを呼び出すときに「セキュリティ原則に組み込まれています」)。

    find now

このページに表示されるallアカウントはRun-Asコマンドでは使用できませんが、すべてアクセス許可ダイアログで使用できることに注意してください。

7
nhinkle

Windows Vista以降、サービスはユーザーとして扱われます。つまり、セキュリティ識別子(SID)がすべてのサービスに割り当てられます。これはTrustedInstallerサービスに固有のものではありません。 sc showsidコマンドを使用して、任意のサービスに割り当てられたSIDを表示できます。

使用方法:sc showsid [name]

[〜#〜] description [〜#〜]:任意の名前に対応するサービスSID文字列を表示します。この名前は、既存のサービスまたは存在しないサービスの名前にすることができます。

サービスがシステム上に存在する必要はないことに注意してください。例:

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

または、サービスの場合Windows Management InstrumentationWinmgmt):

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で始まることに注意してください。ここで、80SECURITY_SERVICE_ID_BASE_RIDサブオーソリティに割り当てられています。さらに、この割り当ては確定的です。RIDは使用されず、SIDはすべてのシステムで同じになります(詳細については、この投稿の最後にあるリファレンスを参照してください)。

例として、NT Service\Winmgmtサービスを割り当て、いくつかのファイルへの書き込み権限を与えます。

enter image description here

Windowsは名前Winmgmtに下線を引き、それが有効なIDであることを確認します。

enter image description here

次に、[OK]をクリックして、書き込み権限を割り当てます。

enter image description here

これにより、任意のサービス名をユーザーIDとして使用できることが確認されます。したがって、私はそれらを「超隠し」アカウントとは呼びません:D

詳細については、次の記事をご覧ください。

4
M.S. Dousti

NetQueryDisplayInformation APIを使用して、ユーザー情報フラグのビット単位のチェックと組み合わせることができます。まったく同じ要件があるので、サンプルコードをクックします(MSDN GROUPクエリから変更)。

私が使用したユーザーフラグはUF_NORMAL_ACCOUNT UF_ACCOUNTDISABLE UF_PASSWD_NOTREQD --->これにより、ヒューマンアカウントが取得されます。ヒューマンアカウントには常にパスワードが必要です。

作業コード: http://www.cceye.com/list-system-normal-user-account-only/

1
user3109641