在Windows系统中,有没有一种方法可以监视发送UDP数据包的进程(源/目标IP和端口)?

9
我差不多是无意中发现我的电脑在与波兰的一台机器发送和接收UDP数据包。并不是我对波兰有任何问题,我只是不知道为什么我的笔记本需要与那里的服务器通信。反向DNS只显示ISP向某个终端用户提供地址。使用Wireshark,我可以监视这些消息,但它们很难被解密,因为它们可能已经加密了。所有从我的机器发送的数据包都具有相同的源端口,因此显然发送它们的应用程序打开了此UDP套接字以使用它。我正在寻找以下方法:
1)枚举系统中所有当前打开的套接字,包括创建它的进程,以及TCP和UDP所绑定的端口和地址。
2)因为应用程序可以打开这些套接字,使用它们,然后立即关闭它们,所以我希望能够找到(或者甚至编写)一个程序,一旦启动就会在每次创建套接字时得到通知,或者更重要的是当绑定到源和/或目标地址和端口时得到通知。对于UDP,我还希望能够监视/跟踪该套接字发送消息的目标IP地址和端口。
我不想监视流量本身,如果想查看流量,我有Wireshark。我想能够交叉引用以发现生成数据包的应用程序。我想知道它是否来自我信任的进程,或者是否需要进一步调查。 有没有人知道可以做到这一点的应用程序(针对Windows平台)?如果没有,是否有任何关于.NET或Windows API提供此功能的想法,如果我要编写自己的代码? 编辑: 进一步研究后 - 看起来使用的API是GetExtendedUdpTable和GetExtendedTcpTable,CodeProject.com有一些示例将其包装在.NET中(请参见http://www.codeproject.com/Articles/14423/Getting-the-active-TCP-UDP-connections-using-the-G)。因此,需要结合此API和一些嗅探器代码来监视并跟踪您计算机上的任何特定应用程序使用什么协议连接到哪些主机的哪些端口。如果我有空闲时间,我会考虑创建这个应用程序,如果您知道有这样的应用程序,请告诉我。

tcpdump?ethereal?它们需要winpcap库。 - Sergey Benner
ethereal 是 Wireshark 的旧名称 - 它可以让你看到数据包,包括源地址、目标地址和端口,但是没有任何进程识别功能。我能够看到数据包,但我想知道是哪个进程发送/接收了它们。 - Brian B
1
哪个版本的Windows?早些时候我使用过Kerio Personal Firewall,它非常好地显示了所有套接字以及所属进程,并且甚至允许您编写有关出站流量的规则。但我不认为它适用于Vista / Win7。此外,请注意,他们发布了一个新产品,它是同名的完全垃圾,伪装成新版本。 - Ben Voigt
使用个人防火墙可以增加安全性(我自己在早期使用过ZoneAlarm,现在我依赖于路由器中的硬件防火墙)。让它向您报告详细信息,而不是手动查找。 - Remy Lebeau
@Remy:当然,路由器防火墙无法访问进程信息,你需要在工作站上运行本地程序来实现。 - Ben Voigt
@BenVoigt:这就是我提到ZoneAlarm的原因。它是一种基于软件的防火墙。在我有足够多的电脑需要路由器之前,我经常使用它。 - Remy Lebeau
4个回答

12

3

netstat -b 可以列出所有端口及其对应的进程名。


5
这将告诉我哪个进程正在侦听UDP端口,但我怎么知道谁发送了一个UDP包?我想,如果我使用WinPCAP并从特定的本地机器端口看到UDP数据包,我可以使用netstat -b来尝试在列表中查找该本地端口。但如果它不在那里呢?我很好奇netstat -b使用了哪个API,我希望在任何编程工作中都能使用该API。理想情况下,它可以在新套接字绑定时通知我,否则我将不得不轮询,我怀疑这并不是一件非常廉价的事情... - Brian B

1
你可以尝试使用SysInternals的Process Monitor(ProcMon.exe或ProcMon64.exe)。
它允许通过“UDP发送”操作对进程进行过滤,并提供详细的UDP连接数据,包括源地址和目标地址(IP)以及端口等。

0
我推荐使用NirSoft的LiveTcpUdpWatch
这里不相关,但它的进程过滤器有点隐藏在“高级选项”中。
注意:我写这个回复是因为:
  1. 这个页面是关于这个主题的最早的搜索结果之一。
  2. TCPView没有任何帮助(只显示打开的UDP端口,但没有流量或出站内容,据我所知)。
  3. ProcMon会单独记录每个数据包的日志,而LiveTcpUdpWatch会按端口汇总流量(相同端口规则:远程+本地/仅远程/仅本地)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接