[Artifact] 윈도우 포렌식 - JumpList 아티팩트
점프리스트
점프리스트는 응용프로그램 별로 그룹화 하고 최근에 실행한 파일에 대한 링크를 관리하는 파일이다.
윈도우7부터 새롭게 추가된 아티팩트로 UsserAssist, Recent 등의 아티팩트와 비슷하지만 좀 더 지역성의 원리를 활용한 기능이다.
인지하지 못했을 수 있지만 이미 다들 한 번쯤 점프리스트를 본 적이 있을 것이다. 응용프로그램 실행 시 작업 표시줄에 표시되는 아이콘을 우클릭 했을 때 최근 항목, 작업 항목, 자주 사용하는 항목, 사용자 고정 목록이 표시되는데 이것이 바로 점프리스트다.
포렌식적 관점
포렌식 관점에서 보면 사용자가 일부로 삭제하지 않는 이상 계속 관련 로그를 저장한다는 점에서 중요한 아티팩트 중 하나가 될 수 있다. 점프리스트 아티팩트를 포렌식 관점에서 봤을 때 얻을 수 있는 정보는 다음과 같다.
- 문서, 프로그램 실행 유무
- 자주 사용하는 문서, 프로그램 정보
- 최근에 사용한 문서, 프로그램 정보
점프리스트 경로
파일에 대한 링크를 관리하는 파일
%UserProfile%\AppData\Roaming\Microsoft\Windows\Recent
최근에 사용한 목록(Recent), 사용자가 고정시킨 목록
%UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations
자주 사용되는 목록이나 작업(Task) 목록
%UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations
점프리스트 저장 형식
점프리스트 파일은 '최근 문서'의 하위 폴더에 2가지 형태로 저장된다. 폴더의 이름은 Automatic Destinations와 CustomDestinations다.
점프리스트는 모두 16자리 16진수 형식의 값의 이름(응용프로그램 별로 고유 값 소유)으로 저장되며 확장자는 .automaticDestination-ms다. 이 때 응용프로그램 별로 고유 값은(AppID)는 CRC-64 알고리즘에 의해 생성된다. 따라서 저장 경로가 달라지면 한 어플리케이션에 대해 여러 개의 JumpLits 파일이 생성될 수 있다.
*.automaticDestinations-ms 파일 구조
automaticDestinations-ms 파일은 Microsoft CFB(Compound File Binary) 형식(OLE)을 따른다. 각 파일은 SHLLINK 스트림과 한 개의 DestList 스트림으로 구성되어 있다.
DestList 헤더 구조
DestList 헤더는 점프리스트 파일에 대한 간략한 정보를 포함한다.
Version Number | 4bytes | 0x00 | windows 7/8 -> 1/ windows 10 -> 4 |
Total number of current Entries | 4bytes | 0x04 | |
Total number of pinned Entries | 4bytes | 0x08 | |
Unknown value | 4bytes | 0x0C | |
Last Issued Entry ID number | 8bytes | 0x10 | |
Number of add/delete/re-open actions | 8bytes | 0x14 |
DestList Entry 구조
DestList 헤더는 점프리스트 파일에 대한 간략한 정보를 포함한다.
Checksum | 8bytes | 0x00 |
New Volume ID | 16bytes | 0x08 |
New Object ID | 16bytes | 0x18 |
Birth Volume ID | 16bytes | 0x28 |
Birth Object ID | 16bytes | 0x38 |
NetBIOS Name | 16bytes | 0x48 |
Entry ID number | 4bytes | 0x58 |
8bytes | 0x5C | |
MSFILETIME of last recorded access | 8bytes | 0x64 |
Enty pin status | 4bytes | 0x6C |
4bytes | 0x70 | |
access count | 4bytes | 0x74 |
0x0000000000000000 | 8bytes | 0x78 |
length of unicode | 2bytes | 0x80 |
entry string data | 가변적 | 0x82 |