-
Notifications
You must be signed in to change notification settings - Fork 481
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
Feature: Remote analysis on cloud object-storage. #1037
Feature: Remote analysis on cloud object-storage. #1037
Conversation
@forensicxlab - this is a really neat idea! Please wait for a review from a core dev before you waste any time trying to 'fix' my comments - I'm just a random internet vol user - but I thought I'd at least give you a view from someone else. I hope it helps. The main thing I thought when looking at this is how it would break using vol with only the minimal requirements (e.g. just pefile) so even if you were on an offline laptop or something you'd need the packages to read from s3 even though you never would need to. I think it might be a better idea to add this in much like the If you look at the leechcore layer (https://github.com/volatilityfoundation/volatility3/blob/develop/volatility3/framework/layers/leechcore.py) you'll see how it adds the I think you might be able to use a Really cool work - I can see this kind of thing being useful in an enterprise where lots of memory is being pulled back quickly into s3 or similar that needs processing quickly by some machine in AWS or similar. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks very much for the contribution, it looks like it'll be awesome! Sadly it's tinkering a lot in parts of the core and the CLI, and it would be much more modular and have less impact on the existing running if it plugged into the python URL handler. There's already an example of doing this in the leechcore layer.
It tests whether the leechcore modules can import before it defines the classes, then it defines a VolatilityHandler
class. This will automatically get loaded if it's defined and it should read the URL, and if it can be handled, return the appropriate handler, and if not return None. The mechanism for this can be ready about at the python docs for OpenDirectors. You can provide a hint as to whether volatility should try to cache the contents of the URL or not (with full memory images, almost certainly not) by overriding the non_cached_schemes
method to provide the URL scheme that shouldn't be cached. Otherwise the class is just a normal BaseHandler.
I won't be merging this in its current form, but if you get it ported over the Handler model, then I'll definitely get it merged! Please shout if you need a hand with anything, feel free to do updates in this PR rather than starting a new one... 5:)
2b208db
to
fa2b840
Compare
I think I got it right this time. I have reset to commit 581c493 to undo my previous modifications and pushed the new implementation. Let me know what you think :) Thank you both again, I have learned a lot ! Best regards. S3 buckets
GCS buckets
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks very much, this looks MUCH cleaner and nicer!
Only a few points:
- we use
__name__
instead of__file__
so to keep the logs consistent, this should use that too. objectstorage.py
feels a little generic? Wouldcloudstorage
by more accurate?- the URL handling feels like a string mangling rather than a library usage, could we turn it into a library usage, so we get all the free benefits please?
… requirement condition placement.
Hello @ikelos,
I think the leechcore plugin might be subject to your comments regarding the URL parsing method and logger used. |
Ah, you're right, leechcore does it almost the same way... I'm probably just being overly cautious, and this isn't exactly a URL, it's more a way to pass a kind of a connection string through to the code, so I'll merge it as it. Thanks for all your work on it! 5:) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, thanks! 5:)
Hmmm, this has shown up some issues during testing. Volatility 3 supports python 3.7 and upwards, but the version depended on (2023.6.0) is only for 3.8 and above. It looks like 2023.1 is the last version that supported 3.7. Do you know if the plugin will work with that version and whether we could change the requirements to support that as the minimum version please? Also, could you run black over it to correct the formatting (or use the patch generated here to fix it) please? |
Hello @ikelos, should be ok now :) Best regards. |
Hello,
More information about the steps taken : https://www.forensicxlab.com/posts/vols3/
Best regards.