Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi Dirk-jan,
Here is a PR for a new ROADtools plugin called ROAD2timeline.
ROAD2timeline was inspired by forensic tools like
plaso
/log2timeline
that can generate a forensic timeline of events based on the various timestamps found in evidence (usually file system MACB times, etc).The database created by ROADtools contains many timestamps across its tables. Here is a dump of the
DATETIME
columns based on the database schema:ROAD2timeline generates a timeline of all the Azure AD object timestamps in the ROADtools database. For example, if there are 10 rows and 4 datetime columns (ie, timestamps) in the
Devices
table, ROAD2timeline will create a timeline containing 40 entries in chronologically-sorted order.To make it easier for humans to review the timeline, I also included simple templates that are populated from the column values in a given row. These are defined and can be customized in a YAML file. For example:
The plugin will generate a timeline based on all the datetime columns in the database schema, even if a corresponding template is not defined. In this PR, I provide templates for about half of the columns in the schema. It would be helpful to get community feedback on the most useful way to represent these timeline entries. Users can also provide their own template file with a CLI option.
Example Usage
Users can analyze the timeline with their tool of choice. Here is an example of how I often parse these timelines in
pandas
:Known Issues/Caveats/Questions
pandas
module (and itsnumpy
dependency). If the users wants to export the timeline as aparquet
file, thenpyarrow
is also required. I am not sure what would be the best way to make these optionally installable or otherwise not break functionality for folks who want to run ROADtools without this plugin.add_args
function. I mostly copied how other plugins were structured.setup.py
, but it could use testing.logging
with plugins, so we are printing to console._timestamp_column
) and do not match the naming convention forlog2timeline
. This would be an easy change if literal interoperability between ROADtools andlog2timeline
is desired.I think that about sums it up! I hope others find this useful. Please let me know if you have any questions/issues and I will address them.
Thanks for all your work on ROADtools!! It rocks.
Ryan Marcotte Cobb