खोलें और इस रूप में सहेजें संवाद (OpenSaveMRU)¶
संवाद इतिहास क्या है¶
जब कोई program सामान्य Open या Save As संवाद दिखाता है, तो Windows उपयोगकर्ता के
NTUSER.DAT में दर्ज करता है:
- कौन-सी file खोली या सहेजी गई:
OpenSavePidlMRUमें प्रत्येक extension (docx,ps1, …) के लिए एक subkey और हर extension के लिए*होता है, और प्रत्येक एक most-recently-used list है; - किस program ने संवाद का उपयोग किया, और वह किस folder में था:
LastVisitedPidlMRU(और पुराने संवादों का उपयोग करने वाले programs के लिएLastVisitedPidlMRULegacy); - वे programs जिन्होंने संवाद दिखाया:
CIDSizeMRU(प्रत्येक program के लिए संवाद का आकार), औरFirstFolder(किसी program का path और एक folder); - Windows 2000 और XP पर,
OpenSaveMRU(प्रत्येक extension के लिए paths) औरLastVisitedMRU(programs और उनके folders, paths के रूप में)।
Windows Vista से files और folders shell item lists होते हैं, यानी वही संरचनाएँ जो किसी shortcut के target की होती हैं: प्रत्येक item path का एक भाग होता है (This PC, कोई drive, कोई folder, file), और file या folder item अपने स्वयं के times और NTFS file reference रख सकता है।
सर्वोत्तम निष्कर्ष: इस उपयोगकर्ता के session में किसी program ने इस file को खोलने या सहेजने के लिए, या इस folder में, Open या Save As संवाद का उपयोग किया। प्रत्येक list की केवल सबसे हाल की entry का समय ज्ञात होता है: उसकी key का last-write time।
स्थान¶
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)
हर profile के लिए NTUSER.DAT को उसके transaction logs के साथ संग्रहित करें।
विश्लेषक के लिए सावधानियाँ¶
- प्रत्येक list के लिए एक समय। किसी key का last-write time तब बदलता है जब उसकी कोई entry अपनी list के
आगे आती है, इसलिए यह केवल position 0 की entry का समय बताता है (
IsMostRecent,LastUsedUTC)। अन्य entries क्रम में होती हैं, list में नीचे की ओर सबसे नई से सबसे पुरानी, लेकिन उनका समय ज्ञात नहीं होता। - दो lists में एक ही file। कोई file अपने extension की list में और
*में होती है; इसे दो उपयोग न गिनें।*सभी extensions में क्रम बताता है। - खोली गई या सहेजी गई। Lists यह नहीं बतातीं कि कौन-सा। File के
$MFTऔर USN Journal records, LNK files और jump lists से correlate करें। - Item times file के होते हैं, संवाद के नहीं।
ItemModifiedUTC,ItemCreatedUTCऔरItemAccessedUTCitem लिखे जाने के समय file के times होते हैं, 2 seconds की सटीकता तक (FAT)। Known folders (CLSID_ThisPCDocumentsRegFolder,Downloads, …) के items में अक्सर कोई समय नहीं होता। इन FAT timestamps में कोई timezone offset नहीं होता।UTCcolumn suffix एक display convention है, इस बात का प्रमाण नहीं कि मूल clock UTC थी; registry FILETIMEs से तुलना करने से पहले source system के timezone और अन्य timestamps से correlate करें। Microsoft का file-time guidance देखें। - Paths shell paths होते हैं। ये desktop से शुरू होते हैं:
This PC\C:\Users\…, कोई known folder, कोई library (UsersLibraries\Documents\…) या कोई network location। जो path किसी folder या file से शुरू होता है, वह desktop पर है। खाली path स्वयं desktop है। - Decode न हुए items। जिस type के item को shell item parser नहीं जानता, उसे उसके
class (
[class 0x00]) से दिखाया जाता है, उसका typeunknownहोता है, और list के bytesDataRawमें होते हैं। - Programs नाम होते हैं।
LastVisitedPidlMRUऔरCIDSizeMRUएक file नाम (WINWORD.EXE) रखते हैं, path नहीं।FirstFolderएक path रखता है। - Lists छोटी होती हैं और साफ़ की जाती हैं। प्रत्येक list सीमित संख्या में entries रखती है, और cleanup tools
keys को delete कर देते हैं। हटाई गई values के लिए
parse-registry read --recover-deletedका उपयोग करें।
Juntei से parse करें¶
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 != "*")'
Summary प्रत्येक list की entries, संवादों का उपयोग करने वाले programs, और प्रत्येक hive की सबसे
हाल की file (* की पहली entry) को सूचीबद्ध करता है।
आउटपुट fields¶
| Field | व्याख्या |
|---|---|
Host, User, UserSID, SourcePath |
Host, profile का स्वामी (path या shell folders से), system के ProfileList से SID, और hive। |
List |
OpenSavePidlMRU, LastVisitedPidlMRU, LastVisitedPidlMRULegacy, CIDSizeMRU, FirstFolder, OpenSaveMRU या LastVisitedMRU। |
Extension |
Extension की subkey (docx, *); अन्य lists के लिए खाली। |
MRU-Position, IsMostRecent |
Key की list में स्थान (0 सबसे हाल का है); जब list value का नाम नहीं देती तो खाली। |
ValueName |
Value की संख्या (MRUListEx) या अक्षर (MRUList)। |
Program |
वह program जिसने संवाद दिखाया। |
Path |
File या folder: shell items के नाम जोड़कर, या text के रूप में संग्रहीत path। |
ItemType |
अंतिम shell item का type: file, directory, root_folder, volume, network_location, property_view, unknown, … |
ItemModifiedUTC, ItemCreatedUTC, ItemAccessedUTC |
File या folder के times, जैसा उसके shell item ने दर्ज किया। |
MFT-Entry, MFT-Sequence |
Shell item द्वारा दर्ज NTFS file reference। |
LastUsedUTC |
Key का last-write time, केवल सबसे हाल की entry के लिए। |
KeyPath, KeyLastWrittenUTC |
Key और उसका अंतिम write: उसकी सबसे हाल की entry का समय, हर row का नहीं। |
DataRaw |
Decode न होने पर value के bytes (hex), या item का type अज्ञात होने पर shell item list। |
TransactionLogStatus, LogsApplied |
Registry recovery का संदर्भ। |
Problems |
ऐसी values जिनका नाम list देती है पर key में नहीं हैं, ऐसी values जिनका नाम list नहीं देती, गलत types, अधूरे कटे नाम या lists। |
जाँच की रणनीति¶
- प्रत्येक उपयोगकर्ता के लिए
*को क्रम में पढ़ें, और सबसे हाल की file के लिएLastUsedUTCदेखें। - User-writable, removable या network स्थानों में scripts, archives, executables और दस्तावेज़ खोजें, और ऐसी files खोजें जिनके नाम credentials या exports जैसे हों।
- किसी program को उसके द्वारा अंतिम बार उपयोग किए गए folder से जोड़ने के लिए
LastVisitedPidlMRUका उपयोग करें, और संवादों का उपयोग करने वाले किसी भी program के लिएCIDSizeMRUतथाFirstFolderका। - Paths और
MftEntryको$MFT, USN Journal, LNK files, jump lists, ShellBags और RecentDocs से correlate करें।