Skip to content

Add windows.evtlogs plugin for XP / Server 2003 event logs#1995

Open
ricardojrdez wants to merge 1 commit into
volatilityfoundation:developfrom
ricardojrdez:feature/evtlogs-xp
Open

Add windows.evtlogs plugin for XP / Server 2003 event logs#1995
ricardojrdez wants to merge 1 commit into
volatilityfoundation:developfrom
ricardojrdez:feature/evtlogs-xp

Conversation

@ricardojrdez

Copy link
Copy Markdown

Volatility 3 had no equivalent of vol2's evtlogs: the classic .evt event log format used by Windows XP / Server 2003 was unsupported (Vista+ uses the unrelated .evtx XML format). This adds a pure binary parser, no ISF/PDB symbols required.

It locates the memory-mapped .evt files in the EventLog service process by walking each process's VADs for a mapped *.evt file, reads the region in the process's virtual layer (which reassembles non-contiguous physical pages), and parses the EVENTLOGRECORD structures: scanning for the 'LfLe' signature and validating each record via the trailing length field. Records split across the circular buffer's wrap point are reconstructed using MaxSize from the ELF_LOGFILE_HEADER. Decoded fields include record number, generated/written timestamps, event ID, type, source, computer, owning SID and the substitution strings (message). NT 6.x+ images are rejected with a warning that the .evtx format is unsupported.

The only records that cannot be recovered are those whose pages were paged out to disk (absent from the RAM image).

Validated on a Zeus XP SP2 image: recovers 43 records from AppEvent.Evt and SysEvent.Evt mapped into services.exe (the XP EventLog host), with correct timestamps, sources (Service Control Manager, WinMgmt, EventLog, ...) and messages.

Volatility 3 had no equivalent of vol2's evtlogs: the classic .evt event
log format used by Windows XP / Server 2003 was unsupported (Vista+ uses the
unrelated .evtx XML format). This adds a pure binary parser, no ISF/PDB
symbols required.

It locates the memory-mapped .evt files in the EventLog service process by
walking each process's VADs for a mapped *.evt file, reads the region in the
process's virtual layer (which reassembles non-contiguous physical pages),
and parses the EVENTLOGRECORD structures: scanning for the 'LfLe' signature
and validating each record via the trailing length field. Records split
across the circular buffer's wrap point are reconstructed using MaxSize from
the ELF_LOGFILE_HEADER. Decoded fields include record number,
generated/written timestamps, event ID, type, source, computer, owning SID
and the substitution strings (message). NT 6.x+ images are rejected with a
warning that the .evtx format is unsupported.

The only records that cannot be recovered are those whose pages were paged
out to disk (absent from the RAM image).

Validated on a Zeus XP SP2 image: recovers 43 records from AppEvent.Evt and
SysEvent.Evt mapped into services.exe (the XP EventLog host), with correct
timestamps, sources (Service Control Manager, WinMgmt, EventLog, ...) and
messages.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant