从系统PID 4(内核)跟踪TCP侦听器



问题陈述

当人们查看一台机器上的侦听端口时,注意到一个端口(如TCP 5985(正在侦听,但拥有的进程ID为4(SYSTEM/kernel(,除了在谷歌上搜索端口号之外,似乎很难找到真正位于侦听端口请求后面的真正程序(二进制(。在这样一个端口5985的例子中,我知道它是WinRM,因为我手动启用了它并看到了变化。虽然我可以在谷歌上搜索,并假设可能返回的内容是有意义的,但这并不意味着我真的知道在这个端口上实际要求它监听什么,我必须假设,下次谷歌可能不会提供明确的答案(我计划做最坏的打算(。要重新创建它,可以转到PowerShell(提升(并键入Enable-PSRemoting。默认情况下,这将在5985上启动侦听器,并从拥有PID 4开始侦听。

我为什么关心

为了在一家大公司建立工作站防火墙策略,我正在运行一个大型项目,在数千台机器上查找侦听端口,并在我们的日志管理工具中集中汇总结果(对我已经知道的内容进行了大量过滤/文档整理,所以只查找剩下的内容(。对于每个端口,我询问拥有PID的人签署了它,路径/名称,服务名称,文件详细信息(描述,产品名称等(。然而,对于PID 4,这当然是不可用的,因为它是内核本身。我真的需要更多地了解真正的程序,以便在测试阶段对最初是否阻止它做出更明智的决定。无论哪种方式,都必须理解和记录它是什么以及它倾听的原因。

问题

那么,如何将端口追溯到请求它的实际服务?至关重要的是,能够通过PowerShell(5.1或7.0 GA(或脚本中的其他命令行工具以编程方式追溯这一点——它不能是GUI。我不是一个真正的开发人员,但我在PowerShell方面相当不错——直到有人给了我一句话,让我摇头,这对我来说应该是多么明显。

已尝试

  • Get-NetTCPConnection -State Listen -LocalPort 5985 | Select-Object *
  • TCPCon/TCPView
  • ProcessExplorer(不管怎样,GUI对我没有帮助(
  • ProcessHacker(不管怎样,GUI对我没有帮助(

对于那些走到这一步的人,尤其是那些回答的人——谢谢!

有类似的问题,想知道使用PID 4-SYSTEM端口的实际进程。以下是我能找到的向我显示原始PID的唯一方法:

netsh http show servicestate view=requestq verbose=no

Nirsoft为我找到SMsniff的唯一可靠方法是,这确实需要安装一个捕获驱动程序,因此在这种情况下没有帮助。

最新更新