5

この質問は、私が現在扱っている特権の問題についてのこの質問のフォローアップと続きです。



問題の概要:特権
を持たないドメイン管理者アカウントでプログラムを実行していますが、ローカルマシンで必要です。Debug programs (SeDebugPrivilege)


Klugeyソリューション:
プログラムは、ローカルマシンにサービスとして自分自身をインストールし、サービスを開始できます。このサービスはSYSTEMアカウントで実行されるようになりました。これにより、SeTCBPrivilege特権を使用して、を含む新しいアクセストークンを作成できますSeDebugPrivilege。次に、新しく作成されたトークンを使用して、昇格された権限で最初のプログラムを再起動できます。


私は個人的にこの解決策が好きではありません。サービスのインストールなどのシステム変更をしなくても、管理者として必要な権限を取得できるはずだと思います(一時的なものでも)。

システムの変更を最小限に抑え、できればオンザフライで実行できるソリューションがあることを望んでいます(つまり、自分自身を再起動する必要はありません)。既知のSYSTEMプロセス(csrss.exeなど)を実行しようLogonUserとして失敗しました(取得しようとしている特権がないとプロセスのハンドルを取得できないため、失敗します)。SYSTEMOpenProcessTokenOpenProcessPROCESS_QUERY_INFORMATION

私は、この問題の代替解決策を考え出そうとしているところです。ホストマシンで特権トークンを取得してこのプログラムに偽装する簡単な方法があることを望んでいましたが、方法が見つかりませんでした。



誰かがこれを回避する方法を知っているか、うまくいくかもしれないことについての提案さえあれば、私に知らせてください。私は本当に助けに感謝します、ありがとう!

4

1 に答える 1

6

設計上、NT AUTHORITY\SYSTEM 権限を持つ別のプロセスによって開始されない限り、プロセスは NT AUTHORITY\SYSTEM 権限を取得できません。Service Control Manager 自体は、システムの起動時にカーネルによって起動されるため、このサービスは回避策です。

残念ながら、オペレーティング システムは、ユーザーがしようとしていることを正確に防ぐように設計されています。後でサービスを削除できるようにしたい場合は、問題のユーザーにローカル マシンの SeDebugPrivilege を付与し、サービス自体をアンインストールします。

さらに良いのは、メモリを変更するプログラムの DACL を変更して、管理者が SeDebugPrivilege なしでそのメモリにアクセスできるようにすることです。その後、特権を取得する必要はまったくありません。

EDIT2:さらに良いことに、最初に共有メモリを使用してください。それがそのためです。

于 2010-06-07T18:54:20.597 に答える