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


83

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

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

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

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

回答:


124

使用PSEXEC.EXE昇格したコマンドプロンプトから実行しているSysinternalsの、。

たとえば、これにより、ネットワークサービスとして実行されている新しいコマンドプロンプトが開きます。

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

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

psexec -i -s cmd.exe 

これらwhoamiは、cmdプロンプトから実行することで確認できます。

参照:


@ stej-私には向いていません。管理者特権のコマンドプロンプトから実行してみてください。つまり、管理者としてコマンドプロンプトを実行します。
ロリー2015年

わかりません。psexecのバージョンは2.11です。また、昇格されたコンソールからAzureクラウドサービスとして実行されているwinserver 2012でも試してみましたが、それでもパスワードを要求されます。
stej 2015年

私にもパスワードを要求します。
アンダーソンフォルタレザ2015年

1
これは64ビットマシンでは機能しないようです。回避策は、代わりにdevxexecを使用することです。これは機能します。
mellamokb 2015

3
@ロリー:私はそれを理解したと思います。ネットワークサービス(少なくともAzureロール内)の場合、cmd.exeへの完全な正確なパスを指定する必要があるようです。何らかの理由で、デフォルトのPATH変数か何か...持っていない
mellamokb

15

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

schtasks / run / TN "taskname"

ここで、tasknameはタスクの名前です。


nt Authority \ localserviceを使用してこのタスクを作成する方法は?
コバイア2013年

mmc.exeをローカルサービスとして実行することは可能ですか?
コバイア2013年

6

この投稿で言及されているように、通常は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

独自のユーザーコンテキストでこれを実行しようとすると、そのような試行は失敗するはずです。


3

私はテストしました

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で通常のコンソールを使用するには失敗し、昇格したコンソールを使用すると正常に動作します


このアプローチは、cmd.exeとPowershell.exeの両方で機能する「whoami」コマンドを使用して確認できます。
ToreAurstad19年

1

これが古いスレッドであることはわかっていますが、これがこの問題の最大の結果であり、WindowsServerに追加のツールをインストールせずに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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.