Skip to content

false00/holoForensics

Repository files navigation

Holo Forensics

Holo Forensics

Contract-driven Windows evidence collection and offline artifact parsing in one Rust runtime.

Holo Forensics desktop collection setup

Holo Forensics is a Windows-first forensic workbench for investigators who need repeatable evidence packaging and reviewable offline parsing without black-box tooling. It collects high-value artifacts into path-preserving archives with manifests, SHA-256 metadata, and documented collection contracts, then parses supported evidence into plain JSONL that is easy to review, diff, search, and hand off.

Most people should start with the desktop app. The UI now separates that workflow into two focused pages: Collect for source selection, evidence-scope review, packaging, and live collector status, and Parse for zip selection, parse planning, live plan tracking, and output telemetry.

The same Rust runtime also powers the CLI for labs, automation, and validation, but the main workflow is designed around the desktop experience.

Start With The Desktop App

Download the latest Windows release from the latest release page.

If you are evaluating Holo Forensics or using it for casework, start with the packaged desktop build instead of building from source.

Then follow the normal operator flow:

  1. Choose the source volume you want to collect from.
  2. Review or customize the evidence scope before packaging.
  3. Pick the destination folder and create the evidence package.
  4. Switch to the Parse page when you want to browse to a collection zip, inspect supported artifacts, and run offline parsing.

If you need to tune throughput for a large workstation or a quieter lab VM, the Settings dialog now includes an execution mode with separate collection-worker and parse-worker limits. Auto keeps the runtime on bounded defaults; Custom lets you pin explicit worker counts.

The same execution tuning is available to CLI and automation workflows. Offline parse runs accept --parse-workers, and request-driven collection archive runs accept collect-collection-archive --collection-workers. The full command details stay in the wiki home technical reference.

If you want source-build, CLI, or lab-validation details, use the wiki home technical reference.

The desktop UI gives analysts a focused Windows collection workflow with source selection, scope review, package destination, live collector status, and artifact-level progress.

Holo Forensics evidence scope review

The scope dialog makes it clear which evidence groups are live today, which are planned, and where tuneable collection options exist before you start acquisition.

Desktop UI Preview

Holo Forensics desktop collection progress

The collection view is built for Windows acquisition: choose a source volume, confirm the scope, set the package destination, and watch each collector move from queued to staged or complete.

The app also includes a dedicated Parse page for existing evidence archives, with zip and output selection, detected-artifact toggles, live parser-plan status, and CPU/RAM/I-O telemetry beside the standard settings and shadow-copy recovery prompts.

Holo Forensics desktop parse page

The parse view keeps archive selection, supported-artifact detection, live parser-plan tracking, and system telemetry in one place so you can inspect or run offline parsing without leaving the desktop workflow.

Why This Exists

Investigators usually have to trade off between tools that are easy to run, easy to automate, and easy to validate after the fact. Holo Forensics is built to narrow that gap:

  • One Rust runtime for desktop and CLI workflows, without shell-script glue as the core execution path
  • Path-preserving evidence packages with SHA-256 hashes, manifests, and explicit collector metadata
  • VSS-backed Windows acquisition paths that keep related artifacts aligned to a defensible point in time
  • Offline parsing that only runs documented artifact contracts instead of opaque best-effort guesses
  • Plain JSONL, logs, and manifests that are easy to review, diff, hand off, or ingest into search systems

Current Windows Coverage

Holo Forensics has two separate jobs: Create Package collects Windows artifacts into a preserved zip layout, and Parse Mode turns supported artifacts into JSONL. Some collected artifacts are preserved for later analysis even if Holo does not parse them yet.

Parse Mode also recognizes Windows Search databases in supplied evidence packages and parser-only raw-input contracts for Shim databases, restore-point logs, and Windows Timeline when those files already exist inside the archive.

In the parity column below, means Create Package and Parse Mode both cover that Windows surface today. 🕒 means one side exists today, but the matching collector or parser is still missing.

Collects Today

Parity Surface What is collected
Windows Event Logs C:\Windows\System32\winevt\Logs\*.evtx, including archived EVTX logs
Registry Hives System hives, user hives, service-profile hives, AmCache, BCD, and registry transaction logs
Prefetch C:\Windows\Prefetch\*.pf, Layout.ini, and Ag*.db from a VSS snapshot, with timestamps, file attributes, and SHA-256 metadata
Microsoft Protection Logs C:\ProgramData\Microsoft\Windows Defender\Support\MPLog*.log from a VSS snapshot, preserved raw with SHA-256 verification and no registry or EVTX duplication
BITS C:\ProgramData\Microsoft\Network\Downloader\qmgr0.dat, qmgr1.dat, and qmgr.db from a VSS snapshot, preserved raw with SHA-256 verification and no registry or EVTX duplication
Scheduled Tasks C:\Windows\Tasks\**, C:\Windows\SchedLgU.txt, and C:\Windows\System32\Tasks\** from a VSS snapshot, preserved raw with directory metadata and SHA-256 verification
WMI Repository C:\Windows\System32\wbem\Repository*\**, C:\Windows\System32\wbem\AutoRecover\**, and top-level C:\Windows\System32\wbem\*.mof / *.mfl from a VSS snapshot, preserved raw with directory metadata, SHA-256 verification, and no registry or EVTX duplication
🕒 PowerShell Activity PSReadLine history, user profile scripts, likely transcript files, and selected script/config files from user PowerShell roots in a VSS snapshot, with skipped-file logging and no registry or EVTX duplication
Browser Artifacts Chromium and Firefox history by default, with optional browser support material such as cookies, sessions, storage, legacy Edge/WebCache, DPAPI material, NTUSER.DAT, and supporting hives available through Browser Artifacts tuning
Outlook Stores Per-user Outlook .ost and .pst stores from default and legacy Outlook roots in a VSS snapshot by default, with optional Content.Outlook attachment-cache files and raw new Outlook Store-app package-state roots under AppData\Local\Packages\Microsoft.OutlookForWindows_*\{AC,LocalCache,LocalState,RoamingState,Settings,SystemAppData,TempState} available through Outlook tuning or CLI flags
Jump Lists Per-user AutomaticDestinations and CustomDestinations plus jump_lists_manifest.jsonl
LNK Files Recent, Office Recent, Desktop, and Start Menu .lnk files from a VSS snapshot, preserved raw with lnk_manifest.jsonl and no shortcut-target resolution
Recycle Bin Modern $I* and legacy INFO2 by default, with optional raw $R, renamed payload, and support-file preservation through Recycle Bin tuning plus recycle_bin_manifest.jsonl
SRUM C:\Windows\System32\sru\* plus SOFTWARE and SYSTEM hives
$MFT NTFS $MFT through VSS raw-NTFS extraction
🕒 $LogFile NTFS $LogFile through VSS raw-NTFS extraction
🕒 INDX Records Raw NTFS $I30 index attributes from directory records
$UsnJrnl $Extend\$UsnJrnl:$J with sidecar or centralized collector metadata

Create Package preserves original Windows paths where applicable, hashes collected bytes with SHA-256, and writes collector metadata under $metadata/collectors/<volume>/<collector>/. Recycle Bin collection now defaults to modern $I* metadata and XP INFO2, with full raw modern and legacy on-disk preservation still available through Recycle Bin tuning or CLI flags; Parse Mode covers modern $I* metadata through windows_recycle_bin and XP INFO2 through windows_recycle_bin_info2. Outlook collection now defaults to classic .ost/.pst stores. Content.Outlook attachment cache content and targeted new Outlook package-state roots discovered under Microsoft.OutlookForWindows_* package families remain available through Outlook tuning or CLI flags, but Parse Mode currently binds only the classic store files to windows_outlook.

Parses Today

Parity Parser family Artifact support Collection/input contract
windows_browser_history Chrome, Edge, and Firefox local browser history databases windows_browser_artifacts_collection
windows_event_logs Active and archived .evtx event logs windows_evtx_collection
windows_prefetch Windows Prefetch .pf files windows_prefetch_collection
windows_mplogs Microsoft Defender Support MPLog*.log operational logs with raw-line preservation, normalized fields, and timestamp assumptions windows_mplogs_collection
windows_bits BITS job databases qmgr.db, qmgr0.dat, and qmgr1.dat windows_bits_collection
windows_search Windows Search databases Windows.edb and Windows.db windows_search_collection
windows_outlook Outlook .ost and .pst stores; attachment cache and new Outlook package-state remain optional raw evidence today windows_outlook_collection
🕒 windows_shimdb Application compatibility .sdb databases Parser-only windows_shimdb_collection
windows_userassist UserAssist registry data from NTUSER.DAT windows_registry_collection
windows_shimcache ShimCache/AppCompatCache data from SYSTEM windows_registry_collection
windows_shellbags Shellbags from NTUSER.DAT and USRCLASS.DAT windows_registry_collection
windows_amcache Amcache.hve execution and install inventory windows_registry_collection
windows_shortcuts Windows shortcut .lnk files windows_lnk_collection
windows_srum SRUDB.dat SRUM records windows_srum_collection
windows_users Local user and RID data from SAM windows_registry_collection
windows_services Service configuration data from SYSTEM windows_registry_collection
windows_jump_lists AutomaticDestinations and CustomDestinations Jump Lists windows_jump_lists_collection
windows_recycle_bin Modern Recycle Bin $I* metadata files windows_recycle_bin_info2_collection
windows_scheduled_tasks Legacy .job tasks and modern task files under System32\Tasks windows_scheduled_tasks_collection
windows_wmi_persistence WMI persistence data from repository OBJECTS.DATA windows_wmi_repository_collection
windows_mft Raw NTFS $MFT evidence windows_mft_collection
windows_usn_journal Raw NTFS $Extend\$UsnJrnl:$J streams, including sidecar-aware sparse-range parsing for USN record versions 2 and 3 windows_usn_journal_collection
windows_registry Offline Windows Registry hives including NTUSER.DAT, UsrClass.dat, Amcache.hve, SYSTEM, SOFTWARE, SAM, SECURITY, DEFAULT, COMPONENTS, settings.dat, and drvindex.dat windows_registry_collection
🕒 windows_restore_point_log Windows restore-point rp.log Parser-only windows_restore_point_log_collection
windows_recycle_bin_info2 Windows XP recycle-bin INFO2 windows_recycle_bin_info2_collection
🕒 windows_timeline Windows Timeline ActivitiesCache.db Parser-only windows_timeline_collection

Parity Gaps To Close

Collector exists, matching parser is still missing:

  • windows_powershell_activity_collection
  • windows_logfile_collection
  • windows_indx_collection

Parser exists, matching live collector is still missing:

  • windows_shimdb -> windows_shimdb_collection
  • windows_restore_point_log -> windows_restore_point_log_collection
  • windows_timeline -> windows_timeline_collection

Most of the additional Windows parser families run through the shared adapter in src/parsers/windows/artemis.rs and a vendored Artemis v0.19.0 workspace under third_party/artemis. That local fork preserves the existing Holo Forensics plan, manifest, and JSONL output contracts while keeping the Windows offline-file fixes in-repo. Create Package does not yet collect parser-only inputs for Shim databases, restore-point logs, or Windows Timeline, and Parse Mode does not yet have matching parser families for PowerShell Activity, $LogFile, or INDX collector output.

Getting Started

Prerequisites

  • Rust stable with Cargo

What The Desktop App Supports

The desktop UI supports:

  • Collection section: Full, Triage, and Custom profiles are exposed in the UI. The Collection tab presents the Windows collection surfaces listed above, with available live collectors for event logs, registry, Prefetch, Microsoft Protection Logs, BITS, Windows Search, Scheduled Tasks, WMI Repository, PowerShell Activity, browser artifacts with tuneable subcollections and parsed-history defaults, Outlook stores with tuneable raw attachment-cache and new Outlook package-state opt-ins, Jump Lists, LNK Files, Recycle Bin, SRUM, $MFT, $LogFile, INDX records, and $UsnJrnl.
  • Collection workflow section: when multiple VSS-backed collectors run for the same volume, the package workflow reuses one shared point-in-time VSS snapshot so related artifacts stay aligned.
  • Parse Mode section: use the Parse page to browse to a selected zip, detect supported artifact groups, choose which detected groups to run, watch live plan status and resource telemetry, and write parser results without blocking the UI.
  • Settings section: persist theme, Elasticsearch destination defaults, and shared execution tuning for collection and parse worker limits. The password remains session-local.
  • Failure handling section: collection and parse failures surface through desktop error dialogs, and startup failures before Slint is ready fall back to a native Windows error dialog with the technical log path.
  • Runtime safety section: VSS shadow copies created by Holo Forensics are tracked under ~/.holo-forensics/vss-shadow-copies.json. If the app starts and those tracked snapshots still exist, the desktop UI prompts to keep them for reuse or delete them before continuing. When Windows blocks live VSS revalidation for the current session, the recovery dialog falls back to the tracked snapshot metadata so analysts can still decide whether to keep or remove the old snapshots.

If you want advanced CLI workflows, release-build steps, or collector command details, use the wiki home technical reference.

Output Layout

Each run writes:

output/<collection-name>/
  extracted/
  results/
    <family>/
      *.jsonl
      *.log
  manifest.json

manifest.json records enabled parser families, bound collections, parser plans, outputs, logs, and per-plan status.

Repository Layout

  • src/ -> active Rust CLI and runtime
  • src/collection_catalog.rs -> built-in collection catalog and parser-to-collection validation
  • src/collections/windows/ -> live Windows collector implementations for BITS, browser artifacts, Outlook stores with optional attachment-cache and new Outlook package-state raw preservation, EVTX, Jump Lists, LNK Files, Microsoft Protection Logs, PowerShell Activity, Prefetch, Recycle Bin, Scheduled Tasks, WMI Repository, registry, $MFT, $LogFile, INDX records, SRUM, and $UsnJrnl
  • src/parsers/windows/ -> native and vendored-Artemis-backed Windows parser implementations for browser history, EVTX, Prefetch, registry-derived artifacts, LNK files, Jump Lists, SRUM, Recycle Bin, Scheduled Tasks, WMI persistence, $MFT, USN journal, restore-point logs, XP recycle-bin INFO2, and Windows Timeline
  • third_party/artemis/ -> vendored Artemis v0.19.0 workspace maintained in-repo for Windows offline parsing fixes
  • src/parser_catalog.rs -> built-in parser family catalog
  • holoForensics.wiki/ -> parser and collection documentation

Documentation

License

Limitations

  • Windows-focused collection and parsing
  • Offline parsing only
  • Some UI collection surfaces are planned and not yet implemented
  • Parser and collector coverage is limited to the families listed above