إنتقل إلى المحتوى الرئيسي

Live triage

What this page is

The live triage module that collects forensic artifacts from a Windows endpoint on operator demand, the upload protocol, the progress event stream, and the catalog of triage targets.

Why it exists this way

During an active investigation, analysts need immediate access to forensic artifacts without waiting for a full-disk image transfer. The triage module collects a targeted set of artifacts (process memory dumps, event logs, registry hives, auto-run entries, network state) and streams them to the Collector as a compressed package. The same module serves automated triage triggered by high-severity detection rules so first-response data is collected before an adversary can clean up.

How it works

The edr_windows::triage module exposes two collection modes:

collect_single_target(target: TriageTarget) -- collects one artifact type and returns its raw bytes with metadata.

collect_triage_package(targets: &[TriageTarget]) -- collects multiple targets, compresses them into a single ZIP archive, and streams the archive to the Collector via a unary gRPC call. A TriageProgress event stream reports per-target completion so the operator console can show real-time progress.

Triage targets

TargetData collectedSize estimateDuration estimate
ProcessMemory { pid }Full process memory dump (MiniDumpWriteDump)50 MB-2 GB10-60 s
EventLog { name }Windows Event Log export (.evtx)1-100 MB5-30 s
RegistryHive { path }Registry hive export (.reg)1-50 MB5-20 s
AutorunsAuto-run entries (WMI, registry, startup folder, services)<1 MB3-10 s
NetworkStateTCP/UDP listener table, established connections<1 MB2-5 s
ProcessTreeFull process tree with command lines and parent relationships<2 MB5-15 s
Prefetch { limit }Recent Prefetch file contents (up to N files)1-50 MB5-30 s
AmCacheAmCache.hve Shim Engine compatibility database10-200 MB5-30 s
ScheduledTasksAll scheduled task XML definitions<5 MB3-10 s
ServicesService configuration (name, binary path, start type, signed)<2 MB3-8 s
FileModifications { path, since }Files modified in a directory tree since a timestamp1-500 MB10-120 s
PersistenceItemsKnown persistence locations (registry, startup, WMI, services)<1 MB5-15 s

Memory dump format

Process memory dumps use MiniDumpWriteDump with MiniDumpWithFullMemory | MiniDumpWithHandleData | MiniDumpWithTokenInformation flags. The dump includes full memory, open handles, and token info so analysts can inspect injected threads, loaded modules, and privilege escalation artefacts.

Upload protocol

The triage package is uploaded as a single gRPC unary call with a 300-second timeout. The package is compressed with deflate (ZIP) at level 6. If the upload fails, the package is stored on disk at %ProgramData%\AuroraEDR\triage\ and retried up to 3 times with 30-second backoff.

Auto-runs enumeration

The Autoruns target collects from these persistence locations:

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run and RunOnce
  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run and RunOnce
  • HKLM\SYSTEM\CurrentControlSet\Services (Start=2 auto-start)
  • %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup\
  • %AppData%\Microsoft\Windows\Start Menu\Programs\Startup\
  • WMI __EventFilter / __FilterToConsumerBinding instances
  • Scheduled tasks (via schtasks /query /fo CSV /v)
  • AppInit_DLLs and AppCertDlls registry keys
  • Winlogon shell and userinit values

Each entry includes the binary path, digital signature status, and the first-seen timestamp from the Prefetch database.

What goes wrong

  • MiniDumpWriteDump fails for protected processes (PPL). The error is reported with TriageError::ProtectedProcess and the operator is told which process could not be dumped.
  • TriageError::DiskFull, the triage package exceeds available disk space. The collection aborts and partial data is deleted. The error includes the free-space threshold that triggered the abort (default 500 MB minimum).
  • TriageError::AccessDenied, the sensor lacks permissions to read a target (e.g., a registry key owned by TrustedInstaller). The per-target progress reports the denial and continues with the remaining targets rather than aborting the entire package.
  • Event log export fails because the log is corrupted. The EventLog target catches ERROR_EVENTLOG_FILE_CORRUPT and reports it as TriageError::CorruptEventLog with the affected log name.