Commit Graph
82 Commits
Author SHA1 Message Date
Mike Auty eae84fd8e0 Ensure we only stack when needed
We shouldn't be stacking unless we're required, so now
we run after the construction phase, and run our own construction
phase is we've changed anything.
2016-12-12 02:06:54 +00:00
Mike Auty 046d1955b5 Ensure that only unfulfilled symbol requirements trigger the pdb scanner. 2016-12-12 02:04:20 +00:00
Mike Auty b9dbc80baf Improve logging of automagic actitivies. 2016-12-11 18:16:02 +00:00
Mike Auty 5d15f810e1 Tidy up the config namespace around automagic a little. 2016-12-11 13:58:17 +00:00
Mike Auty 9bb0745b83 Clean up the debug messages for pdbscanning. 2016-12-08 16:29:36 +00:00
Mike Auty 2aebb99ee6 Slightly improve the output and get rid of pointless parameters. 2016-12-08 16:24:59 +00:00
Mike Auty 8a0609e800 Add in a secondary scan to determine the kernel base in randomized kernel base systems. 2016-12-08 16:24:03 +00:00
Mike Auty 482516d93d Rework the kvo finding code to allow for Win10 kernel base randomization. 2016-12-08 14:56:32 +00:00
Mike Auty 631ae07a26 Insert a check to use valid kernels where a pdb signature is found in multiple locations. 2016-12-08 11:55:46 +00:00
Mike Auty 183ff67699 Attach the kernel virtual offset to intel spaces. 2016-12-07 16:00:31 +00:00
Mike Auty 6cb5d06d6d Ensure all offsets are normalized to fall within their layer's address range. 2016-12-07 00:07:57 +00:00
Mike Auty 734b9a68b8 Ensure we use math.log correctly.
This is unlikely to ever happen (since we use python3)
but still just as well to implement in case something else
similar comes up.

https://www.willmcgugan.com/blog/tech/post/finding-the-first-bit-set-with-python/
2016-12-06 23:40:21 +00:00
Mike Auty 40694ff26c Add a note about precedence to the pdb loader. 2016-12-06 09:08:51 +00:00
Mike Auty a064c76628 Ensure we initialize kvo, change the filename format and give human readable feedback on the choice of natives. 2016-12-06 02:44:50 +00:00
Mike Auty 05ae4aa64a Fix up offset for PAE. 2016-12-04 10:24:33 +00:00
Mike Auty d8b72cfc14 Add in checks and set the appropriate kernel location for all architectures. 2016-12-04 02:17:11 +00:00
Mike Auty 4121895d4d Ensure the kernel virtual to physical offset mapping is correct. 2016-12-04 01:21:10 +00:00
Mike Auty 23fd704027 Add in the kernel offset recursion code. 2016-12-04 01:00:37 +00:00
Mike Auty 9a3402ccff Fix the incorrect signature offset returned. 2016-12-03 21:39:04 +00:00
Mike Auty 70815b0837 Shift the location of the pdbscan prefix/suffix values. 2016-12-02 21:44:23 +00:00
Mike Auty ed552d20e8 Add in support for lzma compressed json data. 2016-12-02 01:34:07 +00:00
Mike Auty c86f0ddef4 Add in a very rudimentary kernel PDB finding plugin that identifies and automatically loads the appropriate kernel for the image. 2016-11-27 23:40:19 +00:00
Mike Auty b2c3c76954 Don't forget the fixes that still need to happen. 2016-11-19 23:41:35 +00:00
Mike Auty 72259008f3 Use the physical layer and improve the output.
The physical layer will miss certain patterns, but is an order of
magnitude faster at scanning.  The main amount of time spent in scanning
Intel spaces is counting through every page in the address space (32, 40
or 64 bits), not the actual scanning.  There's no real way around this
if you want to ensure you get every chunk of virtual memory.  Since the
scanner could be stopped after its first hit, this might still be
preferable, but should not be the default (particularly for an automagic
scan).
2016-11-19 23:36:48 +00:00
Mike Auty 38b1c61acc Remove debugging values from the pdb scanner. 2016-11-18 17:18:50 +00:00
Mike Auty 3c181e940e Tidy up to use a single method for reading from the context. 2016-11-18 17:18:30 +00:00
Mike Auty f688af529b Initial commit of pdb kernel scanning automagic code. 2016-11-18 11:39:55 +00:00
Mike Auty 28fdbbe348 Refactor the pdb names, to make the class more generic. 2016-11-03 00:53:08 +00:00
Mike Auty df2172754c Refactor the pdbscanning code so it doesn't sneak into the library accidentally. 2016-11-01 23:32:12 +00:00
Mike Auty d6039fb899 Initial port of npetroni's pdbscanner (with bugfix for multiple RDRS entries in a single scan chunk). 2016-11-01 02:06:08 +00:00
Mike Auty 667014a1fd Attempt to standardize error message display. 2016-10-30 17:51:45 +00:00
Mike Auty f771de3703 Tidy up error messages. 2016-10-30 17:07:48 +00:00
Mike Auty d232be2f6e Try to update the generic dtb finder to rule out false positives. 2016-10-01 22:13:42 +01:00
Mike Auty 1a83470993 Convert dtbfinder to a standalone app.
This is in development so that it's clearly not production code
(and should not expect to be supported as such).
2016-09-25 19:33:04 +01:00
Mike Auty fbe3682592 Allow stack functions to return None as a failure response. 2016-08-26 08:29:45 +01:00
Mike Auty 32bdeafa8a Improve the stacker to append the generated stack configuration into the original context. 2016-08-24 01:31:45 +01:00
Mike Auty 721d5ade3f Give the LowestLayer a proper name in the interim configs, and ensure it's in the stack. 2016-08-24 01:30:32 +01:00
Mike Auty 04b760ee3e Increase the priority so this is always run first, and we're going to use the requirement variable. 2016-08-24 01:29:53 +01:00
Mike Auty 01616af655 Remove comment, it's already been converted. 2016-08-24 01:11:46 +01:00
Mike Auty 546bca1893 Rename the IntelHelper to make it a little more accurate. 2016-08-22 02:28:20 +01:00
Mike Auty 3dc161f9b4 Rework Translation Layers to tie more closely to configurations
This change is quite signficant, and requires that TranslationLayers
get all additional parameters that they need through their requirements.

These are now automatically enumerated and populated on object
construction based on the requirements, so should not require lots of
repetitive filling out of fields.

It does come with the downside that TranslationLayers can only be
contructed with a context (and appropiate config), but TLs in particular
always require a context (to contain the base layer) and blank configs
can be constructed relatively easily (convenience functions can be added
if necessary).

This allows configuration trees to be built up, and their configs
spliced into an existing config (as if it were being loaded from a
file).

Not all ConstructableRequirements use this method, since SymbolTables
(for example) do not have access to the context or config_path in order
to get to any parameters stored in the context's config.  They therefore
are still passed their requirement values as __init__ parameters
instead.
2016-08-22 02:20:10 +01:00
Mike Auty eb5e3f69de Ensure we're not importing sub-imports from something else. 2016-08-22 02:01:31 +01:00
Mike Auty f48ee5ff33 Add in the actual stacking automagic. 2016-08-22 00:06:04 +01:00
Mike Auty 7648c94083 Add in the intial works at a stacking plugin to emulate volatility 2 address space stacking. 2016-08-22 00:00:21 +01:00
Mike Auty f0cf128bdd Add in the self-referential tests to the standalone component of the windows automagic module. 2016-08-20 16:55:32 +01:00
Mike Auty c38d650819 Add in generic self-referential tests. 2016-08-20 16:54:04 +01:00
Mike Auty 77f295f0a4 Calculate the pointer size, rather than taking it as an argument. 2016-08-20 16:53:36 +01:00
Mike Auty 2467917431 Fix up DTB Finder which was broken in commit eccfb1c2. 5:S 2016-08-20 14:16:02 +01:00
Mike Auty 2bd12b834f Fix minor breakage from the previous reordering of parameters. 2016-08-17 23:25:08 +01:00
Mike Auty 6712d5dee1 Update the automagic uses to ensure a consistent ordering of the arguments. 2016-08-17 20:38:18 +01:00