標題是我在剛接觸到這個技巧時的心聲
今天要分享的是在做記憶體分析時其實是有機會可以把 Evtx 抓出來看的,獲得更多的線索,因為 Windows 常常會記錄事件到Evtx中
下載連結:
Volatility 2 : https://github.com/volatilityfoundation/volatility
Volatility 3 : https://github.com/volatilityfoundation/volatility3
經典的記憶體分析工具,利用指令可以分析 memory dump 中的關鍵訊息,像是進程、網路連線、檔案......等等。
基本的操作這邊推薦可以直接上網查有人整理好的指令doc
而Volatility分為2與3版,差別就是一個是要使用 python2 執行,另一個是用 python3 執行,並且現在Volatility 2 已經沒有在維護了,但是一些 Plugin 的完整度在目前為止還是比 Volatility 3 還要高並且更豐富,所以有些人還是會比較會偏向使用 Volatility 2 ,這次會給兩個版本的Volatility工具指令給大家參考
下載連結:https://ericzimmerman.github.io/#!index.md
這是由Eric Zimmerman鑑識專家開發出的其中一個工具,他在網站中也有多出很多其他非常好用的數位鑑識工具可以使用,而這次會使用 Evtxcmd 的功能是他可以將evtx 換成CSV檔案以及Timeline Explorer 工具,可以查看CSV檔,
我們可以先檢查我們的memory 檔中有沒有確定有evtx檔
vol.py -f ./memory.dmp --profile=Win10x64_14393 -g 0xf8004a000b20 filescan | grep '.evtx'
vol -f memory.dmp windows.filescan | grep '.evtx'
我們可以利用 FileScan 的 pugin 幫助我們檢查是否有我們想要的檔案,圖片中可以得知到說確實有,接下來就可以將他們dump下來,Volatility 2 以及Volatility 3 的 Dumpfile 支援 regex ,可以使用它幫助我們找到所有我們需要的 evtx
vol.py -f ./memory.dmp --profile=Win10x64_14393 -g 0xf8004a000b20 dumpfiles --regex .evtx$ --ignore-case --dump-dir output
vol -f memory.dmp windows.dumpfiles.DumpFiles --filter .evtx$
這個指令簡單來說就是從memory.dump 中 將結尾為.evtx的檔案全部抓出來,也可以指定看你想要看什麼evtx,再去更改regex即可。
假設我想要dump Security.evtx下來看
vol.py -f ./memory.dmp --profile=Win10x64_14393 -g 0xf8004a000b20 --regex Security.evtx$ --ignore-case --dump-dir output
vol -f memory.dmp windows.dumpfiles.DumpFiles --filter Security.evtx$
圖片中發現成功Dump出來東西了,但是怎麼會有兩個檔案,而且這兩個檔案一個是 vacb ,一個是 dat,跟 evtx 的關係不是說沒有感覺是一點關係都沒有,那什麼是 vacb,什麼是 dat ?
簡單來說這兩個都儲存了 evtx 的資料,只是 dat 的儲存方式比較穩定可靠
因此其實也可以直接把 vacb 或 dat 副檔名直接改成 evtx ,就可以直接用內建的 Event viewer 查看
但另外其實也可以用Evtxcmd 將它變成 CSV 檔查看
根據 https://github.com/EricZimmerman/evtx?tab=readme-ov-file 官方給的使用說明,可以使用以下指令將我們的 evtx 轉換成 csv
.\EvtxECmd.exe -f "..\..\file.0xca82b31c5990.0xca82b3848c70.SharedCacheMap.Security.evtx.vacb" --csv ./
接下來就可以獲得一個csv檔,並且裡面的內容是evtx的內容
PS C:\Users\yunshiuan\Desktop\net9\EvtxeCmd > .\EvtxECmd.exe -f "..\..\file.0xca82b31c5990.0xca82b3848c70.SharedCacheMap.Security.evtx.vacb" --csv ./
EvtxECmd version 1.5.2.0
Author: Eric Zimmerman (saericzimmerman@gmail.com)
https://github.com/EricZimmerman/evtx
Command line: -f ..\..\file.0xca82b31c5990.0xca82b3848c70.SharedCacheMap.Security.evtx.vacb --csv ./
Warning: Administrator privileges not found!
CSV output will be saved to ./20250904074916_EvtxECmd_Output.csv
Maps loaded: 453
Processing C:\Users\yunshiuan\Desktop\file.0xca82b31c5990.0xca82b3848c70.SharedCacheMap.Security.evtx.vacb...
Chunk count: 30, Iterating records...
Record # 68 (Event Record Id: 68): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessName"] not found! Replacing with empty string
Record # 68 (Event Record Id: 68): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessId"] not found! Replacing with empty string
Record # 69 (Event Record Id: 69): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessName"] not found! Replacing with empty string
Record # 69 (Event Record Id: 69): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessId"] not found! Replacing with empty string
Record # 70 (Event Record Id: 70): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessName"] not found! Replacing with empty string
Record # 70 (Event Record Id: 70): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessId"] not found! Replacing with empty string
Record # 71 (Event Record Id: 71): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessName"] not found! Replacing with empty string
Record # 71 (Event Record Id: 71): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessId"] not found! Replacing with empty string
Record # 72 (Event Record Id: 72): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessName"] not found! Replacing with empty string
Record # 72 (Event Record Id: 72): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessId"] not found! Replacing with empty string
Record # 73 (Event Record Id: 73): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessName"] not found! Replacing with empty string
Record # 73 (Event Record Id: 73): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessId"] not found! Replacing with empty string
Record # 78 (Event Record Id: 78): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessName"] not found! Replacing with empty string
Record # 78 (Event Record Id: 78): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessId"] not found! Replacing with empty string
Record # 79 (Event Record Id: 79): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessName"] not found! Replacing with empty string
Record # 79 (Event Record Id: 79): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessId"] not found! Replacing with empty string
Record # 83 (Event Record Id: 83): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessName"] not found! Replacing with empty string
Record # 83 (Event Record Id: 83): In map for event 4718, Property /Event/EventData/Data[@Name="ProcessId"] not found! Replacing with empty string
Record # 2529 (Event Record Id: 2529): In map for event 1100, Property /Event/UserData[@Name="ServiceShutdown"] not found! Replacing with empty string
Event log details
Flags: IsDirty
Chunk count: 30
Stored/Calculated CRC: B5FC0719/B5FC0719
Earliest timestamp: 2024-01-31 23:47:41.1765022
Latest timestamp: 2024-02-01 19:48:31.0253493
Total event log records found: 246
Records included: 246 Errors: 0 Events dropped: 0
Metrics (including dropped events)
Event ID Count
1100 1
4608 2
4624 58
4625 1
4647 1
4648 7
4672 51
4688 23
4696 2
4717 10
4718 9
4720 1
4725 2
4728 1
4731 11
4732 3
4735 11
4738 6
4739 1
4797 5
4798 7
4799 3
4826 2
4902 2
4907 1
5024 1
5033 1
5379 23
Processed 1 file in 1.8517 seconds
之後就可以用Timeline Explorer 或其他可以開 csv 的軟體去做想要的Event ID查詢或者字串的搜尋。
有!有一個工具叫做 Rstudio,他有GUI的頁面可以分析 Memory 檔並且可以非常方便地將檔案 dump 出來
但是,如果你想要將他 dump 出來,免費版大小只能1024KB,基本的 Evtx 的大小都沒辦法復原
付費有許多方案,有一次付清的跟年繳的,這邊就就給大家參考
https://github.com/EricZimmerman/evtx?tab=readme-ov-file
https://medium.com/ouspg/digging-into-the-vortex-of-unknown-memory-dump-part-1-x-aaa6e0ee81d3