【问题标题】:How to detect serial port sniffer?如何检测串口嗅探器?
【发布时间】:2011-02-23 21:30:11
【问题描述】:

是否可以检测到某个串行端口是否被 Windows 上运行的另一个进程嗅探?

我们有一个应用程序接收一些其他人无法读取的敏感数据。所以,在打开串口之前,我们需要检查一下该端口是否被监听。

我们可以使用CreateFileWindows API函数打开具有独占访问权限的串口,但是如果监视器在我们调用之前运行,它可以读取所有通信(它打开具有共享访问权限的串口,所以我们可以同时打开端口)。为了避免这种情况,尝试检查端口是否被监视并引发异常,警告用户。可以这样做吗?

【问题讨论】:

  • 我不认为应用程序可以打开串行端口以进行共享访问,即使它们可以,我认为您要求独占访问会阻止您获得一个已经打开的端口。如果我想编写软件来监视您的串口使用情况,我会编写一个串口过滤驱动程序。

标签: winapi serial-port


【解决方案1】:

端口嗅探需要过滤器驱动程序,例如 SysInternals 的 PortMon 实用程序。您采取了错误的方法来保护您的应用程序。当有人可以安装过滤器驱动程序时,攻击者拥有足够的权限来完全禁用您的应用程序并用他自己制作的其他东西替换它。试图通过您的应用程序检测和防止信息丢失是没有意义的,系统本身必须得到保护。串行端口可能是您首先要失去的东西,窃听它的电线是微不足道的。

【讨论】:

  • +1,但我不知道他是否会丢失串口,因为只有当攻击者可以物理访问系统时,串口才会受到攻击,此时你放弃所有希望反正。使用以太网线也很简单,但现在地球上的大多数安全通信都是通过它们进行的。
  • 回答问题:假设操作系统是 Windows NT 或变体,如何确定是否安装了过滤器驱动程序,和/或如何确定关联的最顶层设备驱动程序的标识使用给定的串行端口?
  • 非常感谢汉斯,您回答了这个问题。完全安全的系统是理想的情况,但不幸的是我不能确定这一点,主要是因为病毒(我们不担心物理访问)。就像ChrisW说的那样,我想我必须发现是否安装了过滤器驱动程序。
【解决方案2】:

与其丢失串行端口,为什么不encrypt 您的数据。这假设 DTE 和 DCE 都是可编程的。

【讨论】:

  • 此时,连接的设备不会对其数据进行加密。我们已经实施了他们的通信规范的新版本(带有密码学),该版本将很快投入使用。但是,升级所有旧硬件的固件需要一些时间。固件升级不是那么简单,因为它需要将设备交付到工厂。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多