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
위 링크를 이용해 프리페치 파일을 압축 해제하고 HxD로 확인해보면 아래와 같이 SCCA를 찾을 수 있다.
프리페치 파일 형식은 아래와 같다.
*Windows10 이상의 버전에서 이런 구성을 갖는다.
각 오프셋의 위치에 맞게 hex 값을 읽어주면 파일 사이즈, 실행 파일명, 파일 경로, 실행 횟수 등을 확인할 수 있다.
4. Prefetch(프리페치) 파일 분석
프리페치 파일을 분석하기 위해 사용할 수 있는 툴 중 PECmd와 WinPrefetchView 사용법에 대해 알아보자.
PECmd
https://github.com/EricZimmerman/PECmd
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
WinPrefetchView를 실행하면 C:\Windows\Prefetch에 있는 .pf 파일들만 모아서 보여준다. 여기서 원하는 프리페치 파일을 클릭해보면 파일명, 실행 시간, 수정 시간, 파일 사이즈, 실행 파일명, 파일 경로, 마지막 실행 시간 등의 상세 정보를 확인할 수 있다.
따라서 여러 프리페치 파일을 유동적으로 한번에 확인하고 싶다면 WinPrefetchView를, 특정 프리페치 파일에 관한 정보와 파싱이 필요하다면 PECmd를 이용하는 것을 추천한다.
감사합니다!
*Windows 가상머신을 이용한 실습법입니다.
'디지털포렌식' 카테고리의 다른 글
[디지털포렌식] NTFS Log Tracker 사용법 (0) | 2024.11.25 |
---|---|
[디지털포렌식] Jumplist(점프리스트)와 Jumplist Explorer 사용법 (4) | 2024.11.11 |
[디지털포렌식] Thumbnail Cache(썸네일 캐시), Icon Cache(아이콘 캐시)와 Thumbcache Viewer 사용법 (1) | 2024.10.12 |
[디지털포렌식] 웹 아티팩트 분석 BrowsingHistoryView, Hindsight 사용법 (1) | 2024.10.12 |
[디지털포렌식] Windows 이벤트 로그와 EvtxECmd 사용법 (0) | 2024.09.24 |