Closed gcmoreira closed 3 months ago
Hey @ikelos, not sure why this cannot merge those changes. It looks pretty simple to me. Anyway, I'm not allowed to resolve those conflicts, it seems I will need your help here. Thanks
Hey @ikelos, not sure why this cannot merge those changes. It looks pretty simple to me. Anyway, I'm not allowed to resolve those conflicts, it seems I will need your help here. Thanks
Yeah, that was a bit weird, they weren't really conflict from what I could see, but I guess some of the recent merges touched the files in those places. Anyway, should be all resolved, lemme know if there's an issue...
@ikelos I changed the state to draft
. It's almost ready but I want to add some testcases for completeness.
In the meantime, if you can please have a look at the LinuxUtilities version. I bumped the minor number when I added the ex choose_kernel_tree() helper, but, I later moved it to the IDStorage class. However, I made a code improvement, which could also be considered a patch, since the functionality itself hasn't changed. Not sure the exact criteria we should take into account for this. If we need to update the version again, the pidhashtable plugin requirements also needs to be adjusted.
No problem moving this to draft. If the change you've made doesn't add to the LinuxUtilities interface (or remove/change it in any way) but just alters how it does the stuff it does (without changing the results) then it can just be bumped on the PATCH version rather than the MINOR version. Depends on the patch, but should be ok (otherwise we tend to leave the old functionality around with a deprecation warning, because bumping a MAJOR version on LinuxUtilities will be... painful. 5:P
Hey @ikelos, IMO it's ready to merge. Again, my apologies. I know it's quite extensive chuck of code. I tried to break it down in some PRs, but I know I could have done it even better. I'll work on improving this for the next PR. On a positive note, I'm pretty sure our DFIR users will find these features very useful. Cheers
@ikelos if you are happy with the last changes, it should be ready to go
@ikelos I believe everything is done on my end. Please take a look when you have time. Cheers
Yep, looks good, going to merge now, thanks for your patience getting it all sorted! 5:)
Yep, looks good, going to merge now, thanks for your patience getting it all sorted! 5:)
Thank you, and again... very sorry for the long PR, I will submit smaller PRs next time. Very happy that Volatility3 now includes these features
This PR includes abstractions for RadixTree, XArray, Page Cache and IDR to ensure support with both older and the newest kernel versions. The RadixTree and XArray enable the implementation of other subsystems like the Page Cache and IDR.
This is the final iteration of other PRs which are part of this feature.
Besides the Page Cache plugins, we added two more plugins to this PR to be able to test the whole code with different kernel versions.
Inode Page Cache
linux.pagecache.Files plugin
This plugin can list all inodes, filter by type and find filenames. Basically, it shows superblock, dentry and inode info. It also supports the Timeliner plugin.
For instance, to list all inodes:
Filtering by file type. For instance, list the top Regular files with more pages in cache:
Find a specific file name:
linux.pagecache.InodePages plugin
This plugin requires either an inode address (--inode) or a filename (--find) to search for the inode, and optionally, you can use (--dump) to dump the inode's page cache contents which is the primary and greatest goal of this effort.
Example 1, via inode address:
Same inode but finding it via its filename:
Checking the results:
Example 2:
Dump the inode:
Check the file:
IDR
linux.ebpf.EBPF
A basic plugin to enumerate eBPF programs using the prog IDR. Tip for devs: Other contributions using the maps, links, etc. IDRs and even extending this plugin are welcome ;)
Test the plugin on a Cilium installation.
linux.pidhashtable.PIDHashTable
This is based on the vol2 plugin, removing ancient kernel support, curating code and enhancing comments, while using the new IDR abstraction included also in this effort.