아티팩트, 이벤트 로그, Prefetch / Superfetch
윈도우 운영 체제는 편리하고 직관적인 인터페이스, 사용자 친화적인 기능, 다양한 사용자 애플리케이션 등으로 인해 디지털 포렌식의 주요 대상이 된다.
데이터 유출, 보안 사고 등에 대한 윈도우 포렌식 수요가 높다.
Artifact(아티팩트) 란, '인공물'이며, 디지털 포렌식에서는 디지털 기기 사용 중 자동으로 생성되는 데이터를 의미한다. 예를들어, 윈도우 OS 아티팩트, 웹 브라우저 아티팩트, 소셜 네트워크 및 메시징 서비스 관련 아티팩트가 있다.
윈도우 아티팩트의 종류
물리 메모리, 이벤트 로그, 프리패치/수퍼패치, 쉘 링크, 점프 목록, 썸네일/아이콘/RDP 캐시, 레지스트리, 쉼캐시, 검색 데이터베이스, 타임라인, SRUM, 휴지통, 볼륨 섀도 복사본, 파일 기록, 로그인 자격 증명, 원격 분석, 알림, 스티커 메모, 작업 스케줄러, 기타 로그
1. 이벤트 로그 기능
이벤트 로그는 중앙집중식으로 운영 체제 및 애플리케이션에서 중요한 소프트웨어 및 하드웨어 이벤트를 기록하는 역할을 한다. 이 로그는 시스템 부팅 및 종료 기록, 로그인 및 로그오프 기록, 네트워크 연결 추적, 저장 장치 사용 기록, 시스템 시간 변경 이벤트 기록, 그리고 운영 체제 및 애플리케이션의 경고 및 알림 기록 등을 포함한다.
2. 이벤트 로그 분석의 목적:
이벤트 로그 분석의 목적은 시스템 및 애플리케이션에서 발생하는 이상 징후를 식별하고, 사건과 관련된 악성 활동을 분석하며, 사용자 행동을 분석하는 것이다.
이벤트 로그 설정은 레지스트리에 저장된다. 이벤트 로그 설정의 경로는 아래와 같다.
HKLM\\\\SYSTEM\\\\?ControlSet?\\\\Services\\\\EventLog\\\\
이벤트 로그 파일의 위치는 운영 체제에 따라 다르다.
Windows XP에서는 EVT 형식의 로그 파일의 경로가 아래와 같다.
%SystemRoot%\\\\System32\\\\Config\\\\*.evt
파일 크기는 512KiB이다.
Windows Vista 이후 버전에서는 EVTX 형식의 로그 파일이
%SystemRoot%\\\\System32\\\\winevt\\\\Logs\\\\*.evtx
경로에 저장되며, 파일 크기는 1024KiB에서 20480KiB까지 다양하다.
3. 이벤트 로그 파일 포맷
EVTX 파일 내부 구조
EVTX 헤더: ElfFile\x00 (4 KiB) 청크
청크 헤더 : EIFChnk\x00 (128B) 이벤트 레코드
이벤트 레코드: 바이너리 및 XML 형식으로 저장 이벤트 헤더
4. 잘 알려진 이벤트 로그
1. Windows Logs:
Security (로그온 성공/실패 등) System (드라이버 오류 등) Application (경고, 비정상 작동 등)
2. Applications & Services Logs
Microsoft 애플리케이션 Microsoft Office 경고 Windows PowerShell
5. 포렌식적으로 흥미로운 이벤트 ID (Vista 이후)
6. 이벤트 로그 수집 도구
KAPE: 이벤트 로그 수집 도구
Windows 이벤트 뷰어: 로그 분석 도구
Microsoft Message Analyzer: 로그 분석 도구
FullEventLogView: https://www.nirsoft.net/utils/full_event_log_view.html
EvtxECmd: https://github.com/EricZimmerman/evtx
Prefetch와 Superfetch는 가상 메모리 메커니즘에서 성능을 향상시키기 위해 사용되는 기술이다. 가상 메모리 메커니즘은 다양한 프로세스에 의해 제한된 리소스가 공유되는 방식을 의미하며, 이러한 기술들은 시스템 성능을 최적화하는 데 중요한 역할을 한다.
Prefetch는 윈도우 XP부터 운영체제에서 제공되는 메모리 관리 정책으로, 리소스를 미리 로드하여 대기 시간을 줄이는 기술이다. 이를 통해 프로세스 속도를 높이는 것을 목표로 한다.
Superfetch는 기계 사용 패턴을 분석하여 자주 사용되는 애플리케이션을 미리 로드하는 기술이다. 이를 통해 사용자가 자주 사용하는 프로그램의 실행 시간을 단축시키고, 전반적인 시스템 성능을 향상시킬 수 있다.
부팅 프리페치: 부팅 시 사용되는 리소스를 미리 로드하여 시스템 시작 프로세스 속도를 높인다.
ex:) NTOSBOOT-B00DFAAD.pf
애플리케이션 프리페치: 애플리케이션 실행 시 참조되는 리소스를 미리 로드하여 앱 실행 프로세스 속도를 높인다.
ex:) [executable filename]-[Prefetch-hash(filepath)].pf
프리패치 파일은
%SystemRoot%\\\\Prefetch\\\\*.pf
경로에 위치하며, Windows 10 또는 그 이후 버전에서는 최대 1,024개의 프리패치 파일이 존재할 수 있다.
프리패처 설정은 레지스트리 항목 아래에서 확인과 변경이 가능하다.
'HKLM\\\\SYSTEM?ControlSet?\\\\Control\\\\Session Manager\\\\Memory Management\\\\PrefetchParameters\\\\EnablePrefetcher'
0: 비활성화
1: 애플리케이션 프리패칭 활성화
2: 부트 프리패칭 활성화
3: 애플리케이션 및 부트 프리패칭 활성화 (기본값)
프리패치 파일의 명명 규칙은
[실행 파일명]-[프리패치-해시(파일경로)].pf
로, 확장자(.pf)를 제외하고 모든 이름은 대문자로 표기된다.
프리패치 파일 포맷에는 여러 중요한 요소들이 포함되어 있다. 첫 번째로, 파일 헤더에는 버전 정보, 서명 (SCCA), 파일 크기 등의 정보가 포함되어 있다. 두 번째로, 파일 실행 이름에는 실행 파일의 이름과 경로의 해시 값이 포함된다. 세 번째로, 실행 횟수와 마지막 실행 시간도 포함된다. 네 번째로, 참조된 리소스 목록에는 필요한 DLL 파일과 최근에 사용된 파일 목록이 포함된다.
참고로, 시그니처는 'MAM\x04'로 표기된다.
실행한 응용 프로그램 이름과 전체 경로
응용 프로그램 실행 횟수
응용프로그램 마지막 실행 시간 (Windows 10 이후 버전 30에서는 8개의 FILETIME 값)
볼륨 관련 정보 (볼륨 장치 경로, 볼륨 일련 번호, 볼륨 생성 시간)
참조된 리소스 목록 (필요한 DLL, 최근 사용된 파일 목록)
→ 프리페치 활용 : 사용자 행위, 안티포렌식 활동 및 악성코드 관련 흔적 식별
프리페치 파일의 시간 정보는 크게 두 가지로 분류할 수 있다. 파일 시스템에 저장된 시간 정보와 프리페치 파일 내부에 저장된 타임스탬프이다.]
파일 시스템에 저장된 시간정보는 다음 세 가지이다.
Filesystem Created Time : 프리페치 파일이 처음 생긴 시간이다. 생긴 후 삭제되지 않은 경우 최초 실행 시간임을 주의해야한다.
Modified Time : 프리페치 파일이 마지막으로 수정된 시간이다.
Access time : 프리페치 파일에 마지막으로 접근한 시간이다.
프리페치 파일 내부에는 마지막 실행 시간 정보가 포함되어 있다. 이 정보는 운영 체제 버전에 따라 다르게 저장된다.
Windows XP, Vista 및 7: 버전 17 및 23에서는 1개의 FILETIME 값으로 저장된다.
Windows 8.1 이상의 경우: 버전 26 및 30에서는 8개의 FILETIME 값으로 저장된다. 이 중 첫 번째 FILETIME 값이 가장 최근 실행 시간을 나타낸다.
KAPE: 프리페치 파일 수집 도구
WinPrefetchView: https://www.nirsoft.net/utils/win_prefetch_view.html
PECmd: https://github.com/EricZimmerman/PECmd