들어가기전에
SSD(Solid State Drive)가 개발되기 이전 대부분의 컴퓨터에서 보조 저장 장치의 역할은 HDD(Hard Disk Drive)가 맡아왔다. SSD가 입출력 속도를 압도적으로 HDD를 누를 수 있었던 가장 큰 이유는 데이터를 읽고, 쓰는 과정에서 물리적인 움직임을 전기적인 신호로 모두 대체한 것이기 때문이다. 즉, HDD는 물리적인 플래터의 회전 속도와 헤드의 움직임 필요 여부에 따라 데이터 입출력 속도가 크게 좌우되지만, 전기적인 신호로 제어되는 플래시메모리, SSD와는 확연히 속도면에서 느림을 보인다. 하지만 윈도우는 주기억장치의 속도의 한계 때문에 운용속도 향상을 위해 관리 정책들을 구성해 왔는데, 그 과정에서 프리패치 개념도 생겼다. 플래터 방식의 HDD를 사용하면 프리패치 기능이 빛을 발할 수 있지만, SSD를 사용한다면 오히려 용량이 낭비될 수 있다.
프리패치란?
프리패치는 윈도우 XP 이후 운영체제에서 제공하는 메모리 관리 정책이다. 프리패치 파일을 모두 메모리에 로드하면서 사용자가 파일을 실행할 경우 미리 저장된 정보를 메모리에 실행하여 로딩할 때의 효율을 최대한 끌어올리기 위해 개발되었다.
프리패치 파일은 Windows 7에서 128개를 저장해왔고, Windows 8이후부터는 최대 1024개까지 파일이 생성될 수 있으며, 최대 개수를 넘기면 가장 오래전에 생성된 파일부터 자동으로 삭제된다. 프리패치 파일은 임시 파일 개념이므로 삭제해도 시스템에 영향을 주지 않는다.
레디부트(ReadyBoot) : 시스템별로 파일 및 시작 프로그램을 캐시에 미리 로드하여 부팅시간을 줄여준다.
레디부스트(ReadyBoost) : USB 플래시 드라이브 및 SD 카드와 같은 저장 장치의 사용을 지원하여 PC 성능을 향상시켜준다.
프리패치는 다음 아래의 경로에 저장되어 진다.
위치 : %SystemRoot%Prefetch(C:\Windows\Prefetch)
저장방식 : [file name]-[file name hash].pf
더불어, 프리패치는 사용자가 레지스트리 아래의 경로를 통해서 on/off 할 수 있다.
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters |
위 경로에서 EnablePrefetcher 값을 수정하면 된다. 수정 값에 대한 설정은 아래와 같다. 기본 값은 3이다.
- 0 : 프리패치 모두 비활성화
- 1 : 응용 프로그램 프리패치만 활성화
- 2 : 부팅 프리패치만 활성화
- 3 : 모든 프리패치 활성화
프리패치 파일은 크게 두가지로 분류할 수 있다.
1. 부트 프리패치(Boot Prefetch)
2. 응용 프로그램 프리패치(Application Prefetch)
부트 프리패치(Boot Prefetch)
NTOSBOOT-BOODFAAD.PF 라는 이름을 가지며 단일 파일로 존재한다. 부트 프리패치는 '부트'라는 이름에서 알 수 있듯이 부팅되는 속도를 더 빠르게 하기 위한 것으로 시스템 자원을 파악하여 한 곳에 모아놓는 역할을 한다.
응용 프로그램 프리패치(Application Prefetch)
응용 프로그램 초기 실행 시 캐시 관리자가 10초간 사용한 파일을 모니터링한 결과 파일을 생성한다. 응용 프로그램 사용 빈도가 높은 것을 위주로 fetching한다. prefetch 된 응용 프로그램과 그렇지 않은 프로그램의 구동 속도 차이는 80~90% 차이가 난다고 한다. 또한, 악성코드의 직접 실행 흔적을 발견할 수 있다.
프리패치 구조
추가예정
포렌식적 의미
응용 프로그램 이름, 실행 횟수 등 다양한 정보를 가지고 있으므로 디지털 포렌식에서 다양한 정보를 얻을 수 있는 중요한 정보로 활용될 수 있다.
- 응용 프로그램 이름
- 생성, 수정시간
- 실행 횟수
- 응용 프로그램 마지막 실행 시간(Windows 64 bits Time Stamp)
- 파일 시스템 시간 정보
- 볼륨 정보
- 실행파일이 참조하는 파일 목록 및 경로(EXE, NLS, SDB, DLL, INI, RTF, WXL 등)
요약
- 경로 : C:\Windiws\Prefetch
- Windows의 메모리 관리 정책 중 하나
- 실행파일을 메모리로 로딩할 때 최대 효율을 내기 위해 개발
- Windows 부팅 시 Prefetch 파일을 모두 메모리에 로드
- 한 번이라도 실행시켰던 파일은 Prefetch 파일로 남기 때문에 악성코드 실행 기록도 남음
- 포렌식적으로 중요한 정보 활용이 가능
External Links
'DFIR > DFIR' 카테고리의 다른 글
[파일 시스템]FAT32 - 1편(Reserved Area) (0) | 2021.11.12 |
---|---|
[Windows Forensics] 이벤트 로그 (0) | 2021.11.10 |
생성시간 vs 수정시간 (0) | 2021.07.03 |
쓰기 방지(Write block)란 ? (0) | 2021.06.25 |
Jumplist 란? (0) | 2021.06.25 |