来源:https://blog.51cto.com/beanxyz/1746576
豆子今天想看看PowerShell是否有像Winsock之类的方式抓包,不过很遗憾,他有一个NetEvenPacketCapture的模块,但是他不像wireshark那样可以直接抓取TCP/IP包,他获取的是Windows的网络日志。优点是我可以直接用get-winEvent来分析内容了,缺点是我还是看不见直接的包的内容。
整个模块一共有23个命令,新手一般会比较迷糊到底怎么用。
豆子主要参考了微软的这个博客来进行的配置
简单的说,6个基本步骤:
-
创建Session
-
绑定Provider
-
开始Session
-
获取这个Session的日志
-
关掉这个Session
-
删除这个Session
1.创建一个新的session,他会告诉我日志保存的地址
New-NetEventSession -Name "Session1"
- 1.
2.绑定Provider,首先通过logman看看有哪些provider可以使用
logman query providers | select-string tcp
- 1.
然后绑定这个Provider
Add-NetEventProvider -Name “Microsoft-Windows-TCPIP” -SessionName “Session1"
- 1.
3. 开始这个Session,没有什么结果出来,不过PS的设计和Linux一样,no news is good news, 没报错就是好结果
Start-NetEventSession -Name “Session1"
- 1.
4. 开始抓取日志
Get-NetEventSession
- 1.
5.等一会然后停止
Stop-NetEventSession -Name session1
- 1.
6. 删除
Remove-NetEventSession
- 1.
注意生成的日志格式是etl格式的,这个格式是没法用wireshark之类的抓包工具打开的,不过我们可以直接用事件查看器直接打开,如下图所示
如果需要用脚本处理,这个和处理普通的windows日志一样,直接用get-WinEvent就可以了
注意必须倒序排列才行。
Get-WinEvent -path C:\WINDOWS\system32\config\systemprofile\AppData\Local\NetEventTrace.etl -Oldest
- 1.
比如我只需要查看ID为1300的日志
我想查看最后的记录
如果我想处理Message的内容,可以转换成XML格式,然后查看EventData的内容,比如
通过这种方式,我可以设置计划任务,在指定的时间内抓取网络日志,然后进行分析。