このトピックでは、リモート デバッグ中にセキュリティを強化するためのさまざまな手法について説明します。
デバッグ セッションへのアクセスを制御する
デバッガーを使用してリモート デバッグを実行している場合、またはプロセス サーバーまたは KD 接続サーバーを使用している場合は、ローカル ネットワーク上の任意のコンピューターがデバッグ セッションへのアタッチを試みることができます。
TCP、COM、または名前付きパイプ プロトコルを使用している場合は、デバッグ クライアントにパスワードの指定を要求できます。 ただし、このパスワードは転送中に暗号化されないため、これらのプロトコルはセキュリティで保護されません。
デバッグ サーバーのセキュリティを強化する場合は、Secure Sockets Layer (SSL) または Secure Pipe (SPIPE) プロトコルを使用する必要があります。
承認されていないユーザーからの接続を禁止する
remote.exeを使用してリモート デバッグを実行する場合は、/u パラメーターを使用して、承認されていないユーザーからの接続を禁止できます。
ネットワーク セグメントの分離
プロトコル ワイヤ攻撃を回避するには、クライアントとサーバーが実行されているネットワーク セグメントを分離することを検討してください。 たとえば、ローカル ネットワーク スイッチを使用して 2 つのシステムを接続し、インターネットまたは LAN の残りの部分に接続されていないことを確認できます。
最も安全なトランスポートを使用する
最も安全で利用可能な最新バージョンのトランスポートを使用します。 Windows で使用できるセキュリティで保護されたトランスポート プロトコルの詳細については、 TLS/SSL (Schannel SSP) のプロトコルに関する記事を参照してください。
カーネル モードでセキュア モードを使用する
カーネル モード デバッグを実行する場合は、 セキュリティで保護されたモードでデバッガーを実行できます。 これにより、デバッガーがホスト コンピューターに影響を与えるのを防ぐことができますが、ターゲット コンピューターをデバッグする自由度が大幅に低下することはありません。 リモート クライアントにデバッグ セッションへの参加を許可する場合は、セキュリティで保護されたモードをお勧めします。 詳細については、「セキュア モードの機能とセキュア モードのアクティブ化」を参照してください。
ユーザー モードでクライアントの電源を制限する
ユーザー モードでは、セキュア モードは使用できません。 侵入クライアントが Microsoft MS-DOS コマンドを発行し、外部プログラムを実行するのを停止するには、 .noshell (シェル コマンドの禁止) コマンドを発行します。 ただし、クライアントがコンピューターに干渉する方法は他にも多数あります。
セキュリティで保護されたモードと .noshell の両方で、デバッグ クライアントとデバッグ サーバーの両方が特定のアクションを実行できなくなることに注意してください。 クライアントに制限を設定する方法はありませんが、サーバーには適用されません。
プロセス サーバーを忘れた場合に強制終了する
リモート コンピューターでプロセス サーバーを起動すると、プロセス サーバーはサイレントモードで実行されます。 このプロセス サーバーを介してリモート デバッグを実行し、セッションを終了すると、プロセス サーバーは引き続き実行されます。 忘れられたプロセス サーバーは、攻撃の潜在的なターゲットです。 不要なプロセス サーバーは常にシャットダウンする必要があります。 タスク マネージャーまたは Kill.exe ツール を使用して、プロセス サーバーを終了します。