为什么 netstat/TCPView/CurrPorts 将进程列为未知?

为什么 netstat/TCPView/CurrPorts 将进程列为未知?

为了解决安全问题,我尝试记录从我的电脑建立连接的所有进程的数据,我尝试执行 netstat -bn 1 > stats.txt,还尝试使用 CurrPorts 创建日志文件,但据我所知,TCPView 甚至没有记录更改的选项,

但更奇怪的是,它们都偶尔将进程显示为“未知”,CurrPorts 似乎是迄今为止最好的,但也列出了一些未知进程。

1.进程怎么可能有未知路径?系统不知道任何建立连接的进程的路径吗?

2.是否存在我尚未使用过的其他工具或其他方式来以清晰的方式记录建立连接的进程以及所有进程的路径?

答案1

1.进程怎么可能有未知路径?

系统知道进程 ID。(具体来说,网络堆栈必须知道这一点。)进程 ID 对 netstat 来说是未知的。

系统不知道任何建立连接的进程的路径吗?

是的。当 TCP/IP 堆栈(负责常见协议,包括 TCP 和 UDP 以及可能的 ICMP)收到信息时,它会将该信息发送给程序。此功能允许您的计算机与系统上运行的不同软件进行多次对话,并将传入数据发送到正确的对话。TCP 的设计要求将传入数据作为初始化握手的一部分进行处理。UDP 也在某种程度上支持这一点,这就是为什么您可以同时发出多个 DNS 请求,并且计算机将知道哪个响应应该与每个请求匹配。

2.是否存在我尚未使用过的其他工具或其他方式来以清晰的方式记录建立连接的进程以及所有进程的路径?

netstat -b应该能够很好地完成此操作。(此语法适用于 Microsoft Windows 的现代版本。其他 netstat 实现可能使用不同的参数。)该-n参数仅消除了反向 DNS 详细信息,人们通常会消除这些信息(通常是因为它会减慢速度)。

该问题很可能是权限问题,我希望这也会影响其他工具。(否则,预期的安全优势可能不会像人们希望的那样发挥作用。)

最佳选择:确保您是管理员。如果您使用的是 Windows Vista 或更新版本,请确保启用了 UAC,然后使用提升的命令提示符。

netstat -nb应该会显示 PID 编号。将其转换为路径是单独完成的,例如使用TASKLIST或:
WMIC PROCESS GET Caption,CommandLine,Description,ExecutablePath,Name,ParentProcessId,ProcessId /FORMAT:VALUE

答案2

您的命令可能会错过短暂的进程或采样期间退出的进程。

相关内容