Execution
Windows Error Reporting (WER)
Windows Error Reporting cheat sheet: Report.wer folders, AppPath and SHA-1 fields, Application events 1000/1001/1002, LocalDumps crash dumps and retention.
- Location
- C:\ProgramData\Microsoft\Windows\WER\ReportArchive\<ReportFolder>\Report.wer
- Proves
- A program ran and crashed or hung, with its full path, time and sometimes its SHA-1
- Timestamps
- Report.wer EventTime and app start time as FILETIME, UTC; Application events 1000/1001/1002 in UTC; folder $SI times less reliable
- Retention
- Default caps: 1,000 archived and 50 queued reports, oldest dropped; LocalDumps off by default; events last until the log rolls over
- Access
- Administrator for system WER folders (robocopy /B), per-user folders in each profile; Application.evtx locked live, use wevtutil
- Evidence of
- Execution
- Type
- File / file system
- Windows
- Vista / 78 / 8.11011
- KAPE target
- WER
- Velociraptor
- Windows.Triage.Targets:WER
Tools
Compare all toolsWhat it is
Windows Error Reporting (WER) is the service that handles application crashes, hangs and some kernel problems. For each event it builds a report folder containing a text file named Report.wer (plus, in some cases, memory dumps and metadata) and writes matching entries to the Application event log. For an investigator, WER is a quiet source of evidence of execution: exploit code, unstable implants, credential dumpers and hacking tools crash often, and the report survives after the attacker deletes the binary.
Location
| Scope | Path | Notes |
|---|---|---|
| System-wide (Vista and later) | C:\ProgramData\Microsoft\Windows\WER\ReportArchive\ | Reports already processed or sent |
| System-wide | C:\ProgramData\Microsoft\Windows\WER\ReportQueue\ | Reports waiting to be sent or for user consent |
| Per user | C:\Users\<user>\AppData\Local\Microsoft\Windows\WER\ReportArchive\ and ...\ReportQueue\ | Crashes of processes running in the user's context |
| Local dumps (if configured) | %LOCALAPPDATA%\CrashDumps\ by default | Enabled through LocalDumps, see below |
| Event log | Application.evtx: source Application Error (1000), Windows Error Reporting (1001), Application Hang (1002) | Rolls over with the Application log |
| Configuration | HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting (also under HKCU) | LocalDumps is HKLM only |
Report folders are named after the event type and application, for example AppCrash_<exe name>_<hash>_<id>, AppHang_... or Kernel_....
What it proves
- Execution: the application at
AppPathwas running when it crashed or hung. A report forC:\Users\Public\x.exeproves that file existed and ran. - Identity of a deleted binary: on Windows 10 and later, many system-wide reports carry a SHA-1 of the executable in
TargetAppId, in the same0000-prefixed form as Amcache. Not every report has it. - What was loaded:
LoadedModule[n]lists the DLLs in the process, which can expose an injected module inside a legitimate host. - Process start time: event 1000 records the faulting application's start time and PID.
- It does not prove the user launched the program deliberately, and a program that never crashed leaves nothing here.
Key fields
Field (Report.wer) | Meaning |
|---|---|
EventType | Kind of report, for example APPCRASH for a crash |
EventTime | When the event occurred (FILETIME) |
FriendlyEventName | Readable label, for example "Stopped working" |
AppName, AppPath | Product description of the program and full path of the executable |
NsAppName, OriginalFilename | Internal name and PE original file name; a mismatch with AppPath reveals renaming |
TargetAppId | Application identifier; for non-Microsoft programs it can start with W: followed by 0000 and the SHA-1 |
ApplicationIdentity | Hash-like identifier of the application |
Sig[n].Name / Sig[n].Value | Problem signature: application and fault module names, versions, exception code and offset |
LoadedModule[n] | Full paths of loaded modules |
Event 1000 (Application Error) holds the faulting application and module names and versions, exception code, fault offset, faulting process ID, application start time, application path, module path and a Report Id. Event 1001 (Windows Error Reporting) holds the fault bucket, event name, problem signature, attached files and the folder where the report is stored.
Timestamps
| Timestamp | Set when | Format | Pitfalls |
|---|---|---|---|
EventTime | Crash or hang detected | FILETIME, UTC | Parsers must decode the 64-bit integer; do not read it as a local clock |
| "Faulting application start time" (1000) | Process creation | FILETIME in hex, UTC | Gives the start time, not only the crash time |
Event TimeCreated (1000/1001/1002) | Event written | FILETIME, UTC | 1001 can be written later than 1000, when the report is processed |
Report folder and Report.wer $SI times | Report created or moved from queue to archive | NTFS, UTC | Moving a report changes folder times; trust EventTime |
Retention and clearing
- Documented defaults:
MaxArchiveCount1,000 reports andMaxQueueCount50 reports; the oldest are dropped beyond that. - WER can be disabled with
Disabled= 1, archiving withDisableArchive= 1 and queuing withDisableQueue= 1 under the WER key or its policy equivalent. Any of these on a workstation deserves a question. - Disk Cleanup offers to delete error-report files, and attackers can simply wipe the WER folders. Deletions may still show in the USN journal and the $MFT, and Application events 1000/1001 outlive the files until the log rolls over.
- LocalDumps (Windows Vista SP1 and later) is off by default. Under
HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps(global or per<exe>subkey),DumpFolder(default%LOCALAPPDATA%\CrashDumps),DumpCount(default 10) andDumpType(0 custom, 1 mini, 2 full) control dumps kept locally. ALocalDumps\lsass.exesubkey withDumpType2 is a credential-theft red flag.
Collection
- KAPE target:
WER(both WER trees,CrashDumpsand*.dmpinC:\Windows). - Velociraptor (
Windows.Triage.Targets):WER. - Built-in: the folders are readable by administrators; keep timestamps with
robocopy. Export the Application log for events 1000/1001/1002 and the WER key from the SOFTWARE hive.
robocopy C:\ProgramData\Microsoft\Windows\WER E:\case\WER\System /E /COPY:DAT /DCOPY:T /B
wevtutil epl Application E:\case\Application.evtx
reg export "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting" E:\case\wer-config.reg
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000,1001,1002} | Format-List TimeCreated, Id, Message
Parsing tools
- Any text editor or
Get-Content:Report.weris plainName=Valuetext in UTF-16. - AppCrashView (NirSoft, free): lists crashes from the WER report files of a live or mounted system.
- EvtxECmd (Eric Zimmerman): includes a map for Application event 1001 (Windows Error Reporting).
- Velociraptor: the community artifact
Windows.System.WindowsErrorReporting(artifact exchange) extractsEventTime,AppPath,OriginalFilenameand the SHA-1 fromTargetAppId. - WinDbg: analyse any dump attached to a report or kept by LocalDumps (see crash dumps).
Investigation tips
- Grep every
Report.werforAppPathvalues in user-writable folders (\Temp\,\Downloads\,\Users\Public\,\ProgramData\) and for tool names such asmimikatz,procdump,rcloneorpsexec. - Extract the SHA-1 from
TargetAppIdand look it up in Amcache and threat intelligence, even when the binary is gone. - Compare
OriginalFilenamewith the file name inAppPath:svchost.exewhose original name ismimikatz.exeis a renamed tool. - Crashes of
lsass.exe,explorer.exeor a browser with an unexpected module inLoadedModulecan reveal injection; check the module path against Prefetch. - A burst of crashes of the same binary at intrusion time often matches an exploit being retried; line up
EventTimewith logons in the event logs. - A Defender kill or quarantine can also make a process die; cross-check with Microsoft Defender logs before calling it a crash.
Related artifacts
- Crash dumps (MEMORY.DMP, minidumps)Crash dump cheat sheet: MEMORY.DMP and minidump locations, CrashControl dump types, user-mode dumps, LSASS dumping traces and tools to analyse them.
- Amcache.hveAmcache.hve cheat sheet: file and program inventory keys, SHA-1 hashes, PE metadata, timestamps and why an entry alone does not prove execution.
- Prefetch Files (.pf)Windows Prefetch cheat sheet: .pf location per version, run count, the last eight run times, referenced files, retention limits and how to parse.
- Windows event logs (EVTX)Windows event log cheat sheet: EVTX locations, must-know event IDs for logons, processes, services and log clearing, retention, audit policy and parsing tools.
- Microsoft Defender logs and quarantineMicrosoft Defender forensics: Operational events 1116/1117/5001/5007, MPLog files, DetectionHistory, encrypted quarantine, exclusion keys and tampering traces.
Glossary terms
- Evidence of executionArtifacts that show a program actually ran on a Windows system, as opposed to merely existing on disk, and how strongly each one supports that claim.
- FILETIMEThe 64-bit Windows timestamp format counting 100-nanosecond intervals since 1 January 1601 UTC, used by NTFS, the registry and many artifacts.
- Windows event IDThe number identifying an event type within a given provider; it only has meaning when paired with its provider and log channel.
- Anti-forensicsTechniques used to destroy, hide or falsify evidence, such as log clearing, timestomping, wiping and deleting shadow copies or the USN journal.