Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Winshark — 一个用于ETW的Wireshark插件 | Kitploit
工具/GitHubGitHub/airbus-cert/winshark
数据包嗅探与分析取证分析网络安全日志分析
GitHubairbus-cert/winshark

Winshark

一个用于ETW的Wireshark插件

查看仓库
593604年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Winshark

Wireshark 插件,用于处理 Windows 事件跟踪

Microsoft Message Analyzer 正在退役,其下载包已于 2019 年 11 月 25 日从 microsoft.com 网站移除。 Wireshark 已经构建了一个庞大的网络协议解析器库。 对于 Windows 而言,最好的工具应该是能够收集并混合所有类型日志的工具...

欢迎 Winshark!!!

Winshark 基于 libpcap 后端来捕获 ETW(Windows 事件跟踪),并有一个生成器,可以为您的机器上已知的 ETW 提供程序生成所有解析器。 我们添加了 Tracelogging 支持,以覆盖 Windows 操作系统上几乎所有的日志技术。

有了 Winshark 和 Windows 的强大功能,我们现在可以在同一个工具中捕获网络和事件日志。Windows 暴露了许多 ETW 提供程序,尤其有一个用于网络捕获的 ;-) 不再需要外部 NDIS 驱动程序。

这在使用方面是一个巨大的改进:

  • 启用混合所有类型的事件(系统和网络)
  • 启用使用 Wireshark 过滤事件日志
  • 启用按进程 ID 跟踪网络和系统日志!!!
  • 启用将 Windows 日志和网络跟踪捕获到唯一的 pcap 文件中!!!
  • 通过 NpEtw 文件系统过滤驱动程序捕获命名管道

如果您想要:

  • 使用 Winshark 捕获网络流量
  • 按进程 ID 过滤
  • 捕获命名管道流量

安装

请先安装 Wireshark。 然后只需安装 Winshark。

目前,您必须让 Wireshark 将 DLT_USER 147 解释为 ETW。这是因为您还没有为我们的新数据链路获得 libpcap 的真正值。 我们已提交了一个拉取请求以获得专用的 DLT 值;目前仍在等待中。 为此,您需要打开 Edit 面板下的 Preferences 选项卡。选择 Protocols 下的 DLT_USER,然后 Edit 封装表:

DLT_USER 配置

并将 winshark 设置为 DLT = 147:

将 DLT 147 设置为 ETW 协议

尽情享受吧!

构建

Winshark 由 cmake 驱动:

root@kitploit:~
git clone https://github.com/airbus-cert/winshark --recursive
mkdir build_winshark
cd build_winshark
cmake ..\Winshark
cmake --build . --target package --config release

工作原理

为了更好地理解 Winshark 的工作原理,我们需要先了解 ETW 的工作原理。

ETW 分为三部分:

  • 提供程序(Provider):会发出日志,并由唯一 ID 标识
  • 会话(Session):将混合一个或多个提供程序
  • 消费者(Consumer):读取会话发出的日志

提供程序

存在许多不同类型的提供程序。最常见且可用的是注册提供程序。注册提供程序(或基于清单的提供程序)记录在注册表项 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers 下。 这建立了提供程序 ID 与 dll 之间的关联。清单包含在关联 dll 的资源 WEVT_TEMPLATE 中。

您可以使用 logman 列出机器上所有注册的提供程序:

root@kitploit:~
logman query providers

您还可以列出特定进程绑定的所有提供程序:

root@kitploit:~
logman query providers -pid 1234

有些提供程序可能显示无名称;这些类型的提供程序可以生成 WPP 或 TraceLogging 日志。

会话

创建会话以收集来自多个提供程序的日志。 您可以使用 logman 创建自己的会话:

root@kitploit:~
logman start Mysession -p "Microsoft-Windows-RemoteDesktopServices-RdpCoreTS" -ets -rt
logman update MySession -p "Microsoft-Windows-NDIS-PacketCapture" -ets -rt

您可以从管理员命令行列出所有活动会话:

root@kitploit:~
logman query -ets

Data Collector Set                      Type                          Status
-------------------------------------------------------------------------------
...
EventLog-Application                    Trace                         Running
EventLog-Microsoft-Windows-Sysmon-Operational Trace                         Running
EventLog-System                         Trace                         Running
...
The command completed successfully.

您可以在此处看到事件记录器使用的一些有趣会话,用于从应用程序和系统会话以及 Sysmon 捕获日志。

消费者

消费者是一个简单的程序,它将从会话中读取日志。已知的消费者包括:

  • 事件记录器
  • logman
  • netsh
  • tracert

现在还有 Winshark!!! Winshark 是一个简单的 ETW 消费者。真正的底层消费者是 libpcap(Windows 上为 wpcap.dll),它由负责数据包捕获的 dumpcap.exe 使用。

Wireshark

Wireshark 分为三部分(是的,它也是):

  • Wireshark.exe:负责解析和解析协议
  • dumpcap.exe:负责捕获数据包
  • libpcap(wpcap.dll):负责在 dumpcap.exe 和操作系统之间进行接口

Winshark 位于第一部分和最后一部分。它为 libpcap 实现了一个后端,用于捕获 ETW 事件。 Winshark 在 ETW 会话上工作,这就是为什么您可以在捕获开始时选择 ETW 会话而不是网络接口。 然后,在安装步骤中,Winshark 会为您的计算机上注册的每个基于清单的提供程序生成 lua 解析器。 Winshark 还能够解析基于 tracelogging 的提供程序。

捕获网络流量

要使用 Winshark 捕获网络流量,您可以使用两种简单的方法:

pktmon(数据包监视器)

pktmon 是一个内置的、跨组件的 Windows 网络诊断工具。它可以用于数据包捕获、丢包检测、数据包过滤和计数(从 RS5 开始支持)

(https://docs.microsoft.com/zh-cn/windows-server/networking/technologies/pktmon/pktmon)

root@kitploit:~
pktmon start -c -m real-mode

您可以运行 pktmon -h 以获取更多选项(以管理员身份运行)

例如: 为数据包添加过滤器

root@kitploit:~
pktmon filter add -t icmp
pktmon filter add -t tcp -p 80

然后以管理员权限启动 Wireshark 并选择 Pktmon 接口: ETW 接口选择

这将开始数据包捕获:

ETW 数据包捕获

netsh trace

root@kitploit:~
netsh.exe trace start capture=yes report=no correlation=no

然后创建一个与 Microsoft-Windows-NDIS-PacketCapture 提供程序关联的 ETW 会话:

root@kitploit:~
logman start Winshark-PacketCapture -p "Microsoft-Windows-NDIS-PacketCapture" -rt -ets

然后以管理员权限启动 Wireshark 并选择 Winshark-PacketCapture 接口:

ETW 接口选择

这将开始数据包捕获:

ETW 数据包捕获

按进程 ID 过滤

ETW 为每个数据包标记一个头部,其中包含关于发送者的一些元数据。 其中之一是发送者的 进程 ID。与传统的 NDIS 驱动程序数据包捕获相比,这是一个巨大的改进。 只需在 Wireshark 的过滤字段中输入以下表达式:

root@kitploit:~
winshark.header.ProcessId == 1234

ETW 数据包捕获

捕获命名管道

@kobykahane 提供了一个 文件系统过滤驱动程序,该驱动程序对命名管道上的每个操作发出 ETW。

安装

  • 以测试模式通过驱动程序签名检查
root@kitploit:~
bcdedit /set testsigning on
  • 安装 NpEtwSetup.msi
  • 重新启动
  • 通过以 管理员 身份双击 C:\Program Files\Wireshark\WinsharkUpdate.bat 更新 Winshark 解析器

捕获

  • 以 管理员模式 打开 cmd.exe
  • 启动驱动程序
root@kitploit:~
sc start NpEtw
  • 创建一个 ETW 会话
root@kitploit:~
logman start namedpipe -p NpEtw -ets -rt
  • 启动 Wireshark 并选择 namedpipe 会话。尽情享受吧!

ETW 命名管道捕获

SSTIC(Symposium sur la sécurité des technologies de l'information et des communications)

该项目是 SSTIC 演讲的一部分

下载工具