iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0
Security

Blue 了 Blue 了!只會看封包與log的我錯了嗎!系列 第 3

Day3 蛤?為什麼我做記憶體鑑識還要看evtx,我不知道我還要記Event ID啊,不鑑了,爛鑑識!

  • 分享至 

  • xImage
  •  

🧂 前言

標題是我在剛接觸到這個技巧時的心聲

今天要分享的是在做記憶體分析時其實是有機會可以把 Evtx 抓出來看的,獲得更多的線索,因為 Windows 常常會記錄事件到Evtx中


🍘 仙貝工具

Volatility

下載連結:

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工具指令給大家參考

Eric Zimmerman's Tools

下載連結:https://ericzimmerman.github.io/#!index.md

這是由Eric Zimmerman鑑識專家開發出的其中一個工具,他在網站中也有多出很多其他非常好用的數位鑑識工具可以使用,而這次會使用 Evtxcmd 的功能是他可以將evtx 換成CSV檔案以及Timeline Explorer 工具,可以查看CSV檔,


Dump 出 Evtx 檔案

我們可以先檢查我們的memory 檔中有沒有確定有evtx檔

Volatility 2

vol.py -f ./memory.dmp --profile=Win10x64_14393 -g 0xf8004a000b20 filescan | grep '.evtx'

Volatility 3

vol -f memory.dmp windows.filescan | grep '.evtx'

我們可以利用 FileScan 的 pugin 幫助我們檢查是否有我們想要的檔案,圖片中可以得知到說確實有,接下來就可以將他們dump下來,Volatility 2 以及Volatility 3 的 Dumpfile 支援 regex ,可以使用它幫助我們找到所有我們需要的 evtx

Volatility 2

vol.py -f ./memory.dmp --profile=Win10x64_14393 -g 0xf8004a000b20  dumpfiles --regex .evtx$ --ignore-case --dump-dir output

Volatility 3

vol -f memory.dmp windows.dumpfiles.DumpFiles --filter .evtx$

這個指令簡單來說就是從memory.dump 中 將結尾為.evtx的檔案全部抓出來,也可以指定看你想要看什麼evtx,再去更改regex即可。

假設我想要dump Security.evtx下來看

Volatility 2

vol.py -f ./memory.dmp --profile=Win10x64_14393 -g 0xf8004a000b20 --regex Security.evtx$ --ignore-case --dump-dir output

Volatility 3

vol -f memory.dmp windows.dumpfiles.DumpFiles --filter Security.evtx$

圖片中發現成功Dump出來東西了,但是怎麼會有兩個檔案,而且這兩個檔案一個是 vacb ,一個是 dat,跟 evtx 的關係不是說沒有感覺是一點關係都沒有,那什麼是 vacb,什麼是 dat ?

  • vacb : Caching Data
  • dat : Less Fragile File

簡單來說這兩個都儲存了 evtx 的資料,只是 dat 的儲存方式比較穩定可靠

因此其實也可以直接把 vacb 或 dat 副檔名直接改成 evtx ,就可以直接用內建的 Event viewer 查看

但另外其實也可以用Evtxcmd 將它變成 CSV 檔查看


Evtxcmd- Evtx to 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://wongkenny240.gitbook.io/computerforensics/memory-analysis/volatility#windows-vista-2008-and-7-event-logs

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


上一篇
Day2 撥開電腦的記憶找出最黑暗的部分
下一篇
Day4 如果我獲得到了一個讀心術,我想要分析企鵝先生的記憶
系列文
Blue 了 Blue 了!只會看封包與log的我錯了嗎!11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言