열기 및 다른 이름으로 저장 대화 상자 (OpenSaveMRU)¶
대화 상자 기록이란¶
프로그램이 공용 열기 또는 다른 이름으로 저장 대화 상자를 표시하면, Windows는 사용자의 NTUSER.DAT에 다음을
기록합니다.
- 어떤 파일이 열리거나 저장되었는지:
OpenSavePidlMRU에는 확장자(docx,ps1, …)마다 하나의 하위 키와 모든 확장자를 위한*가 있으며, 각각은 최근 사용(MRU) 목록입니다. - 어떤 프로그램이 대화 상자를 사용했고 어느 폴더에 있었는지:
LastVisitedPidlMRU(이전 대화 상자를 사용하는 프로그램의 경우LastVisitedPidlMRULegacy). - 대화 상자를 표시한 프로그램:
CIDSizeMRU(프로그램별 대화 상자 크기)와FirstFolder(프로그램의 경로와 폴더). - Windows 2000과 XP에서는
OpenSaveMRU(확장자별 경로)와LastVisitedMRU(프로그램과 그 폴더를 경로로 표시).
Windows Vista부터 파일과 폴더는 바로 가기의 대상과 같은 구조인 셸 항목 목록으로 저장됩니다. 각 항목은 경로의 한 부분(내 PC, 드라이브, 폴더, 파일)이며, 파일이나 폴더 항목은 자체 시간과 NTFS 파일 참조를 가질 수 있습니다.
가장 타당한 결론: 이 사용자의 세션에서 어떤 프로그램이 열기 또는 다른 이름으로 저장 대화 상자를 사용하여 이 파일을 열거나 저장했거나, 이 폴더에서 대화 상자를 사용했습니다. 각 목록에서 가장 최근 항목만 날짜가 있으며, 이는 키의 마지막 쓰기 시간입니다.
위치¶
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\
OpenSavePidlMRU\<extension> shell item lists, MRUListEx order (Vista and later)
OpenSavePidlMRU\* every extension
LastVisitedPidlMRU program name, then a shell item list
LastVisitedPidlMRULegacy the same
CIDSizeMRU program name
FirstFolder program path, then a folder path
OpenSaveMRU\<extension> paths, MRUList order (2000 and XP)
LastVisitedMRU program name, then a folder path (2000 and XP)
모든 프로필에 대해 NTUSER.DAT를 트랜잭션 로그와 함께 수집하십시오.
분석 시 주의 사항¶
- 목록당 하나의 시간. 키의 마지막 쓰기 시간은 항목 중 하나가 목록의 맨 앞으로 이동할 때 변경되므로,
위치 0의 항목(
IsMostRecent,LastUsedUTC)만 날짜를 알 수 있습니다. 나머지 항목은 목록 아래로 갈수록 최신에서 오래된 순서로 정렬되어 있지만 날짜는 없습니다. - 두 목록에 있는 같은 파일. 파일은 해당 확장자의 목록과
*에 모두 있습니다. 두 번 사용된 것으로 세지 마십시오.*는 확장자 전체에 걸친 순서를 알려 줍니다. - 열었는지 저장했는지. 목록은 어느 쪽인지 알려 주지 않습니다. 파일의
$MFT및 USN 저널 레코드, LNK 파일, Jump Lists와 상관 분석하십시오. - 항목 시간은 대화 상자가 아니라 파일의 시간입니다.
ItemModifiedUTC,ItemCreatedUTC,ItemAccessedUTC는 항목이 기록될 당시 파일의 시간이며, 2초 단위(FAT)입니다. 알려진 폴더 (CLSID_ThisPCDocumentsRegFolder,Downloads, …)의 항목에는 시간이 없는 경우가 많습니다. 이 FAT 타임스탬프에는 표준 시간대 오프셋이 없습니다.UTC열 접미사는 표시 관례일 뿐 원래 시계가 UTC였다는 증거가 아닙니다. 레지스트리 FILETIME과 비교하기 전에 원본 시스템의 표준 시간대 및 다른 타임스탬프와 상관 분석하십시오. Microsoft의 파일 시간 안내를 참조하십시오. - 경로는 셸 경로입니다. 경로는 바탕 화면에서 시작합니다:
This PC\C:\Users\…, 알려진 폴더, 라이브러리 (UsersLibraries\Documents\…) 또는 네트워크 위치. 폴더나 파일로 시작하는 경로는 바탕 화면에 있는 것입니다. 빈 경로는 바탕 화면 자체입니다. - 디코딩되지 않은 항목. 셸 항목 파서가 알지 못하는 유형의 항목은 클래스(
[class 0x00])로 표시되고, 유형은unknown이며, 목록의 바이트는DataRaw에 들어 있습니다. - 프로그램은 이름입니다.
LastVisitedPidlMRU와CIDSizeMRU는 경로가 아니라 파일 이름(WINWORD.EXE)을 보관합니다.FirstFolder는 경로를 보관합니다. - 목록은 짧고 정리됩니다. 각 목록은 제한된 수의 항목만 보관하며, 정리 도구는 키를 삭제합니다. 삭제된 값은
parse-registry read --recover-deleted를 사용하십시오.
Juntei로 파싱하기¶
Usage: juntei parse-registry open-save-mru <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find NTUSER.DAT hives
-f, --file <FILE> Parse one NTUSER.DAT
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
--code-page <CP> Code page of shell item names that aren't Unicode (default 1252)
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry open-save-mru -d evidence/ -o opensavemru.csv
juntei parse-registry open-save-mru -f NTUSER.DAT -t jsonl \
| jq 'select(.List == "OpenSavePidlMRU" and .Extension != "*")'
요약에는 목록별 항목, 대화 상자를 사용한 프로그램, 그리고 각 하이브의 가장 최근 파일(*의 첫 번째 항목)이
표시됩니다.
출력 필드¶
| 필드 | 해석 |
|---|---|
Host, User, UserSID, SourcePath |
호스트, 프로필 소유자(경로 또는 셸 폴더에서), 시스템 ProfileList의 SID, 그리고 하이브. |
List |
OpenSavePidlMRU, LastVisitedPidlMRU, LastVisitedPidlMRULegacy, CIDSizeMRU, FirstFolder, OpenSaveMRU 또는 LastVisitedMRU. |
Extension |
확장자의 하위 키(docx, *). 다른 목록에서는 비어 있습니다. |
MRU-Position, IsMostRecent |
키의 목록 내 위치(0이 가장 최근). 목록이 해당 값을 지칭하지 않으면 비어 있습니다. |
ValueName |
값의 번호(MRUListEx) 또는 문자(MRUList). |
Program |
대화 상자를 표시한 프로그램. |
Path |
파일 또는 폴더: 셸 항목 이름을 연결한 것, 또는 텍스트로 저장된 경로. |
ItemType |
마지막 셸 항목의 유형: file, directory, root_folder, volume, network_location, property_view, unknown, … |
ItemModifiedUTC, ItemCreatedUTC, ItemAccessedUTC |
셸 항목이 기록한 파일 또는 폴더의 시간. |
MFT-Entry, MFT-Sequence |
셸 항목이 기록한 NTFS 파일 참조. |
LastUsedUTC |
키의 마지막 쓰기 시간. 가장 최근 항목에만 해당합니다. |
KeyPath, KeyLastWrittenUTC |
키와 키의 마지막 쓰기 시간: 모든 행이 아니라 가장 최근 항목의 시간입니다. |
DataRaw |
디코딩되지 않을 때 값의 바이트(16진수), 또는 항목 유형을 알 수 없을 때의 셸 항목 목록. |
TransactionLogStatus, LogsApplied |
레지스트리 복구 컨텍스트. |
Problems |
목록이 지칭하지만 키에 없는 값, 목록이 지칭하지 않는 값, 잘못된 유형, 잘린 이름이나 목록. |
조사 전략¶
- 사용자별로
*를 순서대로 읽고, 가장 최근 파일은LastUsedUTC로 확인합니다. - 사용자가 쓸 수 있는 위치, 이동식 위치 또는 네트워크 위치에 있는 스크립트, 압축 파일, 실행 파일, 문서와, 자격 증명이나 내보내기 파일처럼 보이는 이름의 파일을 찾습니다.
LastVisitedPidlMRU를 사용하여 프로그램과 그 프로그램이 마지막으로 사용한 폴더를 연결하고,CIDSizeMRU와FirstFolder로 대화 상자를 한 번이라도 사용한 프로그램을 확인합니다.- 경로와
MftEntry를$MFT, USN 저널, LNK 파일, Jump Lists, ShellBags, RecentDocs와 상관 분석합니다.