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


44

私は、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やそのilkなど)はありません。

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

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


回答:


43

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

アクセス許可ダイアログなど、ユーザーの入力フィールドで使用できる名前にはさまざまな種類があります。

最初は標準の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-2DWM-3に加えてがありDVM-1ます。そのため、利用可能なデスクトップと同じ数だけあります。

  • コンピューター名

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

  • Windowsリモート仮想ユーザー

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

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

winrm virtual users\winrm va_x_computername_username

で始まるSID S-1-5-94-

「x」は整数です。

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

JEAセッションwhoami中に、現在のアカウント名を見つけるために使用できます。

  • 最後に:

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

たとえば、アプリケーションプールを作成してFooBarPoolから再度削除することができますIIS APPPOOL\FooBarPoolが、アクセス許可ダイアログで引き続き使用できるため、どこかに内部リストが必要です。


非常に素晴らしい!最初のクエリは次のように特別な「ユーザー」返されeveryonerestrictedなど、との話し合いNT Service\*のアカウントは次のように他人を説明しますTrustedInstaller。また、よりエキゾチックな特殊なケースについても説明しましたが、一般的なケースはすべて説明されているようです。
Synetech

@Ahmed-どのユーザー?問題がある場合は、新しい質問を作成し、そこで問題を詳細に説明する必要があります。これはその場所ではありません。
ピーターハーンドルフ

申し訳ありませんが、コメントを削除しました。好奇心が強い場合、ここに私の質問があります。
アーメド

3
こんにちは、IISアプリプールユーザーを一覧表示するPowerShellコードが機能しなかったため、Get-WebConfiguration system.applicationHost/applicationPools/add代わりに使用しました。
タヒルハッサン

1
素晴らしい答え。ここでのサービスアカウントのMSからの追加情報があります: docs.microsoft.com/en-us/windows/security/identity-protection/...
CJBS

10

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

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


はい; それがまさに私が話していることです。私は、ユーザー、サービス、またはあなたが何を持っているかにかかわらず、許可を与えることができるものの包括的なリストを探しています。「セキュリティプリンシパル」の完全なリストはありますか?
Synetech

ACLを利用してセキュリティプリンシパルの完全なリストを見つける方法はないと思います。そもそもセキュリティプリンシパルの完全なリストが必要な理由はわかりません。技術的には、Windowsモジュールインストーラー(TRUSTEDINSTALLERのサービス名)はローカルシステムアカウントで実行されます。
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アカウントとのやり取りを防ぐために最大限努力しているためです。これを行う他の方法を考えたら、お知らせします。
ヒンクル

それが私が尋ねている理由です。文書化されていないユーザーが他にどんな人がいるのだろう…
Synetech

それらのほとんどに関する情報を含むMicrosoft TechNetの記事がありますが、TrustedInstallerはそこにありません。support.microsoft.com/kb/243330
nhinkle

1
Locations...ドメインにいる場合は、コンピューターに設定することを忘れないでください(ただし、コンピューターのみが必要です)。
n611x007

4

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

使用法: sc showsid [名前]

説明:任意の名前に対応するサービス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-8080に割り当てられSECURITY_SERVICE_ID_BASE_RIDたサブ権威。さらに、この割り当ては決定的です。RIDは使用されず、SIDはすべてのシステムで同じになります(詳細については、この投稿の最後のリファレンスを参照してください)。

例として、私はNT Service\Winmgmtサービスを割り当て、いくつかのファイルに書き込み許可を与えます:

ここに画像の説明を入力してください

Windowsは名前Winmgmtに下線を付け、有効なIDであることを確認します。

ここに画像の説明を入力してください

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

ここに画像の説明を入力してください

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

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


1
とても興味深い。情報のおかげで!
Synetech

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/


回答を展開して、手元の質問に関連する情報を直接含めてください。このリンクが機能しなくなった場合、回答はあまり役に立ちません。
Mxx
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.