2011-02-23 9 views
0

シリアルポートがWindows上で実行されている別のプロセスによってスニッフィングされているかどうかを検出できますか?シリアルポートスニファを検出するには?

私たちは、他の人が読むことができない機密データを受け取るアプリケーションを持っています。したがって、シリアルポートを開く前に、ポートが監視されているかどうかを確認する必要があります。

Windows API関数を使用すると、排他アクセス権を持つシリアルポートを開くことができますが、呼び出し前にモニタを実行するとすべての通信を読み取ることができます(共有アクセス権でシリアルポートを開くので、同時にポートを開くことができます)。これを回避するには、ポートが監視されているかどうかをチェックして例外を発生させ、ユーザーに警告します。これは可能ですか?

+0

私は、アプリケーションが共有アクセスのためにシリアルポートを開くことはできないと思っていますが、排他的アクセスを求めると、既に開いているものが与えられているとは思えません。私があなたのシリアルポートの使い方を偵察するソフトウェアを書こうと思ったら、私はシリアルポートフィルタドライバを書いていました。 – ChrisW

答えて

5

ポートスニッフィングには、SysInternalsのPortMonユーティリティなどのフィルタドライバが必要です。アプリケーションを保護するために間違ったアプローチを採用しています。誰かがフィルタドライバをインストールできると、攻撃者はあなたのアプリケーションを完全に無効にし、それを自分で作ったものに置き換えるための十分な特権を持っています。あなたのアプリを通じて情報の損失を検出して防止しようとするのは無意味ですが、システム自体を保護する必要があります。おそらく最初にシリアルポートを紛失しなければならないでしょう。ワイヤをタップするのは簡単です。

+0

+1しかし、シリアルポートを失う必要があることはわかりません。攻撃者がシステムに物理的にアクセスできれば、脆弱になります。イーサネットワイヤーをタップすることも簡単ですが、地球上の安全な通信の大半は現在、それらを横断しています。 –

+0

質問に答えるには、O/SがWindows NTまたはその亜種であると仮定し、フィルタドライバがインストールされているかどうか、および/またはシリアルポートに関連付けられている一番上のデバイスドライバの識別方法を判断する方法? – ChrisW

+0

ハンスさん、本当にありがとう、この質問に答えました。システムを完全に保護するのは理想的な状況ですが、残念ながら私はこのことを確かめることができません。これは主にウイルスのためです(私たちは物理的なアクセスを心配していません)。 ChrisWが言ったように、フィルタードライバーがインストールされているかどうかを調べなければならないと思います。 – Juliano

1

なぜシリアルポートを失うのではなく、encryptデータ。これは、DTEとDCEの両方がプログラム可能であることを前提としています。

+1

この時点で、接続されたデバイスはデータを暗号化しません。私たちは、すぐに現場に入る通信仕様の新しいバージョンを実装しました。ただし、従来のハードウェアのファームウェアをすべてアップグレードするまでには時間がかかります。ファームウェアのアップグレードは、設備が工場に納品されることを要求するため、あまり簡単ではありません。 – Juliano

関連する問題