別のアカウントとしてプロセスを実行しようとしています。私はコマンドを持っています:
runas "/user:WIN-CLR8YU96CL5\network service" "abwsx1.exe"
しかし、これはパスワードを要求します。ただし、ネットワークサービスにパスワードが設定されていません。
私がやろうとしていることは可能ですか?
昇格されたコマンドプロンプトから実行するSysInternalsの PsExec.exe を使用します。
例えばこれにより、NETWORK SERVICEとして実行される新しいコマンドプロンプトが開きます。
psexec -i -u "nt authority\network service" cmd.exe
これにより、ローカルシステムとして実行されます。
psexec -i -s cmd.exe
これらを確認するには、cmdプロンプトからwhoami
を実行します。
こちらもご覧ください:
タスクスケジューラで、NETWORK SERVICEユーザーの下でアプリケーションを実行するタスクを作成します。その後、コマンドラインからタスクを実行できます
schtasks/run/TN "taskname"
どこ タスク名 タスクの名前です。
通常、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
自分のユーザーコンテキストでそれを行おうとすると、そのような試みは失敗します。
私はテストしました
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で通常のコンソールを使用するには失敗し、昇格したコンソールを使用すると正常に動作します
これは古いスレッドですが、この問題の一番の結果であり、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"