Skip to content

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

What 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

ScopePathNotes
System-wide (Vista and later)C:\ProgramData\Microsoft\Windows\WER\ReportArchive\Reports already processed or sent
System-wideC:\ProgramData\Microsoft\Windows\WER\ReportQueue\Reports waiting to be sent or for user consent
Per userC:\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 defaultEnabled through LocalDumps, see below
Event logApplication.evtx: source Application Error (1000), Windows Error Reporting (1001), Application Hang (1002)Rolls over with the Application log
ConfigurationHKLM\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 AppPath was running when it crashed or hung. A report for C:\Users\Public\x.exe proves 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 same 0000-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
EventTypeKind of report, for example APPCRASH for a crash
EventTimeWhen the event occurred (FILETIME)
FriendlyEventNameReadable label, for example "Stopped working"
AppName, AppPathProduct description of the program and full path of the executable
NsAppName, OriginalFilenameInternal name and PE original file name; a mismatch with AppPath reveals renaming
TargetAppIdApplication identifier; for non-Microsoft programs it can start with W: followed by 0000 and the SHA-1
ApplicationIdentityHash-like identifier of the application
Sig[n].Name / Sig[n].ValueProblem 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

TimestampSet whenFormatPitfalls
EventTimeCrash or hang detectedFILETIME, UTCParsers must decode the 64-bit integer; do not read it as a local clock
"Faulting application start time" (1000)Process creationFILETIME in hex, UTCGives the start time, not only the crash time
Event TimeCreated (1000/1001/1002)Event writtenFILETIME, UTC1001 can be written later than 1000, when the report is processed
Report folder and Report.wer $SI timesReport created or moved from queue to archiveNTFS, UTCMoving a report changes folder times; trust EventTime

Retention and clearing

  • Documented defaults: MaxArchiveCount 1,000 reports and MaxQueueCount 50 reports; the oldest are dropped beyond that.
  • WER can be disabled with Disabled = 1, archiving with DisableArchive = 1 and queuing with DisableQueue = 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) and DumpType (0 custom, 1 mini, 2 full) control dumps kept locally. A LocalDumps\lsass.exe subkey with DumpType 2 is a credential-theft red flag.

Collection

  • KAPE target: WER (both WER trees, CrashDumps and *.dmp in C:\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.wer is plain Name=Value text 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) extracts EventTime, AppPath, OriginalFilename and the SHA-1 from TargetAppId.
  • WinDbg: analyse any dump attached to a report or kept by LocalDumps (see crash dumps).

Investigation tips

  • Grep every Report.wer for AppPath values in user-writable folders (\Temp\, \Downloads\, \Users\Public\, \ProgramData\) and for tool names such as mimikatz, procdump, rclone or psexec.
  • Extract the SHA-1 from TargetAppId and look it up in Amcache and threat intelligence, even when the binary is gone.
  • Compare OriginalFilename with the file name in AppPath: svchost.exe whose original name is mimikatz.exe is a renamed tool.
  • Crashes of lsass.exe, explorer.exe or a browser with an unexpected module in LoadedModule can 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 EventTime with 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

Glossary terms

Guides

All artifacts on one page: cheat sheet