디지털포렌식

[디지털포렌식] Windows Prefetch와 PECmd, WinPrefetchView 사용법

junpal2 2024. 10. 12. 12:44

Winodws는 가상 메모리를 운영할 때 한정된 리소스를 여러 프로세스에서 공유한다. 이때 이를 효율적으로 이용하기 위해서 Prefetch, 프리페치를 이용한다.

1. Prefetch(프리페치)란?

사용자가 어떤 실행을 할 때 리소스가 로딩되는 시간을 줄이기 위해 도입된 메모리 관리 정책이다. 즉, 어플리케이션 시작 및 실행의 속도를 높이기 위해 설계된 것으로 프로그램이 실행될 때 필요한 파일들을 메모리에 미리 업로드 해둔다. 각 실행 파일의 프리페치 파일들은 DLL과 같은 리소스 정보들이 포함되어 있다. 

프리페치 파일의 경로는 C:\Windows\Prefetch로 .pf의 확장자를 갖는다.

프리페치 파일의 이름은 [executable filename]-[Prefetch-hash(filepath)].pf 형식으로 지정된다. 실행 파일의 이름과 경로 해시값은 모두 대문자로 작성되어야 한다.

2. Preftect(프리페치) 파일의 종류(Boot, Application)

- Boot 프리페치 파일

컴퓨터를 부팅하는 동안 이용하는 리소스들을 말한다. NTOSBOOT-B00DFAAD.pf 명으로 저장되어 있다. 시스템 시작의 속도를 높이기 위해 사용된다.

 

- Application 프리페치 파일

어플리케이션이 실행되는 동안 참조되는 리소스들을 말한다. 실행 파일의 종류에 따라 [executable filename]-[Prefetch-hash(filepath)].pf 명으로 저장되어 있다. 어플리케이션 시작의 속도를 높이기 위해 사용된다.

 

이러한 프리페치 파일들을 수동으로 활성화 및 비활성화 할 수도 있다.

HKEY_LOCAL_MACHINE\SYSTEM\?ControlSet?\Control\Session Manager\Memory Management

\PrefetchParameters\EnablePrefetcher 경로를 따라 EnablePrefetcher를 확인해보면 Data가 기본값 0x00000003으로 설정되어 있을 것이다. 이 값은 0~3까지의 숫자가 들어올 수 있으며 각 숫자가 의미하는 바는 아래와 같다.

  • 0 : 비활성화
  • 1 : Application 프리페치 가능
  • 2 : Boot 프리페치 가능
  • 3 : Application, Boot 프리페치 모두 가능

3. Prefetch(프리페치) 파일 형식

프리페치 파일을 HxD를 이용해 열어주면 앞에 MAM\04 시그니처를 확인할 수 있는데, 이는 프리페치 파일이 Xpress 압축 알고리즘에 의해 압축되어 있는 것을 풀어주면 SCCA 형태가 된다.

https://gist.github.com/dfirfpi/113ff71274a97b489dfd

 

Windows 10 Prefetch (native) Decompress

Windows 10 Prefetch (native) Decompress. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

위 링크를 이용해 프리페치 파일을 압축 해제하고 HxD로 확인해보면 아래와 같이 SCCA를 찾을 수 있다.

 

프리페치 파일 형식은 아래와 같다.

*Windows10 이상의 버전에서 이런 구성을 갖는다.

각 오프셋의 위치에 맞게 hex 값을 읽어주면 파일 사이즈, 실행 파일명, 파일 경로, 실행 횟수 등을 확인할 수 있다.

4. Prefetch(프리페치) 파일 분석

프리페치 파일을 분석하기 위해 사용할 수 있는 툴 중 PECmd와 WinPrefetchView 사용법에 대해 알아보자.

 

PECmd

https://github.com/EricZimmerman/PECmd

 

GitHub - EricZimmerman/PECmd: Prefetch Explorer Command Line

Prefetch Explorer Command Line. Contribute to EricZimmerman/PECmd development by creating an account on GitHub.

github.com

PECmd는 전에 사용법을 알아보았던 EvtxECmd와 같이 cmd 창을 이용해 프리페치 파일을 분석할 수 있는 툴이다. 위의 github 링크를 통해 다운로드 가능하다.

PECmd를 설치한 경로로 접근해 프리페치 파일을 아래 명령어와 같이 파싱해주면 된다.

>>./PECmd -f "파싱하려는 파일의 경로"

제대로 파싱이 되고 나면 파일 생성 시간, 수정 시간, 마지막 실행 시간, 실행 파일 명, 경로 해시값, 파일 사이즈, 버전 등을 확인할 수 있다. 이때 시간들은 모두 UTC+00:00 이기 때문에 원하는 시간대에 맞춰 읽어주어야 한다.

ex. 한국 시간 UTC+09:00

 

WinPrefetchView

WinPrefetchView는 아래 링크를 통해 다운로드 받을 수 있다.

https://www.nirsoft.net/utils/win_prefetch_view.html

 

View the content of Windows Prefetch (.pf) files

    WinPrefetchView v1.37 Copyright (c) 2010 - 2021 Nir Sofer Description Each time that you run an application in your system, a Prefetch file which contains information about the files loaded by the application is created by Windows operating system. T

www.nirsoft.net

WinPrefetchView를 실행하면 C:\Windows\Prefetch에 있는 .pf 파일들만 모아서 보여준다. 여기서 원하는 프리페치 파일을 클릭해보면 파일명, 실행 시간, 수정 시간, 파일 사이즈, 실행 파일명, 파일 경로, 마지막 실행 시간 등의 상세 정보를 확인할 수 있다.

 

따라서 여러 프리페치 파일을 유동적으로 한번에 확인하고 싶다면 WinPrefetchView를, 특정 프리페치 파일에 관한 정보와 파싱이 필요하다면 PECmd를 이용하는 것을 추천한다.

 

 

 

감사합니다!

 

 

 

*Windows 가상머신을 이용한 실습법입니다.