Security/Forensics

[Artifact] 윈도우 포렌식 - 프리패치(Prefetch) & 슈퍼패치(Superfetch)

bonggang 2019. 9. 25. 04:47

프리패치(C:\Windows\Prefetch)


- 시그니처: SCCA(0X41434353) -

 

프리패치는 보조기억장치와 주기억장치의 I/O 속도 차이에 따른 시스템 부하를 극복하기 위해 사용되는 응용프로그램을 미리 메모리에 로드하기 위해 사용되는 윈도우 시스템의 요소다. 

포렌식 관점에서 분석할 때, 프리패치의 의의는 응용프로그램이 실행된 흔적을 찾을 수 있다는 것이다. 이 때 사용되는 정보들은 응용프로그램 이름, 응용프로그램 실행 횟수, 응용 프로그램 마지막 실행 시간, 참조 목록(dll/ini 등)이 있다.

일반적으로 침해사고와 연관지을 수 있는 프리패치 흔적은 NET/NET1/CMD 등이 있지만 정상 사용자의 작업일 가능성 역시 존재한다.

 

프리패치 파일로부터 얻을 수 있는 정보

 

악성코드 흔적

참조 목록을 분석 시 부팅 시 로드되는 악성코드나 응용프로그램에 인젝션되어 동작하는 악성코드를 발견할 수 있다.

 

실행한 파일 흔적

파일 실행을 위해 더블클릭 시 10초 모니터링 과정에서 실행한 파일이 로드되어 참조 목록에 기록된다. 압축 파일의 경우 보통 압축 해제 시 압축 파일과 압축 해제 된 파일 목록이 참조 목록에 추가된다. 하지만 실행한 파일의 흔적이 항상 남는 것은 아니다.

 

외장저장장치 사용 흔적

참조 목록을 분석 시 파일의 경로를 확인할 수 있다. 이를 활용해서 실행한 파일 목록이 참조 목록에 포함될 경우 외장저장장치의 흔적을 확인할 수 있는 것이다.

 

부팅 혹은 응용프로그램 실행 과정

참조 목록은 참조한 순서대로 기록되기 때문에 해당 순서를 살펴보면 부팅이나 각 응용프로그램의 실행 과정을 파악할 수 있다.

 

 

슈퍼패치 (C:\Windows\Prefetch)


사용자의 사용 패턴을 기록한 후 자주 사용하는 프로그램의 프리패치 데이터가 페이지 아웃(page-out)될 경우, 이를 다시 메모리로 페이지 인(page-in) 시키는 기능을 수행한다. 즉, 시간 대를 나누어 자주 사용하는 프로그램 목록을 관리하고 페이지 아웃이 일어나지 않도록 도와주는 것이다.

슈퍼패치 설정은 레지스트리에서 가능하며 다음과 같다.

 

KEY: HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters

Value: EnableSuperfetch(0: 비활성화, 1:부트 파일만 슈퍼패치, 2: 응용프로그램만, 3:부트 파일과 응용프로그램 둘 다)

 

슈퍼패치 역시 프리패치 폴더에 존재하는데 "Ag"의 접두어와 ".db"의 확장자를 가진다.

슈퍼패치 파일들로 부터 얻을 수 있는 데이터는 실행 프로그램의 이름, 실행 횟수, Foreground 실행 횟수, 실행 프로그램이 메모리에 로드한 파일(dll, 압축, 문서, db 등), 실행 프로그램 전체 경로, 실행 프로그램의 실행 시간대, 타임스탬프 등이 있다.

 

슈퍼패치는 Ag 접두어를 가지고 .db 확장자를 가진다. 슈퍼패치는 압축된 파일과 비압축된 파일로 구분할 수 있다.

 

 

 

 

참고 자료


http://forensic-proof.com/archives/6599