MRU(최근 사용) 목록 (RunMRU, TypedPaths, WordWheelQuery, TypedURLs)¶
목록이란¶
Windows와 프로그램은 사용자가 마지막으로 입력하거나 연 항목의 짧은 목록을 사용자의
NTUSER.DAT에 보관합니다.
- RunMRU: 실행 대화 상자(Win+R)에 입력한 명령입니다:
cmd,powershell -ep bypass,\\server\share,regedit. - TypedPaths: 탐색기 주소 표시줄에 입력한 경로입니다.
- WordWheelQuery: 탐색기 검색 상자에서 검색한 검색어입니다.
- TypedURLs: Internet Explorer 주소 표시줄에 입력한 주소이며, Windows 8부터는
TypedURLsTime에 각 주소를 입력한 시간이 기록됩니다. - Paint 및 WordPad: 각 프로그램이 마지막으로 연 파일(
Recent File List)입니다. - ACMru (Windows XP): 검색 도우미(Search Assistant)의 검색어이며, 검색 종류별로 기록됩니다.
가장 타당한 결론: 사용자가 이 명령, 경로, 검색어 또는
주소를 입력했거나, 프로그램이 이 파일을 열었습니다. 각 목록에서 시간이 확인되는 것은 가장 최근
항목뿐이며, 이는 키의 마지막 쓰기 시간으로 결정됩니다. 단, 입력한 주소는 TypedURLsTime으로 시간이 확인됩니다.
위치¶
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU a, b, … in MRUList order
Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths url1 (the most recent), url2, …
Software\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery 0, 1, … in MRUListEx order
Software\Microsoft\Internet Explorer\TypedURLs url1, url2, …
Software\Microsoft\Internet Explorer\TypedURLsTime url1, url2, … (FILETIME)
Software\Microsoft\Windows\CurrentVersion\Applets\Paint\Recent File List File1, File2, …
Software\Microsoft\Windows\CurrentVersion\Applets\Wordpad\Recent File List File1, File2, …
Software\Microsoft\Search Assistant\ACMru\<kind> 000, 001, … (Windows XP)
ACMru의 하위 키는 검색 종류를 나타냅니다: 5603 파일 및 폴더 이름, 5604 파일 내 단어 또는 구문,
5647 컴퓨터 및 사용자, 5001 인터넷.
모든 프로필에 대해 NTUSER.DAT를 트랜잭션 로그와 함께 수집하십시오.
분석 시 주의 사항¶
- 목록당 시간은 하나뿐입니다. 키의 마지막 쓰기 시간은 목록이 바뀔 때 변경되므로, 가장 최근
항목의 시간만 알려 줍니다(
IsMostRecent,LastUsedUTC). 나머지 항목은 순서만 있고 시간은 없습니다.TypedURLsTime은 입력한 각 주소의 시간을 기록합니다(TypedTimeUTC). - 입력한 것이지 실행한 것은 아닙니다. RunMRU는 실행 대화 상자에 입력된 내용을 성공적으로 실행되었는지와
관계없이 기록합니다. Windows는 각 명령 끝에
\1을 붙여 저장하며, Juntei는 이를 제거합니다. Prefetch, BAM, UserAssist 및 프로세스 생성 이벤트와 상관 분석하십시오. - 목록은 짧습니다. 각 목록은 가장 최근 항목만 유지하며, 개인 정보 설정과 정리 도구가 목록을 지웁니다.
삭제된 값은
parse-registry read --recover-deleted를 사용하십시오. - 검색어는 입력한 내용입니다. WordWheelQuery와 ACMru는 찾은 결과가 아니라 입력한 텍스트를 보관합니다.
- 순서는 목록에서 결정됩니다. RunMRU의
MRUList와 WordWheelQuery의MRUListEx가 순서를 나타내며, 나머지 목록은 값의 번호가 순서를 나타냅니다(url1,File1,000이 가장 최근 항목입니다).
Juntei로 파싱하기¶
Usage: juntei parse-registry 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
Filtering:
--list <LISTS> runmru, typedpaths, wordwheelquery, typedurls, paint, wordpad, acmru
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry mru -d evidence/ -o mru.csv
juntei parse-registry mru -f NTUSER.DAT --list wordwheelquery,typedpaths -t jsonl
juntei parse-registry mru -f NTUSER.DAT --list runmru -t jsonl \
| jq 'select(.Value | test("powershell|cmd|mshta"; "i"))'
요약에는 목록별 항목과 시간이 확인되는 항목(입력한 주소 및 각 목록의 가장 최근 항목)이 최신순으로 표시됩니다.
출력 필드¶
| 필드 | 해석 |
|---|---|
Host, User, UserSID, SourcePath |
호스트, 프로필 소유자(경로 또는 셸 폴더에서 확인), 시스템의 ProfileList에서 가져온 SID, 그리고 하이브입니다. |
List |
RunMRU, TypedPaths, WordWheelQuery, TypedURLs, Paint, Wordpad 또는 ACMru입니다. |
Subkey |
ACMru의 하위 키로, 검색 종류(5603, 5604, 5647, 5001)를 나타냅니다. |
MRU-Position, IsMostRecent |
목록 내 위치(0이 가장 최근)입니다. 목록이 해당 값을 지정하지 않으면 비어 있습니다. |
ValueName |
a, 0, url1, File1, 000, … |
Value |
명령(\1 제외), 경로, 검색어, 주소 또는 파일입니다. |
TypedTimeUTC |
TypedURLsTime에서 가져온, 주소를 입력한 시간입니다. |
LastUsedUTC |
키의 마지막 쓰기 시간으로, 가장 최근 항목에만 기록됩니다. |
KeyPath, KeyLastWrittenUTC |
키와 그 마지막 쓰기 시간입니다. 모든 행의 시간이 아니라 가장 최근 항목의 시간입니다. |
DataRaw |
디코딩되지 않는 경우 값의 바이트(16진수)입니다. |
TransactionLogStatus, LogsApplied |
레지스트리 복구 컨텍스트입니다. |
Problems |
목록에는 지정되어 있으나 키에 없는 값, 목록에 지정되지 않은 값, 이름이 잘못된 값, 잘못된 형식, 잘린 검색어, FILETIME이 아닌 시간입니다. |
조사 전략¶
- RunMRU에서 사용자가 입력한 명령, 스크립트, 네트워크 공유 및 관리 도구를 확인하십시오.
- TypedPaths와 WordWheelQuery에서 사용자가 찾으려 한 폴더와 파일을 확인하십시오: 자격 증명, 내보내기 파일, 아카이브, 이동식 및 네트워크 위치 등.
TypedTimeUTC를 사용하여 입력한 주소를 타임라인에 배치하십시오.- Prefetch, BAM, UserAssist, ShellBags, LNK 파일, Jump Lists 및 브라우저 기록과 상관 분석하십시오.