2

オペレーティングシステムは、UACが有効になっているWindows7以降です。呼び出しプロセスには管理者権限があり、UACボックスですでに確認されています。

ユーザーSYSTEMの下に新しいコンソールウィンドウ(cmd.exe)を生成したい(理由は聞かないでください)。SysinternalsなどのPsExecツールを使用してインタラクティブにこれを行うことができますが、ソースコードがないため、これがどのように機能するかを理解する必要があります。

CreateProcessAsUser()を呼び出す必要があり、最初のパラメーター(hToken)をNULLに設定すると正常に機能することを理解していますが、hTokenを取得する方法を知る必要があります。LogonUser()を呼び出すことでそのようなトークンを取得できることは理解していますが、SYSTEMでは取得できません。SYSTEMのトークンを取得するにはどうすればよいですか?

DuplicateTokenEx()を使用することを考えましたが、これには元のトークンが必要であり、持っていません。

プロセスリストをクエリし、SYSTEMプロセスを見つけて、そのトークンを複製するか何かを試みる必要がありますか?PsExecツールまたはこれを正確に実行している他のツールの1つをリバースエンジニアリングしたくありません。

4

2 に答える 2

3

通常、SYSTEMとしてログインするように構成されたサービスをインストールして起動します。OpenProcessTokenその後、とを使用しDuplicateTokenExてトークンのコピーを作成できます。

おそらくSetTokenInformation、トークンのセッションIDをインタラクティブユーザーのセッションIDと一致するように変更するためにを使用する必要があります。これを行うには、オペレーティングシステムの一部として機能する権限が必要なので、サービス自体の内部からこれを行う必要があります。複製トークンを使用する準備ができたらDuplicateHandle、ハンドルを管理プロセスにコピーするために使用できます。または、(適切なオプションを使用して)サービスから直接コマンドシェルを起動することもできます。

于 2012-11-25T22:06:12.667 に答える
0

別の方法として、許可された最大アクセス数でwinlogonプロセスを開き、プロセストークンを(これも許可された最大数で)開いてから、このwinlogonハンドルを偽装権限で複製してみます。win8.1では、これは成功します。その他の場合は、nullまたは独自の管理プロセストークンを使用して、トークンdaclを一時的に変更する必要があります。

于 2014-08-17T20:15:12.707 に答える