タイトルは私の質問を要約したものですが、詳しく説明します。管理者権限なしで実行されているプロセスは、他のプロセスのメモリ空間にアクセスできてはならず、もちろんその実行を停止できるべきではないと常に考えてきました。
ただし、非特権アカウントで実行されているビジュアル スタジオでは、同じアカウントで実行されているいくつかのプロセスにアタッチしてデバッグすることができます。なぜこれが可能なのですか?運用システムはこれを防ぐべきではありませんか?
よろしくお願いします
タイトルは私の質問を要約したものですが、詳しく説明します。管理者権限なしで実行されているプロセスは、他のプロセスのメモリ空間にアクセスできてはならず、もちろんその実行を停止できるべきではないと常に考えてきました。
ただし、非特権アカウントで実行されているビジュアル スタジオでは、同じアカウントで実行されているいくつかのプロセスにアタッチしてデバッグすることができます。なぜこれが可能なのですか?運用システムはこれを防ぐべきではありませんか?
よろしくお願いします
アクセスするには、他のプロセスのメモリ空間など、..でプロセスを開く必要がありPROCESS_VM_READ|PROCESS_VM_OPERATION|PROCESS_VM_WRITE
ます..これは必須ではありませんSE_DEBUG_PRIVILEGE
-プロセスがデバッガーと同じセッションで実行されている場合、同じトークンを持っている必要があります-通常、セキュリティ記述子(DACL
)は、このデバッガー用に開きます。これは絶対に予想されます。ここで質問です-デバッグのためにフルアクセスでプロセスを開くことができますか? この「ピア」プロセス(同じ権限で同じユーザーの下で実行されている)の場合-なぜですか?
およびDebugActiveProcess関数から
デバッガーは、ターゲット プロセスへの適切なアクセス権を持っている必要があり、PROCESS_ALL_ACCESSのプロセスを開くことができる必要があります。 DebugActiveProcessは、デバッガーにフル アクセス以外の権限を付与するセキュリティ記述子を使用してターゲット プロセスが作成されている場合、失敗する可能性があります。デバッグ プロセスにSE_DEBUG_NAME権限が付与され、有効になっている場合は、任意のプロセスをデバッグできます。
そして自分自身からのコメント - 保護されたプロセスを除いて、 DebugActiveProcessが呼び出されたときにデバッガーのみがプロセスを保護した場合(保護レベルが低くない) (はい、これは保護されたプロセスをデバッグすることも可能です)