freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Winshark:一款用于控制ETW的Wireshark插件
2020-11-13 21:53:51

Winshark

Winshark是一款用于控制ETW的Wireshark插件,ETW(Event Tracing for Windows)提供了一种对用户层应用程序和内核层驱动创建的事件对象的跟踪记录机制。为开发者提供了一套快速、可靠、通用的一系列事件跟踪特性。Microsoft Message Analyzer早就已经过时了,而且它的下载包早在2019年11月25日也被微软从其官网上移除了。Wireshark建立了一个庞大的网络协议剖析器工具库,为了帮助广大研究人员更好地收集和分析各种类型的网络日志,Winshark便应运而生。

Winshark基于libpcap作为后端来捕捉ETW(Event Tracing for Windows),并且提供了一个生成器来在设备上为已知ETW生成所有的解析器。除此之外,我们害廷加了Tracelogging支持来覆盖绝大多数的Windows操作系统日志技术。

在Winshark以及Windows系统强大功能的帮助下,我们可以在同一工具下捕捉网络和事件日志。

在工具使用方面,Winshark的诞生有着重要意义:

  • 支持混合所有类型的事件,包括网络事件和系统事件;
  • 支持针对事件日志使用Wireshark过滤功能;
  • 支持通过进程ID来跟踪网络和系统日志;
  • 支持捕捉pacp文件中的Windows日志和网络痕迹;
  • 通过NpEtw文件系统过滤驱动器捕捉命名管道;

工具安装

在使用Winshark之前,请先安装Wireshark。

现在,你需要让Wireshark将DLT_USER 147解释为ETW,这是因为我们在使用之前还没有从libpcap获取到真实的值,之后我们才能发送一个pull请求来获取到专门的DLT值。在这里,我们需要打开Edit控制面板中的Preferences标签页,选择Protocols设置下的DLT_USER,然后点击Edit并填写完对话框中的信息:

接下来,将etw值设置为DLT = 147:

工具构建

Winshark由cmake驱动,工具的构建配置命令如下:

git clone https://github.com/airbus-cert/winshark --recursive

mkdir build_winshark

cd build_winshark

cmake ..\Winshark

cmake --build . --target package --config release

捕捉网络流量

为了使用Winshark来捕捉网络流量,我们需要通过netsh来激活网络追踪功能:

netsh.exe trace start capture=yes report=no correlation=no

接下来,创建一个跟Microsoft-Windows-NDIS-PacketCapture供应器绑定的ETW会话:

logman start Winshark-PacketCapture -p "Microsoft-Windows-NDIS-PacketCapture" -rt -ets

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

接下来,我们就可以开始捕捉网络数据包了:

基于进程ID过滤

ETW利用每个数据包的Header来进行数据包标记,而Header中总会包含关于数据发送方的某些元数据,其中一个就是发送工具的进程ID。我们可以使用下列语句来配置Wireshark的过滤功能:

etw.header.ProcessId == 1234

捕捉命名管道

安装

首先,我们需要使用下列命令通过测试模式下的驱动器签名检测:

bcdedit /set testsigning on

接下来,安装NpEtwSetup.msi:【点我安装】,然后重启设备。

然后使用管理员权限运行“C:\Program Files\Wireshark\WinsharkUpdate.bat”来更新Winshark解析器。

命名管道捕捉

首先,使用管理员权限打开一个cmd.exe命令行窗口,然后使用下列命令开启驱动器:

sc start NpEtw

接下来,创建一个ETW会话:

logman start namedpipe -p NpEtw -ets -rt

现在,打开Wireshark,然后选择namedpipe会话即可。

项目地址

Winshark:【GitHub传送门

# 流量分析 # 流量检测 # 流量安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录