-
Notifications
You must be signed in to change notification settings - Fork 633
Description
Description
Currently, in Volatility3, there is no automatic mechanism to identify which layer represents the 'physical layer' in a given memory image. While a few plugins attempt to infer the physical layer in roundabout ways (e.g., finding the intel layer and getting the next lowest), it would be good to standardize it.
A standardized method for determining the physical layer would improve plugin reliability and reduce redundancy in plugin-specific logic.
Motivation
A few plugins require knowledge of the physical layer for accurate memory analysis. The lack of a uniform mechanism to identify it leads to some repetitive code across plugins, and might lead to some inaccuracies if assumptions about the physical layer are incorrect. It would be great if there a way central way to do this in vol.
As support for more architectures and swap grows, identifying the 'physical layer' becomes increasingly important, and it's not as straightforward as it might initially appear.
Additional Context
This enhancement would help avoid future pitfalls of the current strategies used by some plugins and parts of the framework. For example:
- vmscan - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/plugins/vmscan.py#L173-L175
- layerwriter, when not giving a layer as an option - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/plugins/layerwriter.py#L94-L100
- linux.psscan - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/plugins/linux/psscan.py#L129-L142
- windows.consoles - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/plugins/windows/consoles.py#L251-L254
- windows.dumpfiles - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/plugins/windows/dumpfiles.py#L147-L151
- windows.mbrscan - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/plugins/windows/mbrscan.py#L48-L50
- windows.netscan - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/plugins/windows/netscan.py#L264-L267
- windows.poolscanner - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/plugins/windows/poolscanner.py#L375-L377
- windows.verinfo - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/plugins/windows/verinfo.py#L161-L164
- banners - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/plugins/banners.py#L30-L31
- symbol_finder - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/automagic/symbol_finder.py#L137-L139
- generic symbols - https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/symbols/generic/__init__.py#L44-L46
(At least I think of all these examples could benefit form some central mechanism, happy to be shown I'm wrong..!)
Also affects this currently open PR- #1321
Thanks
🦊