-
Notifications
You must be signed in to change notification settings - Fork 15
Description
When I tried to use Volatility3 and the microvmi Python plugin to inspect a Windows 10 2004/20H1 VM, I see a volatility3.framework.exceptions.OfflineException error message, followed by some other errors. After enabling verbose output, I noticed that /lib/libxenctrl.so appears to be missing the xc_domain_getinfo symbol, and it appears that it was intentionally removed starting from Xen 4.18.0: https://gitlab.com/xen-project/xen/-/commit/31c65549746179e16cf3f82b694b4b1e0b7545ca
So, it seems like either libmicrovmi or one of its dependencies needs to be updated to avoid using that removed symbol?
In case it matters I am using version 0.2.15 of the microvmi PyPI package, Volatility3 2.26.2 as well as Xen 4.20.1 from the DRAKVUF automated build on Ubuntu 24.04, in a virtual machine hosted by QEMU/KVM (the nested virtualization setup was working with Ubuntu 20.04, Volatility3 2.0.1, microvmi 0.2.10 from PyPI and Xen 4.17.0 from the DRAKVUF 1.0 build, and I am currently trying to move that setup over to Ubuntu 24.04).
Below is the output I got from the command RUST_LOG=debug sudo -E ./vol.py -vvv --plugin-dirs /home/drak/analyser/deps/venv/lib/python3.12/site-packages/microvmi/volatility --single-location "vmi://Xen/?vm_name=test-w10" windows.pslist for reference:
Volatility 3 Framework 2.26.2
INFO volatility3.cli: Volatility plugins path: ['/home/drak/analyser/deps/venv/lib/python3.12/site-packages/microvmi/volatility', '/home/drak/analyser/deps/volatility3-2.26.2/volatility3/plugins', '/home/drak/analyser/deps/volatility3-2.26.2/volatility3/framework/plugins']
INFO volatility3.cli: Volatility symbols path: ['/home/drak/analyser/deps/volatility3-2.26.2/volatility3/symbols', '/home/drak/analyser/deps/volatility3-2.26.2/volatility3/framework/symbols']
DEBUG volatility3.plugins.yarascan: Using yara-python module
INFO volatility3.framework.automagic: Detected a windows category plugin
INFO volatility3.framework.automagic: Running automagic: ConstructionMagic
DETAIL 1 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.PsList.kernel.layer_name
DETAIL 1 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.PsList.kernel.symbol_table_name
DETAIL 1 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.PsList.kernel.layer_name
DETAIL 1 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.PsList.kernel.symbol_table_name
DETAIL 1 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.PsList.kernel
DETAIL 1 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.PsList.kernel.layer_name
DETAIL 1 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.PsList.kernel.layer_name
DETAIL 1 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.PsList.kernel.layer_name
DETAIL 1 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.PsList.kernel
DETAIL 1 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.PsList.kernel.symbol_table_name
DETAIL 1 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.PsList.kernel.symbol_table_name
DETAIL 1 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.PsList.kernel.symbol_table_name
DETAIL 1 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.PsList.kernel
DETAIL 1 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.PsList.kernel.layer_name
DETAIL 1 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.PsList.kernel.symbol_table_name
DETAIL 1 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.PsList
INFO volatility3.framework.automagic: Running automagic: SymbolCacheMagic
INFO volatility3.framework.automagic: Running automagic: LayerStacker
DETAIL 1 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.PsList.kernel.layer_name
DETAIL 1 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.PsList.kernel.symbol_table_name
[2025-12-01T09:55:50Z INFO pymicrovmi] Microvmi Python init
[2025-12-01T09:55:50Z DEBUG pymicrovmi] Microvmi Python init driver_type: Some(2), init_param: Some(DriverInitParamsPy { common: Some(CommonInitParamsPy { vm_name: "test-w10" }), kvm: None, memflow: None })
[2025-12-01T09:55:50Z INFO microvmi] Microvmi init
[2025-12-01T09:55:50Z DEBUG microvmi] Microvmi init params: Some(
DriverInitParams {
common: Some(
CommonInitParams {
vm_name: "test-w10",
},
),
xen: None,
kvm: None,
memflow: None,
virtualbox: None,
},
)
[2025-12-01T09:55:50Z INFO xenstore_rs::libxenstore] Loading libxenstore.so
[2025-12-01T09:55:50Z DEBUG microvmi::driver::xen] Xenstore entry: [0] Domain-0
[2025-12-01T09:55:50Z DEBUG microvmi::driver::xen] Xenstore entry: [9] test-w10
[2025-12-01T09:55:50Z INFO xenctrl::libxenctrl] Loading libxenctrl.so
[2025-12-01T09:55:50Z DEBUG microvmi] Some(Xen) driver initialization failed: /lib/libxenctrl.so: undefined symbol: xc_domain_getinfo
INFO volatility3.framework.layers.resources: Cannot access vmi://Xen/?vm_name=test-w10 due to /lib/libxenctrl.so: undefined symbol: xc_domain_getinfo - Setting OFFLINE
INFO volatility3.framework.automagic: Running automagic: WinSwapLayers
INFO volatility3.framework.automagic: Running automagic: KernelPDBScanner
DETAIL 1 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.PsList.kernel.layer_name
DETAIL 1 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.PsList.kernel.symbol_table_name
DETAIL 1 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.PsList.kernel.symbol_table_name
DETAIL 1 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.PsList.kernel.symbol_table_name
INFO volatility3.framework.automagic.pdbscan: No suitable kernels found during pdbscan
INFO volatility3.framework.automagic: Running automagic: SymbolFinder
INFO volatility3.framework.automagic: Running automagic: KernelModule
DETAIL 1 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.PsList.kernel.layer_name
DETAIL 1 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.PsList.kernel.symbol_table_name
DETAIL 1 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.PsList.kernel.layer_name
DETAIL 1 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.PsList.kernel.layer_name
DETAIL 1 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.PsList.kernel.symbol_table_name
WARNING volatility3.framework.plugins: Automagic exception occurred: volatility3.framework.exceptions.OfflineException: Volatility 3 is offline: unable to access vmi://Xen/?vm_name=test-w10
DETAIL 1 volatility3.framework.plugins: Traceback (most recent call last):
File "/home/drak/analyser/deps/volatility3-2.26.2/volatility3/framework/layers/resources.py", line 139, in open
fp = urllib.request.urlopen(url, context=self._context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/urllib/request.py", line 215, in urlopen
return opener.open(url, data, timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/urllib/request.py", line 515, in open
response = self._open(req, data)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/urllib/request.py", line 532, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/urllib/request.py", line 492, in _call_chain
result = func(*args)
^^^^^^^^^^^
File "/home/drak/analyser/deps/venv/lib/python3.12/site-packages/microvmi/volatility/vmi_handler.py", line 54, in vmi_open
micro = Microvmi(driver_type, init_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "//home/drak/analyser/deps/venv/lib/python3.12/site-packages/microvmi/microvmi.py", line 48, in __init__
self._micro = MicrovmiExt(drv_type_ext, init_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: /lib/libxenctrl.so: undefined symbol: xc_domain_getinfo
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/drak/analyser/deps/volatility3-2.26.2/volatility3/framework/automagic/__init__.py", line 138, in run
automagic(context, config_path, requirement, progress_callback)
File "/home/drak/analyser/deps/volatility3-2.26.2/volatility3/framework/automagic/stacker.py", line 74, in __call__
self.stack(context, config_path, requirement, progress_callback)
File "/home/drak/analyser/deps/volatility3-2.26.2/volatility3/framework/automagic/stacker.py", line 122, in stack
physical_layer = physical.FileLayer(
^^^^^^^^^^^^^^^^^^^
File "/home/drak/analyser/deps/volatility3-2.26.2/volatility3/framework/layers/physical.py", line 111, in __init__
_ = self._file
^^^^^^^^^^
File "/home/drak/analyser/deps/volatility3-2.26.2/volatility3/framework/layers/physical.py", line 124, in _file
self._file_ = self._file_ or self._accessor.open(self._location, mode)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/drak/analyser/deps/volatility3-2.26.2/volatility3/framework/layers/resources.py", line 159, in open
raise exceptions.OfflineException(url)
volatility3.framework.exceptions.OfflineException: Volatility 3 is offline: unable to access vmi://Xen/?vm_name=test-w10
Unsatisfied requirement plugins.PsList.kernel.layer_name:
Unsatisfied requirement plugins.PsList.kernel.symbol_table_name:
A translation layer requirement was not fulfilled. Please verify that:
A file was provided to create this layer (by -f, --single-location or by config)
The file exists and is readable
The file is a valid memory image and was acquired cleanly
A symbol table requirement was not fulfilled. Please verify that:
The associated translation layer requirement was fulfilled
You have the correct symbol file for the requirement
The symbol file is under the correct directory or zip file
The symbol file is named appropriately or contains the correct banner
Unable to validate the plugin requirements: ['plugins.PsList.kernel.layer_name', 'plugins.PsList.kernel.symbol_table_name']