Windows EVTX 파일 구조와 포렌식 분석 핵심 정리
Windows 시스템을 분석할 때 EVTX 파일은 가장 먼저 확인해야 하는 핵심 로그 중 하나입니다. 로그인, 계정 사용, 서비스 실행, PowerShell 실행, 원격 접속, 로그 삭제 흔적까지 다양한 행위가 남기 때문에 침해사고 분석이나 디지털 포렌식에서 매우 중요한 자료로 활용됩니다.

이번 글에서는 .evtx 파일이 어떤 구조로 되어 있는지, 그리고 실무 분석에서는 어떤 이벤트와 흐름을 중점적으로 봐야 하는지 정리해보겠습니다. 단순히 이벤트 ID만 외우는 방식이 아니라, 파일 구조와 분석 관점을 함께 이해하는 데 초점을 맞췄습니다.
📌 EVTX 파일이란?
EVTX는 Windows Vista 이후 사용되는 Windows Event Log 파일 포맷입니다.
이전 Windows XP 계열에서 사용되던 .evt 형식을 대체했으며,
이벤트 정보를 단순 텍스트가 아니라 Binary XML, 즉 BinXML 기반의 구조화된 바이너리 로그로 저장합니다.
대표적인 저장 경로는 아래와 같습니다.
C:\Windows\System32\winevt\Logs\
이 폴더 안에는 보안, 시스템, 애플리케이션, PowerShell, 작업 스케줄러, 원격 접속 관련 로그 등 다양한 EVTX 파일이 저장됩니다. 포렌식 분석에서는 이 로그들을 종합적으로 확인해 사용자의 행위, 공격자의 침입 흔적, 시스템 변경 내역을 추적합니다.
🧱 EVTX 파일의 기본 구조
EVTX 파일은 하나의 큰 XML 파일처럼 저장되는 것이 아닙니다. 내부적으로는 파일 헤더, 청크, 이벤트 레코드, BinXML 데이터로 구성됩니다.
EVTX File
├─ File Header
├─ Chunk 1
│ ├─ Chunk Header
│ ├─ Event Record
│ ├─ Event Record
│ └─ Slack Area
├─ Chunk 2
│ └─ ...
└─ Chunk N
분석자는 보통 파일 전체를 한 번에 읽는 것이 아니라, 파일 헤더 → 청크 → 이벤트 레코드 → 이벤트 데이터 순서로 구조를 해석합니다. 이 구조를 이해하면 단순히 Event Viewer에서 보이는 내용뿐 아니라 손상, 삭제, 조작 가능성까지 살펴볼 수 있습니다.
📁 File Header에서 확인할 내용
EVTX 파일의 맨 앞에는 File Header가 있습니다. 이 영역에는 파일 전체의 상태와 범위를 설명하는 메타데이터가 들어 있습니다.
| 항목 | 의미 |
|---|---|
| Signature | EVTX 파일 식별자 |
| First Chunk Number | 첫 번째 청크 번호 |
| Last Chunk Number | 마지막 청크 번호 |
| Next Record Identifier | 다음 이벤트 레코드 ID |
| Flags | 파일 상태, dirty 여부 등 |
특히 포렌식 관점에서는 dirty flag, checksum 불일치, 마지막 레코드 번호를 주의해서 봅니다. 비정상 종료, 로그 손상, 미완성 기록, 조작 가능성을 판단할 때 참고할 수 있기 때문입니다.
🧩 Chunk 구조가 중요한 이유
EVTX의 핵심 단위는 Chunk입니다. 하나의 청크 안에는 여러 이벤트 레코드와 템플릿 정보, 사용되지 않은 영역이 함께 들어갑니다.
청크는 단순한 저장 공간이 아니라 이벤트의 시간 흐름과 무결성을 확인하는 데 중요한 기준이 됩니다. 청크 헤더에는 첫 이벤트 번호, 마지막 이벤트 번호, 첫 이벤트 시간, 마지막 이벤트 시간, 체크섬 등이 포함될 수 있습니다.
정상적인 Event Viewer에서는 보이지 않는 잔여 레코드가 청크 내부의 slack 영역에 남아 있을 수 있습니다. 따라서 중요한 사건에서는 단순 화면 확인보다 전용 파서나 카빙 도구를 함께 사용하는 것이 좋습니다.
📝 Event Record 구조
실제 개별 이벤트는 Event Record 단위로 저장됩니다. 이벤트 레코드에는 이벤트 ID, 생성 시각, 레코드 번호, 실제 이벤트 본문이 포함됩니다.
| 항목 | 분석 의미 |
|---|---|
| Record Signature | 이벤트 레코드 식별 |
| Record Size | 레코드 크기 확인 |
| Event Record ID | 로그 내 이벤트 순서 추적 |
| Timestamp | 이벤트 발생 시각 확인 |
| BinXML Payload | 실제 이벤트 내용 |
여기서 중요한 점은 EventRecordID가 모든 로그 파일에서 공통으로 이어지는 번호가 아니라는 것입니다. Security.evtx의 EventRecordID 10000과 System.evtx의 EventRecordID 10000은 서로 다른 로그입니다. 따라서 분석할 때는 반드시 로그 파일명과 채널을 함께 기록해야 합니다.
🔎 BinXML과 이벤트 데이터 해석
EVTX의 이벤트 본문은 사람이 읽기 쉬운 XML 그대로 저장되지 않고 BinXML 형태로 저장됩니다. 분석 도구는 이 BinXML을 해석해 우리가 보는 XML 형태의 이벤트로 변환합니다.
<Event>
<System>
<Provider Name="Microsoft-Windows-Security-Auditing"/>
<EventID>4624</EventID>
<TimeCreated SystemTime="2026-05-27T01:23:45.0000000Z"/>
<EventRecordID>123456</EventRecordID>
<Channel>Security</Channel>
<Computer>HOST01</Computer>
</System>
<EventData>
<Data Name="TargetUserName">user01</Data>
<Data Name="IpAddress">192.168.0.10</Data>
<Data Name="LogonType">10</Data>
</EventData>
</Event>
분석자가 주로 보는 필드는 Provider, EventID, TimeCreated, Channel, Computer, User, SID, EventData 등입니다. 특히 EventData에는 이벤트별 핵심 값이 들어가므로 단순 메시지보다 더 중요하게 봐야 합니다.
🔐 Security.evtx에서 자주 보는 이벤트
Security.evtx는 보안 분석에서 가장 많이 확인하는 로그입니다. 로그인 성공, 로그인 실패, 계정 생성, 그룹 추가, 특권 로그인, 감사 로그 삭제 등 중요한 흔적이 남습니다.
| Event ID | 의미 |
|---|---|
| 4624 | 로그인 성공 |
| 4625 | 로그인 실패 |
| 4648 | 명시적 자격 증명 사용 |
| 4672 | 특권 계정 로그인 |
| 4688 | 프로세스 생성 |
| 4720 | 사용자 계정 생성 |
| 4732 | 로컬 그룹에 구성원 추가 |
| 1102 | 감사 로그 삭제 |
침해사고에서 자주 보는 조합은 다음과 같습니다.
4624 LogonType 10
4672 특권 로그인
4688 powershell.exe 또는 cmd.exe 실행
1102 Security 로그 삭제
특히 4624 이벤트는 LogonType을 함께 봐야 의미가 분명해집니다. LogonType 2는 콘솔 로그인, 3은 네트워크 로그인, 10은 RDP 원격 데스크톱 로그인으로 해석할 수 있습니다.
🖥️ System.evtx에서 보는 핵심 흔적
System.evtx는 시스템 서비스, 드라이버, 부팅, 종료, 서비스 설치 내역을 확인할 때 사용합니다. 공격자가 악성 서비스를 등록하거나 원격 실행 도구를 사용한 경우 관련 흔적이 남을 수 있습니다.
| Event ID | 의미 |
|---|---|
| 6005 | Event Log 서비스 시작 |
| 6006 | Event Log 서비스 정상 종료 |
| 6008 | 예기치 않은 종료 |
| 7045 | 새 서비스 설치 |
| 104 | 로그 파일 삭제 관련 흔적 |
이 중 7045 이벤트는 특히 중요합니다. 공격자가 서비스 형태로 악성코드를 등록하거나, 원격 관리 도구를 통해 명령을 실행한 경우 단서가 될 수 있기 때문입니다.
⚡ PowerShell 로그 분석 포인트
PowerShell은 정상 관리 작업에도 많이 쓰이지만, 공격에서도 자주 악용됩니다. 따라서 PowerShell 관련 EVTX는 명령 실행 흔적을 확인하는 데 매우 중요합니다.
주요 로그 파일은 다음과 같습니다.
Windows PowerShell.evtx
Microsoft-Windows-PowerShell%4Operational.evtx
| Event ID | 의미 |
|---|---|
| 400 | PowerShell 엔진 시작 |
| 403 | PowerShell 엔진 종료 |
| 4103 | Module Logging |
| 4104 | Script Block Logging |
특히 4104 Script Block Logging은 실제 실행된 스크립트 내용이 남을 수 있어 가치가 큽니다. 다만 시스템 설정에 따라 로그가 충분히 남지 않을 수 있으므로, 로깅 정책 활성화 여부도 함께 확인해야 합니다.
🛡️ Sysmon 로그가 있으면 무엇이 달라질까?
Sysmon이 설치되어 있다면 분석 범위가 훨씬 넓어집니다. 기본 Windows 로그보다 프로세스 생성, 네트워크 연결, 파일 생성, 레지스트리 변경, DNS 질의 등을 더 세밀하게 확인할 수 있습니다.
Microsoft-Windows-Sysmon%4Operational.evtx
| Sysmon Event ID | 의미 |
|---|---|
| 1 | 프로세스 생성 |
| 3 | 네트워크 연결 |
| 7 | 이미지 로드 |
| 11 | 파일 생성 |
| 22 | DNS 질의 |
Sysmon 로그는 매우 유용하지만, 설치 여부와 설정 품질에 따라 분석 가치가 달라집니다. 같은 Sysmon이라도 어떤 설정 파일을 적용했는지에 따라 남는 이벤트 범위가 크게 달라질 수 있습니다.
🧭 EVTX 분석 절차
실무에서는 무작정 이벤트 파일을 여는 것보다, 일정한 순서로 분석하는 것이 안정적입니다.
1. 원본 로그 수집
2. 원본 해시 계산
3. 분석용 복사본 생성
4. EVTX 파싱
5. 주요 Event ID 필터링
6. 시간대 기준 타임라인 정리
7. 다른 아티팩트와 교차 검증
특히 원본 EVTX 파일을 직접 수정하거나 원본 환경에서 반복적으로 열어보는 방식은 피하는 것이 좋습니다. 증거성을 고려한다면 원본은 보존하고 복사본으로 분석하는 습관이 필요합니다.
⏰ 시간대 해석에서 주의할 점
Windows 이벤트 로그의 SystemTime은 보통 UTC 기준으로 저장됩니다.
따라서 한국 기준 보고서를 작성할 때는 UTC와 KST를 구분해 기록하는 것이 좋습니다.
원본 UTC: 2026-05-27 01:23:45Z
분석 기준 KST: 2026-05-27 10:23:45 KST
시간대 변환을 잘못하면 공격 흐름이 앞뒤로 뒤바뀔 수 있습니다. 특히 여러 시스템의 로그를 함께 분석할 때는 각 시스템의 로컬 시간대, UTC 저장 방식, 수집 도구의 변환 방식을 함께 확인해야 합니다.
🧰 자주 사용하는 EVTX 분석 도구
| 도구 | 특징 |
|---|---|
| Event Viewer | 기본 확인용, 소량 분석에 적합 |
| Get-WinEvent | PowerShell 기반 필터링 가능 |
| wevtutil | 로그 쿼리, 내보내기, 관리 가능 |
| EvtxECmd | CSV, XML, JSON 출력 지원 |
| Chainsaw | Sigma 룰 기반 탐지에 유용 |
| Hayabusa | Windows 이벤트 로그 위협 헌팅에 특화 |
| Velociraptor | 다수 엔드포인트 수집과 원격 헌팅에 강점 |
🚨 침해사고에서 자주 보는 EVTX 시나리오
1. 계정 침해
계정 침해가 의심될 때는 로그인 성공, 로그인 실패, 특권 로그인, 계정 생성, 관리자 그룹 추가 이벤트를 함께 봅니다.
4624 로그인 성공
4625 로그인 실패
4672 특권 로그인
4720 계정 생성
4732 관리자 그룹 추가
2. RDP 침입
원격 데스크톱 침입은 Security 로그와 TerminalServices 관련 로그를 함께 보는 것이 좋습니다. 단순히 4624만 보는 것보다 세션 연결, 인증 성공, 재연결 이벤트까지 연결하면 흐름이 더 명확해집니다.
Security 4624 LogonType 10
Security 4778
Security 4779
TerminalServices 1149
TerminalServices 21
TerminalServices 24
3. 악성 서비스 등록
공격자가 악성 서비스를 등록하면 System 7045 또는 Security 4697 이벤트가 단서가 될 수 있습니다. 이때 서비스 이름, 실행 파일 경로, 실행 계정, 명령행을 함께 확인해야 합니다.
4. PowerShell 공격
PowerShell 공격은 명령행 인자와 Script Block Logging을 함께 봐야 합니다.
-EncodedCommand, Invoke-Expression, DownloadString, FromBase64String 같은 키워드가 반복적으로 보이면 주의가 필요합니다.
5. 로그 삭제와 은폐
공격자가 흔적을 지우기 위해 로그를 삭제하는 경우도 있습니다. 이때 Security 1102, System 104, EventLog 관련 이벤트를 확인합니다.
로그 삭제 이벤트가 보인다고 해서 그 이전의 상세 행위가 모두 남아 있는 것은 아닙니다. EVTX만 단독으로 보지 말고, $MFT, USN Journal, Prefetch, Amcache, ShimCache, SRUM 등과 함께 교차 검증해야 합니다.
📊 보고서 작성 시 추천 컬럼
분석 결과를 정리할 때는 단순히 이벤트 메시지만 복사하기보다, 재현성과 검증 가능성을 고려해 일정한 컬럼으로 정리하는 것이 좋습니다.
| 컬럼 | 설명 |
|---|---|
| TimeCreated_KST | 한국 기준 변환 시간 |
| TimeCreated_UTC | 원본 UTC 시간 |
| LogFile | Security.evtx, System.evtx 등 |
| EventID | 이벤트 ID |
| EventRecordID | 로그 내 순번 |
| User | 계정명 |
| SourceIP | 원격 IP |
| ProcessName | 프로세스명 |
| CommandLine | 명령행 |
| Description | 분석자 해석 |
✅ EVTX 분석의 핵심 정리
EVTX 분석은 단순히 이벤트 ID를 찾아보는 작업이 아닙니다. 파일 구조, 이벤트 흐름, 시간대, 계정 정보, 프로세스 실행, 로그 삭제 흔적을 함께 해석해야 의미 있는 결론에 도달할 수 있습니다.
✅ EVTX는 File Header, Chunk, Event Record, BinXML 구조로 구성됩니다.
✅ Security, System, PowerShell, Sysmon 로그는 침해사고 분석에서 특히 중요합니다.
✅ EventRecordID, 시간대, 로그 파일명, 채널 정보를 함께 기록해야 합니다.
✅ 로그 삭제나 조작 가능성은 checksum, EventRecordID gap, slack 영역 등을 함께 봐야 합니다.
✅ EVTX는 강력한 단서지만 단독 증거로만 판단하지 말고 다른 아티팩트와 교차 검증해야 합니다.
실제 포렌식에서는 EVTX 로그만으로 모든 상황을 확정하기 어렵습니다. 하지만 EVTX는 사용자의 행위와 시스템 변화를 시간순으로 보여주는 매우 중요한 출발점입니다. 특히 로그인, 원격 접속, PowerShell 실행, 서비스 등록, 로그 삭제 흔적을 연결하면 침해 흐름을 상당히 구체적으로 복원할 수 있습니다.
따라서 Windows 시스템을 분석할 때는 EVTX를 단순 로그 파일이 아니라 사건의 흐름을 재구성하는 타임라인 자료로 바라보는 것이 좋습니다. 파일 구조와 주요 이벤트를 함께 이해해두면, 단순 확인을 넘어 더 정확하고 설득력 있는 분석 결과를 만들 수 있습니다.
'공부 상식 > computer' 카테고리의 다른 글
| macOS USB 연결·마운트·파일 접근 흔적 확인 방법 (0) | 2026.05.27 |
|---|---|
| Windows USB 연결 기록 확인 방법과 주요 아티팩트 정리 (0) | 2026.05.27 |
| Windows Registry로 삭제된 프로그램 목록 확인하는 방법 (0) | 2026.05.26 |
| Windows 레지스트리 하이브란? (1) | 2026.05.20 |
| 자원과 스레드란? 운영체제 기초 개념 쉽게 정리 (0) | 2026.05.15 |