別のアカウントとしてプロセスを実行しようとしています。私はコマンドを持っています:
runas "/user:WIN-CLR8YU96CL5\network service" "abwsx1.exe"
しかし、これはパスワードを要求します。ただし、ネットワーク サービスにはパスワードが設定されていません。
私がやろうとしていることは可能ですか?
別のアカウントとしてプロセスを実行しようとしています。私はコマンドを持っています:
runas "/user:WIN-CLR8YU96CL5\network service" "abwsx1.exe"
しかし、これはパスワードを要求します。ただし、ネットワーク サービスにはパスワードが設定されていません。
私がやろうとしていることは可能ですか?
管理者特権でのコマンド プロンプトから実行する SysInternals のPsExec.exeを使用します。
たとえば、これにより、NETWORK SERVICE として実行される新しいコマンド プロンプトが開きます。
psexec -i -u "nt authority\network service" cmd.exe
これにより、LOCAL SYSTEM として実行されます。
psexec -i -s cmd.exe
whoami
これらは、cmd プロンプトから実行することで確認できます。
以下も参照してください。
通常、この投稿で言及されているように、Windows サービスからのサービス アカウントとしてのみ偽装できます。
秘訣は、ローカル システムとしてコードを実行することです。そこから、パスワードなしで適切なユーザー名を使用して、サービス アカウントを偽装できます。ローカル システム アカウントとしてコードを実行する 1 つの方法は、以下に示す手法 (この元の投稿から抜粋) を使用してコマンド ライン シェルを作成し、そこからアセンブリを実行することです。コードを呼び出す
System.Diagnostics.Debugger.Break()
と、デバッグできます。ローカル システム アカウントで実行されるコマンド ライン シェルを作成するには、新しいコマンド ライン ウィンドウを開き、次のように入力します。
c:\sc create testsvc binpath= "cmd /K start" type= own type= interact
に続く:
c:\sc start testsvc
新しいコマンド ウィンドウが開いているはずです。そのウィンドウで application.exe を実行します。ビルトイン システム ユーザー アカウントとして実行していることがわかります。テストが終了したら、次のように入力して、作成したテスト サービスを削除できます。
c:\sc delete testsvc
独自のユーザー コンテキストでそれを行おうとすると、そのような試みは失敗するはずです。