Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regrading volatility plugin IDT #1280

Open
Balaji2520 opened this issue Oct 1, 2024 · 4 comments
Open

Regrading volatility plugin IDT #1280

Balaji2520 opened this issue Oct 1, 2024 · 4 comments

Comments

@Balaji2520
Copy link

Describe the bug
I am working on Memory Forensics. I have a memory dump, I have to retrieve Interrupt descriptor table(using IDT plugin), when i was performing the windows.idt plugin command with memory dump it is raising "IndexError: Member not present in template: PrcbData " Error.

Context
Volatility Version: Volatility #
Operating System: Windows 11
Python Version: Python 3.12.4
Suspected Operating System: Windows 10
Command: python vol.py -f C:\Users\SETS\Music\wanna_dump.dmp windows.idt

To Reproduce
Steps to reproduce the behavior:

  1. Use command 'windows.idt'
  2. See error

Expected behavior
I am expecting Interrupt descriptor table belongs to the memory dump

Example output
Please copy and paste the text demonstrating the issue, ideally with verbose output turned on (vol.py -vvv ...).
PS C:\Users\SETS\Downloads\volatility3-develop> python vol.py -vvv windows.idt
Volatility 3 Framework 2.4.2
INFO volatility3.cli: Volatility plugins path: ['C:\Users\SETS\Downloads\volatility3-develop\volatility3\plugins', 'C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\plugins']
INFO volatility3.cli: Volatility symbols path: ['C:\Users\SETS\Downloads\volatility3-develop\volatility3\symbols', 'C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\symbols']
INFO volatility3.framework.automagic: Detected a windows category plugin
INFO volatility3.framework.automagic: Running automagic: ConstructionMagic
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT
INFO volatility3.framework.automagic: Running automagic: SymbolCacheMagic
INFO volatility3.framework.automagic: Running automagic: LayerStacker
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
INFO volatility3.framework.automagic: Running automagic: WinSwapLayers
INFO volatility3.framework.automagic: Running automagic: KernelPDBScanner
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.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
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
WARNING volatility3.framework.plugins: Automagic exception occurred: ValueError: Unable to run LayerStacker, single_location parameter not provided
Level 9 volatility3.framework.plugins: Traceback (most recent call last):
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\automagic_init_.py", line 138, in run
automagic(context, config_path, requirement, progress_callback)
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\automagic\stacker.py", line 69, in call
raise ValueError(
ValueError: Unable to run LayerStacker, single_location parameter not provided

Unsatisfied requirement plugins.IDT.kernel.layer_name:
Unsatisfied requirement plugins.IDT.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.IDT.kernel.layer_name', 'plugins.IDT.kernel.symbol_table_name']
PS C:\Users\SETS\Downloads\volatility3-develop>

Screenshot (2)

Text is preferred to screenshots for searching and to talk about specific parts of the output.
and when i am ruuning the won memory dump the error is like this:
PS C:\Users\SETS\Downloads\volatility3-develop> python vol.py -f C:\Users\SETS\Music\wanna_dump.dmp windows.idt
Volatility 3 Framework 2.4.2
Progress: 100.00 PDB scanning finished
Traceback (most recent call last):
File "C:\Users\SETS\Downloads\volatility3-develop\vol.py", line 10, in
volatility3.cli.main()
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\cli_init_.py", line 790, in main
CommandLine().run()
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\cli_init_.py", line 447, in run
renderersargs.renderer.render(constructed.run())
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\cli\text_renderer.py", line 193, in render
grid.populate(visitor, outfd)
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\renderers_init_.py", line 241, in populate
for level, item in self._generator:
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\plugins\windows\idt.py", line 249, in _generator
for cpu_index, kpcr in self.get_pcrs(ntkrnlmp, layer_name, symbol_table):
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\plugins\windows\idt.py", line 231, in get_pcrs
kpcr_offset = ntkrnlmp.get_type("KPCR").relative_child_offset("PrcbData")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\objects\templates.py", line 58, in relative_child_offset
return self.vol.object_class.VolTemplateProxy.relative_child_offset(self, child)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\objects_init
.py", line 890, in relative_child_offset
raise IndexError(f"Member not present in template: {child}")
IndexError: Member not present in template: PrcbData
PS C:\Users\SETS\Downloads\volatility3-develop>
Screenshot (3)

Additional information
when i am performing other plugins like pslist, pstree, info, etc : i am getting correct output. problem with "idt" plugin.

@eve-mem
Copy link
Contributor

eve-mem commented Oct 1, 2024

Thank you for providing the text log file. Are you able to provide the exact windows version for the memory sample, e.g. from the info plugin.

I'm not sure where the problem is, but that information might help someone that does.

It's useful to know that pslist etc works as normal for your sample.

@Balaji2520
Copy link
Author

Balaji2520 commented Oct 1, 2024

Thank you for providing the text log file. Are you able to provide the exact windows version for the memory sample, e.g. from the info plugin.

I'm not sure where the problem is, but that information might help someone that does.

It's useful to know that pslist etc works as normal for your sample.

PS C:\Users\SETS\Downloads\volatility3-develop> python vol.py -f C:\Users\SETS\Music\wanna_dump.dmp windows.info
Volatility 3 Framework 2.4.2
Progress: 100.00 PDB scanning finished
Variable Value

Kernel Base 0xf80122008000
DTB 0x1aa000
Symbols file:///C:/Users/SETS/Downloads/volatility3-develop/volatility3/symbols/windows/ntkrnlmp.pdb/D9424FC4861E47C10FAD1B35DEC6DCC8-1.json.xz
Is64Bit True
IsPAE False
layer_name 0 WindowsIntel32e
memory_layer 1 Elf64Layer
base_layer 2 FileLayer
KdVersionBlock 0xf80122c17400
Major/Minor 15.19041
MachineType 34404
KeNumberProcessors 1
SystemTime 2024-07-22 06:10:08
NtSystemRoot C:\Windows
NtProductType NtProductWinNt
NtMajorVersion 10
NtMinorVersion 0
PE MajorOperatingSystemVersion 10
PE MinorOperatingSystemVersion 0
PE Machine 34404
PE TimeDateStamp Mon Dec 9 11:07:51 2019

and pslist is working normal .

@Balaji2520 Balaji2520 changed the title Bug Regrading volatility plugin IDT Regrading volatility plugin IDT Oct 1, 2024
@Balaji2520
Copy link
Author

COMMAND: python vol.py -f C:\Users\SETS\Music\wanna_dump.dmp -vvv windows.idt

PS C:\Users\SETS\Downloads\volatility3-develop> python vol.py -f C:\Users\SETS\Music\wanna_dump.dmp -vvv windows.idt
Volatility 3 Framework 2.4.2
INFO volatility3.cli: Volatility plugins path: ['C:\Users\SETS\Downloads\volatility3-develop\volatility3\plugins', 'C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\plugins']
INFO volatility3.cli: Volatility symbols path: ['C:\Users\SETS\Downloads\volatility3-develop\volatility3\symbols', 'C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\symbols']
INFO volatility3.framework.automagic: Detected a windows category plugin
INFO volatility3.framework.automagic: Running automagic: ConstructionMagic
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT
INFO volatility3.framework.automagic: Running automagic: SymbolCacheMagic
INFO volatility3.framework.automagic: Running automagic: LayerStacker
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
INFO volatility3.schemas: Dependency for validation unavailable: jsonschema
DEBUG volatility3.schemas: All validations will report success, even with malformed input
DEBUG volatility3.framework.automagic.windows: Detecting Self-referential pointer for recent windows
DEBUG volatility3.framework.automagic.windows: DtbSelfRef64bit test succeeded at 0x1aa000
DEBUG volatility3.framework.automagic.windows: DTB was found at: 0x1aa000
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name.memory_layer
Level 9 volatility3.framework.configuration.requirements: IndexError - No configuration provided: plugins.IDT.kernel.layer_name.memory_layer.base_layer
INFO volatility3.schemas: Dependency for validation unavailable: jsonschema
DEBUG volatility3.schemas: All validations will report success, even with malformed input
Level 9 volatility3.framework.interfaces.configuration: TypeError - kernel_virtual_offset requirements only accept int type: None
Level 9 volatility3.framework.interfaces.configuration: TypeError - kernel_virtual_offset requirements only accept int type: None
Level 9 volatility3.framework.interfaces.configuration: TypeError - kernel_banner requirements only accept str type: None
Level 9 volatility3.framework.interfaces.configuration: TypeError - kernel_banner requirements only accept str type: None
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT.kernel
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.automagic.construct_layers: Failed on requirement: plugins.IDT
DEBUG volatility3.framework.automagic.stacker: Stacked layers: ['IntelLayer', 'Elf64Layer', 'FileLayer']
INFO volatility3.framework.automagic: Running automagic: WinSwapLayers
INFO volatility3.framework.automagic: Running automagic: KernelPDBScanner
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
Level 9 volatility3.framework.configuration.requirements: Symbol table requirement not yet fulfilled: plugins.IDT.kernel.symbol_table_name
DEBUG volatility3.framework.automagic.pdbscan: Kernel base determination - searching layer module list structure
DEBUG volatility3.framework.automagic.pdbscan: Kernel base determination - searching layer module list structure
DEBUG volatility3.framework.automagic.pdbscan: Setting kernel_virtual_offset to 0xf80122008000
DEBUG volatility3.framework.symbols.windows.pdbutil: Using symbol library: ntkrnlmp.pdb\D9424FC4861E47C10FAD1B35DEC6DCC8-1
INFO volatility3.schemas: Dependency for validation unavailable: jsonschema
DEBUG volatility3.schemas: All validations will report success, even with malformed input
INFO volatility3.framework.automagic: Running automagic: SymbolFinder
INFO volatility3.framework.automagic: Running automagic: KernelModule

CPU Index Selector Value Module Section
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_DEVICE_NODE_IOMMU_EXTENSION
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_PO_PROCESS_ENERGY_CONTEXT
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_EPROCESS_QUOTA_BLOCK
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_PAGEFAULT_HISTORY
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_JOB_ACCESS_STATE
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_JOB_CPU_RATE_CONTROL
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_JOB_NET_RATE_CONTROL
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_JOB_NOTIFICATION_INFORMATION
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_PSP_STORAGE
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_ACTIVATION_CONTEXT_DATA
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_ASSEMBLY_STORAGE_MAP
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_EXP_LICENSE_STATE
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_SCSI_REQUEST_BLOCK
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_DBGKP_ERROR_PORT
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_CI_NGEN_PATHS
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_EX_WNF_SUBSCRIPTION
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_ETW_EVENT_CALLBACK_CONTEXT
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_ETW_SOFT_RESTART_CONTEXT
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!_ETW_STACK_CACHE
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!ETW_PERFECT_HASH_FUNCTION
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!EX_TIMER
DEBUG volatility3.framework.symbols: Unresolved reference: symbol_table_name1!HAL_PMC_COUNTERS
Traceback (most recent call last):
File "C:\Users\SETS\Downloads\volatility3-develop\vol.py", line 10, in
volatility3.cli.main()
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\cli_init
.py", line 790, in main
CommandLine().run()
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\cli_init
.py", line 447, in run
renderersargs.renderer.render(constructed.run())
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\cli\text_renderer.py", line 193, in render
grid.populate(visitor, outfd)
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\renderers_init
.py", line 241, in populate
for level, item in self._generator:
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\plugins\windows\idt.py", line 249, in _generator
for cpu_index, kpcr in self.get_pcrs(ntkrnlmp, layer_name, symbol_table):
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\plugins\windows\idt.py", line 231, in get_pcrs
kpcr_offset = ntkrnlmp.get_type("KPCR").relative_child_offset("PrcbData")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\objects\templates.py", line 58, in relative_child_offset
return self.vol.object_class.VolTemplateProxy.relative_child_offset(self, child)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\SETS\Downloads\volatility3-develop\volatility3\framework\objects_init
.py", line 890, in relative_child_offset
raise IndexError(f"Member not present in template: {child}")
IndexError: Member not present in template: PrcbData

@ikelos
Copy link
Member

ikelos commented Oct 6, 2024

Thanks for filing a text-based bug, it's now much easier to figure out what's going on. There isn't an IDT plugin in the official release of volatility 3, so I assume this backtrace was made using #976 ? I've attached a comment, but sadly the author seems not to have responded in quite a while.

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

No branches or pull requests

3 participants