Skip to content

feat: Stack enrichment#217

Merged
rabbitstack merged 19 commits intomasterfrom
stack-enrichment
Dec 25, 2023
Merged

feat: Stack enrichment#217
rabbitstack merged 19 commits intomasterfrom
stack-enrichment

Conversation

@rabbitstack
Copy link
Copy Markdown
Owner

Stack enrichment foundation is based on StackWalk events emitted by the system logger provider. The collection of return addresses is appended to supported events and symbolized afterward. The symbolization process is delegated to Debug Helper API with a couple of nuances:

  • high volume events such as CreateFile with open disposition are enriched with module information from the process state. Symbol names are not obtained.
  • for the rest of events, Debug Helper API is used in combination with module state consulting and PE export directory parsing.

The following events are eligible for stack enrichment:

  • CreateProcess
  • CreateThread
  • TerminateThread
  • LoadImage
  • RegCreateKey
  • RegDeleteKey
  • RegSetValue
  • RegDeleteValue
  • CreateFile
  • DeleteFile
  • RenameFile

This is the groundwork for stack enrichment based on the events emitted by the kernel logger or stack trace items available in event extended properties.
Symbolizer is capable of decorating return addresses with symbol information as well as memory region characteristics.
Make symbolizer aware of symbol resolution frequency to alleviate the pressure on the CPU when initializing symbol handles. Also, introduce a config option to indicate if kernel addresses are symbolized.
Callstack enrichment for CreateFile events is performed in the fs processor, as we activate the stack tracing for CreateFile and not FileOpEnd events. Also, this commit introduces a ton of improvements and facilities to ease unit testing
@rabbitstack rabbitstack merged commit 9219cc8 into master Dec 25, 2023
@rabbitstack rabbitstack deleted the stack-enrichment branch December 25, 2023 00:37
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