在Windows中捕获网络流量
这是什么? 这经常发生在我身上……有些事情很奇怪或没有按预期工作,心中不禁会问:“发生了什么?为什么客户端或服务器会这样表现?”通常,这些都是与网络相关的问题。
一位安全研究人员曾告诉我:“如果你想了解一个系统是如何工作的,你必须理解网络流量。几乎所有问题都可以在网络层面上进行诊断。” 根据我的经验,这确实是事实。 🥳
不幸的是,我的经验也表明,许多人不知道如何在Windows中捕获网络流量,而唯一的解决方案就是***“让我们安装Wireshark”***。
好吧,即使Wireshark是一个很棒的工具,但它并不是唯一的解决方案,也可能不是快速和一次性捕获的最佳解决方案。尤其是当涉及到你那些安全性极高的服务器时,肯定有更好、更快的解决方案。
关于这种情况的考虑 再说一次,Wireshark是一个强大的工具,或多或少是事实上的网络协议分析标准。你肯定会用它来分析捕获到的内容。但Wireshark的缺点是:
它无法在不安装额外组件的情况下捕获:一个网络驱动程序(WinPcap或Npcap)。 它是一个活跃且复杂的工具,包含许多二进制文件和潜在的漏洞。 在服务器上的每次安装都是一个潜在的攻击向量,并会导致你的服务器变得独特。 这可能不是你想在生产服务器上使用的工具,尤其是当你只想捕获一些流量进行快速分析时。 无论如何,把它放在你的工作站上分析捕获到的内容。你甚至不需要管理员权限就可以使用Wireshark进行分析! Wireshark可以作为便携式安装正常运行,而无需进行任何系统范围的安装。 那么,有什么替代方案? 在Windows中有几种替代方案可以完成这项工作。最棒的是,你不需要在机器上安装任何东西。Windows中有内置工具可以完成这项工作……而且它们非常强大。结合一些PowerShell和PSRemoting功能,这很容易扩展。
1. netsh trace - 老而弥坚 netsh trace 命令是Windows中的一个内置工具,允许你在不需要额外软件的情况下捕获网络流量。它使用Windows事件跟踪(ETW)框架来捕获和记录网络事件。 基本上,它是netsh trace start和netsh trace stop来开始和停止捕获,但还有netsh trace show来显示当前状态,以及netsh trace convert来将捕获的数据转换为更易读的格式。
以下是netsh trace中可用命令的快速概述:
以下命令可用: 在此上下文中的命令: ? - 显示命令列表。 convert - 将跟踪文件转换为HTML报告。 correlate - 将跟踪文件标准化或过滤到新输出文件。 diagnose - 启动诊断会话。 dump - 显示配置脚本。 export - 将场景导出到WPR配置文件。 help - 显示命令列表。 merge - 合并跟踪文件并添加符号元数据。 postreset - show - 列出接口、提供程序和跟踪状态。 start - 开始跟踪。 stop - 停止跟踪。 要查看命令的帮助,请输入命令,后跟空格,然后输入?。 现在,让我们关注start和stop命令,这些是你将用来捕获网络流量的命令。命名是相当自解释的,我想。要开始网络捕获,你需要指定一些额外的参数。基本上,你只需要指定你想捕获流量。这就是参数capture=yes。 即使这就是你所需的绝对最小值,还有一个推荐的参数以提高效率。如果你只关心捕获网络流量,可以通过report=disabled禁用netsh的报告生成行为。这将加快捕获过程并减少捕获文件的大小,因为它不会包含额外的报告数据。 其余参数可以根据你的需要自定义捕获过程。当然,你可以指定保存跟踪的位置和捕获内容,但这不是强制性的。