web-dev-qa-db-ja.com

「ネットワークサービス」として「実行」するにはどうすればよいですか?

別のアカウントとしてプロセスを実行しようとしています。私はコマンドを持っています:

runas "/user:WIN-CLR8YU96CL5\network service" "abwsx1.exe"

しかし、これはパスワードを要求します。ただし、ネットワークサービスにパスワードが設定されていません。

私がやろうとしていることは可能ですか?

74
Exitos

昇格されたコマンドプロンプトから実行するSysInternalsの PsExec.exe を使用します。

例えばこれにより、NETWORK SERVICEとして実行される新しいコマンドプロンプトが開きます。

psexec -i -u "nt authority\network service" cmd.exe 

これにより、ローカルシステムとして実行されます。

psexec -i -s cmd.exe 

これらを確認するには、cmdプロンプトからwhoamiを実行します。

こちらもご覧ください:

108
Rory

タスクスケジューラで、NETWORK SERVICEユーザーの下でアプリケーションを実行するタスクを作成します。その後、コマンドラインからタスクを実行できます

 schtasks/run/TN "taskname" 

どこ タスク名 タスクの名前です。

13
mhenry1384

通常、Windowsサービスのサービスアカウントとして偽装できるのは、 この投稿 言及のようです。

秘Theは、ローカルシステムとしてコードを実行し、そこからパスワードなしで適切なユーザー名を使用してサービスアカウントを偽装することです。ローカルシステムアカウントとしてコードを実行する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

自分のユーザーコンテキストでそれを行おうとすると、そのような試みは失敗します。

4
Lex Li

私はテストしました

PsExec -i -s cmd.exe

そして

PsExec -i -u "nt authority\network service" cmd.exe

psExec64-v2.2では、win10-home-x64-10.0.14393およびwin10-pro-x64-10.0.15063で通常のコンソールを使用するには失敗し、昇格したコンソールを使用すると正常に動作します

1
color-boy

これは古いスレッドですが、この問題の一番の結果であり、Windows Serverに追加のツールをインストールせずにPowerShellを使用してコマンドを実行できるようにしたかったのです。スケジュールされたタスクを作成し、実行してから削除する次のPowerShellスクリプトを思いつきました。また、別のユーザーアカウントでコマンドを実行できるように書かれています。

function InstallDotNetCoreGlobalTool($PackageId, $Action = "install", $User = "NT AUTHORITY\NETWORK SERVICE", $Password = "")
{
    $TaskName = "AzureDotNetCoreGlobalToolConfiguration"
    $Command = "dotnet.exe"
    $Arguments = "tool $Action -g " + $PackageId
    $TaskAction = New-ScheduledTaskAction -Execute $Command -Argument $Arguments

    Write-Host "Setting up scheduled task to run" $Command $Arguments

    Register-ScheduledTask -TaskName $TaskName -User $User -Action $TaskAction
    Start-ScheduledTask -TaskName $TaskName

    Write-Host ""
    Write-Host "Waiting on scheduled task to complete."

    while ((Get-ScheduledTask -TaskName $TaskName).State  -ne 'Ready') 
    {
      # keep waiting
    }

    Write-Host ""

    If((Get-ScheduledTask $TaskName | Get-ScheduledTaskInfo).LastTaskResult -eq 0)
    {
        Write-Host $PackageId $Action "completed successfully"
    }
    else
    {
        If ($Action -eq "install")
        {
            Write-Host $PackageId "failed to $Action. Ensure the proper dependencies have been installed or that it isn't already installed."
        }
        Else {
            Write-Host $PackageId "failed to $Action. It may not currently be installed."
        }        
    }

    Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
}

InstallDotNetCoreGlobalTool "Amazon.Lambda.Tools" "uninstall"
0
kmcbrearty