Winshark:一款用于控制ETW的Wireshark插件
字数 1147 2025-08-15 21:32:37
Winshark:控制ETW的Wireshark插件使用指南
1. Winshark概述
Winshark是一款用于控制ETW(Event Tracing for Windows)的Wireshark插件,它能够帮助研究人员在同一工具下捕捉和分析网络事件和系统事件。
主要特性
- 基于libpcap后端捕捉ETW事件
- 提供生成器为已知ETW生成所有解析器
- 支持Tracelogging覆盖绝大多数Windows操作系统日志技术
- 支持混合所有类型的事件(网络事件和系统事件)
- 支持使用Wireshark过滤功能针对事件日志
- 支持通过进程ID跟踪网络和系统日志
- 支持在pcap文件中捕捉Windows日志和网络痕迹
- 通过NpEtw文件系统过滤驱动器捕捉命名管道
2. 安装准备
2.1 系统要求
- 已安装Wireshark
- Windows操作系统
2.2 配置Wireshark
- 打开Wireshark的"Edit"菜单
- 选择"Preferences"标签页
- 在左侧选择"Protocols"下的"DLT_USER"
- 点击"Edit"按钮
- 添加ETW条目并设置DLT = 147
3. 构建Winshark
构建步骤
git clone https://github.com/airbus-cert/winshark --recursive
mkdir build_winshark
cd build_winshark
cmake ..\Winshark
cmake --build . --target package --config release
4. 捕捉网络流量
4.1 激活网络追踪
netsh.exe trace start capture=yes report=no correlation=no
4.2 创建ETW会话
logman start Winshark-PacketCapture -p "Microsoft-Windows-NDIS-PacketCapture" -rt -ets
4.3 开始捕捉
- 以管理员权限启动Wireshark
- 选择"Winshark-PacketCapture"接口
- 开始捕捉网络数据包
5. 基于进程ID过滤
ETW数据包Header中包含发送工具的进程ID,可使用以下过滤语句:
etw.header.ProcessId == 1234
6. 捕捉命名管道
6.1 安装准备
- 启用测试模式下的驱动器签名检测:
bcdedit /set testsigning on - 安装NpEtwSetup.msi
- 重启设备
- 以管理员权限运行"WinsharkUpdate.bat"更新解析器
6.2 捕捉命名管道
- 以管理员权限打开cmd.exe
- 启动驱动器:
sc start NpEtw - 创建ETW会话:
logman start namedpipe -p NpEtw -ets -rt - 打开Wireshark,选择"namedpipe"会话
7. 项目资源
项目地址:Winshark GitHub仓库
8. 注意事项
- 部分操作需要管理员权限
- 捕捉命名管道前必须启用测试签名模式
- 使用前确保正确配置Wireshark的DLT_USER设置
- 网络流量捕捉需要先激活Windows网络追踪功能
9. 技术背景
ETW(Event Tracing for Windows)是Windows提供的事件跟踪机制,具有以下特点:
- 快速、可靠、通用的事件跟踪特性
- 支持用户层应用程序和内核层驱动创建的事件对象
- 替代已过时的Microsoft Message Analyzer
Winshark结合了Wireshark强大的网络协议分析能力和ETW的全面事件跟踪能力,为Windows系统监控和分析提供了统一平台。