WER

1. 개요

Windows Error Reporting(WER)은 Microsoft의 자동 보고 시스템으로, Windows 운영 체제에서 발생하는 애플리케이션, 드라이버, 운영 체제 오류를 감지하고 보고한다. 디지털 포렌식 분석 관점에서 WER은 오류 발생 프로그램과 발생 시간을 확인할 수 있으며 연관된 이벤트 로그를 통해 시스템 활동을 추적할 수 있다.


2. 아티팩트 경로

WER 보고서 파일(Report.wer)

WER 보고서 파일은 시스템의 오류 보고서를 포함하며, 주로 다음 경로에 저장된다.

  • 경로: C:\\ProgramData\\Microsoft\\Windows\\WER

    • 하위 폴더:

      • ReportArchive: 보관된 오류 보고서

        • ReportQueue: 대기 중인 오류 보고서

          • 실제 파일은 확인되지 않았으나 $I30 파일에서 wer 파일이 있었음을 알 수 있다.

        • Temp: 임시 오류 보고서

          • 실제 파일은 확인되지 않았으나 $I30 파일에서 wer 파일이 있었음을 알 수 있다.

  • 파일 형식:

    • .wer: 텍스트 형식의 오류 보고서

    • .dmp: 메모리 덤프 파일

    • .hdmp: 압축된 메모리 덤프 파일 (하이브리드 덤프)

WER EventLog

  • 일반 이벤트 로그:

    • 경로: C:\\Windows\\System32\\winevt\\Logs

    • 이벤트 로그 파일:

      • Application.evtx: 애플리케이션 관련 이벤트 로그

        • Event ID: 1000, 1001

      • System.evtx: 시스템 이벤트 로그

  • WER 진단 이벤트 로그:

    • 경로: C:\\Windows\\System32\\winevt\\Logs\\Microsoft-Windows-WER-Diag%4Operational.evtx

    • 로그 내용: WER 시스템의 진단 정보와 관련된 이벤트 (예: 오류 보고서 생성 및 전송 상태, 전송 실패 이유 등)

WER Registry

  • 경로

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting

    • HKEY_CURRENT_USER\Software\Microsoft\Windows\Windows Error Reporting

  • Registry

    • (S) Consent

      • (V) DefaultConsent

        • 1: Always ask

        • 2: Parameters only

        • 3: Parameter and safe data

        • 4: All data

    • (S) DebugApplications

      • (V) [ExeName]

        • 0: Processes with an executable image name of “ExeName” do not require the user to choose “Debug” or “Continue”

        • 1: Processes with an executable image name of “ExeName” require the user to choose “Debug” or “Continue”

    • (S) LocalDumps

      • (S) [Application Name]

        • (V) DumpFolder: 덤프 디렉터리 경로. Default 값은 %LOCALAPPDATA%\CrashDumps.

        • (V) DumpCount: 덤프 최대 값. Default 값은 10. 최대 값을 초과하면 폴더에서 가장 오래된 덤프 파일이 새 덤프 파일로 대체

        • (V) DumpType

          • 0: Custom dump

          • 1: Minidump (default)

          • 2: Fulldump

나머지는 공식 문서를 참고한다.


3. Report.wer

해당 단락에서는 ReportArchive에서 발견된 Report.wer 파일의 필드 값에 대해 정리함. Report.wer은 AppCrashView.exe 프로그램으로 확인할 수 있다.

Report.wer 폴더 명

Report.wer 파일의 폴더 명을 보면 오류 유형부터 해시값들이 포함되어 있다.

%오류 유형%_%충돌 애플리케이션 이름%_%첫번째 해시%_%두번째 해시%_%ReportIdentifier%

예시)
AppCrash_Explorer.EXE_9cd53897ffc9d25be27f21a71ffa52cae8ae1aa_1c1d6539_29da9992

첫번째 해시

폴더 명에서 발견되는 첫번째 해시로는 정확하게 명칭이나 관련된 설명을 확인할 수 없으나, 여러 Report.wer 파일을 분석한 결과 Sig 필드로 만들어지는 것으로 예상된다. Sig 필드 안에는 프로그램에 대한 정보 및 예외 코드 등 여러 데이터가 포함되어있다.

첫번째 해시값이 같다면 동일한 프로그램, 프로그램 버전, 오류, 예외 코드임을 알 수 있다.

두번째 해시

폴더 명에서 발견되는 두번째 해시로는 ReportTypeTargetAppVer로 만들어지는 것으로 예상된다.

두번째 해시값이 같다면 같은 ReportType와 프로그램에 버전이 동일함을 알 수 있다.

오류 유형이 NonCritical인 경우 ReportType이 ‘0’이지만 Report.wer에서는 저장되지 않는다. 그래서 두번째 해시 값이 00000000으로 고정된다.

Report.wer 필드

EventType

  • APPCRASH

  • BEX

  • BEX64

  • MoAppHang

  • AppHangB1

  • StoreAgentInstallFailure1

  • StoreAgentDownloadFailure1

ReportType

  • 0: NonCritical

  • 1: Critical

  • 2: ApplicationCrash

  • 3: ApplicationHang

  • 4: Kernel

  • 5: Invalid

ReportStatus

  • 대부분 **268435456 (2^28)**으로 Bit 값으로 예상됨

    • 268435456

      • 2^28

    • 268566528

      • 2^28 + 2^17

    • 97

      • 2^0 + 2^5 + 2^6

ReportIdentifier

  • WER 보고서 식별자. 폴더 명에 마지막에 해당됨

IntegratorReportIdentifier

  • 통합된 보고서 식별자

  • 이벤트 로그에는 해당 식별자 값이 보고서 ID로 확인된다.

TargetAppId

  • “W”로 시작하는 것과 “U”로 시작하는 것이 있음.

  • AppCrash가 발생한 것은 “W”로 시작

  • Application Hang (애플리케이션 중단)은 “U”로 시작함. 다만 기존에 AppCrash가 난 프로그램인 경우 “W”로 표시됨

TargetAppVer

  • 버전명!시간!해시!프로그램 이름 으로 구성되어있다.

    • 시간은 프로그램의 속성에서 자세히 보기 후 수정한 시간으로 확인된다.

    • 버전 명은 대부분 없지만 Windows Store에서 다운 받은 파일인 경우 버전이 확인됨

전체 필드

필드
설명
비고

Version

보고서 버전

EventType

이벤트 유형

BEX=Buffer overflow EXception

AppCrash

EventTime

이벤트 발생 시간

FileTime Timestamp

ReportType

보고서 유형

0: NonCritical

1: Critical

2: ApplicationCrash

3: ApplicationHang

4: Kernel

5: Invalid

Consent

Microsoft에 보고서를 전송 동의 여부

UploadTime

보고서가 업로드된 시간

ReportStatus

보고서의 상태

보고서 업로드, 보류 등등

ReportIdentifier

보고서 식별자

IntegratorReportIdentifier

통합된 보고서 식별자

Wow64Host

64bit 호스트에서 실행되는 32bit 프로세스

Wow64Guest

32비트 게스트 프로세스를 나타냅니다.

NsAppName

오류가 발생한 응용 프로그램의 이름

OriginalFilename

응용 프로그램의 원래 파일 이름

AppSessionGuid

응용 프로그램 세션의 고유 식별자

TargetAppId

타겟 응용 프로그램의 식별자

TargetAppVer

타겟 응용 프로그램의 버전

BootId

시스템 부팅 식별자

TargetAsId

타겟 응용 프로그램 세션의 고유 식별자

IsFatal

오류가 치명적인지 여부

Response.BucketId

문제의 버킷 식별자

Response.BucketTable

문제의 버킷 테이블

Response.LegacyBucketId

이전 문제 버킷 식별자

Response.type

응답 유형

Sig

오류에 대한 시그니처 정보

DynamicSig

동적 서명 정보

UI

사용자 인터페이스

LoadModules

로드 모듈 이름

State

상태 정보

OsInfo

운영체제 정보

FriendlyEventName

사용자에게 표시되는 이벤트의 친숙한 이름

ConsentKey

동의 여부

AppName

응용프로그램 이름

AppPath

응용프로그램 경로

NsPartner

파트너 정보

NsGroup

그룹 정보

ApplicationIdentity

응용 프로그램 식별 정보

MetadataHash

메타데이터 해시


4. Event Log 속 WER

해당 단락에서는 Application.evtx 에서 확인할 수 있는 내용에 대해 정리함. 이벤트 뷰어를 확인하기 위해서는 eventvwr.msc 프로그램을 사용해 확인할 수 있다. (Win + r 후 eventvwr.msc 입력)

Event ID 1001

해당 이벤트 로그에서는 10개의 매개변수를 확인할 수 있다. 해당 파라미터는 Report.wer에서 Sig 필드와 같다.

Get-EventLog -LogName Application -InstanceId 1001 -Source 'Windows Error Reporting'

Event ID 1000

해당 이벤트 로그에서는 1001에서 확인한 파라미터의 값의 대해 정확한 명칭과 함께 값을 확인할 수 있다.

Get-EventLog -LogName Application -InstanceId 1000 -Source 'Application Error'

5. WER 뷰어 및 파서 프로그램 제작

GitHub - tkddnr924/WER-Parser

  • 프로그램 작성 중

  • 각 필드에 의미를 확인 후 추가할 예정이며, 필드 값 별로 분류 및 검색까지 가능하게 할 예정이다.

  • 이 프로그램에 목적은 기존 WER 뷰어의 기능을 강화하고 더 보기 좋게 하기 위함이다.

6. 참고

Last updated

Was this helpful?