天天看點

PowerShell 抓取網絡日志

豆子今天想看看PowerShell是否有像Winsock之類的方式抓包,不過很遺憾,他有一個NetEvenPacketCapture的子產品,但是他不像wireshark那樣可以直接抓取TCP/IP包,他擷取的是Windows的網絡日志。優點是我可以直接用get-winEvent來分析内容了,缺點是我還是看不見直接的包的内容。

整個子產品一共有23個指令,新手一般會比較迷糊到底怎麼用。

豆子主要參考了微軟的這個部落格來進行的配置

https://blogs.technet.microsoft.com/heyscriptingguy/2015/10/12/packet-sniffing-with-powershell-getting-started/

 簡單的說,6個基本步驟:

建立Session

綁定Provider

開始Session

擷取這個Session的日志

關掉這個Session

删除這個Session

1.建立一個新的session,他會告訴我日志儲存的位址

PowerShell 抓取網絡日志

2.綁定Provider,首先通過logman看看有哪些provider可以使用

PowerShell 抓取網絡日志

然後綁定這個Provider

PowerShell 抓取網絡日志

3. 開始這個Session,沒有什麼結果出來,不過PS的設計和Linux一樣,no news is good news, 沒報錯就是好結果

4. 開始抓取日志

PowerShell 抓取網絡日志

5.等一會然後停止

6. 删除

注意生成的日志格式是etl格式的,這個格式是沒法用wireshark之類的抓包工具打開的,不過我們可以直接用事件檢視器直接打開,如下圖所示

PowerShell 抓取網絡日志

如果需要用腳本處理,這個和處理普通的windows日志一樣,直接用get-WinEvent就可以了

注意必須倒序排列才行。

PowerShell 抓取網絡日志

比如我隻需要檢視ID為1300的日志

PowerShell 抓取網絡日志

我想檢視最後的記錄

PowerShell 抓取網絡日志

如果我想處理Message的内容,可以轉換成XML格式,然後檢視EventData的内容,比如

PowerShell 抓取網絡日志

通過這種方式,我可以設定計劃任務,在指定的時間内抓取網絡日志,然後進行分析。