รายการ MRU ที่ใช้ล่าสุด (RunMRU, TypedPaths, WordWheelQuery, TypedURLs)¶
รายการเหล่านี้คืออะไร¶
Windows และโปรแกรมต่าง ๆ จะเก็บรายการสั้น ๆ ของสิ่งที่ผู้ใช้พิมพ์หรือเปิดล่าสุดไว้ใน
NTUSER.DAT ของผู้ใช้:
- RunMRU: คำสั่งที่พิมพ์ในกล่องโต้ตอบ Run (Win+R):
cmd,powershell -ep bypass,\\server\share,regedit - TypedPaths: พาธที่พิมพ์ในแถบที่อยู่ของ Explorer
- WordWheelQuery: คำที่ค้นหาในช่องค้นหาของ Explorer
- 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 พร้อม transaction log ของทุกโปรไฟล์
ข้อควรระวังสำหรับนักวิเคราะห์¶
- หนึ่งเวลาต่อหนึ่งรายการ เวลาเขียนล่าสุดของคีย์จะเปลี่ยนเมื่อรายการเปลี่ยน จึงระบุเวลาได้เฉพาะ
รายการล่าสุดเท่านั้น (
IsMostRecent,LastUsedUTC) รายการอื่นเรียงตามลำดับแต่ไม่มีวันเวลา ส่วนTypedURLsTimeระบุเวลาของที่อยู่ที่พิมพ์แต่ละรายการ (TypedTimeUTC) - พิมพ์ ไม่ใช่เรียกใช้ RunMRU บันทึกสิ่งที่พิมพ์ในกล่องโต้ตอบ Run ไม่ว่าจะเรียกใช้สำเร็จหรือไม่
Windows จัดเก็บแต่ละคำสั่งโดยมี
\1ต่อท้าย ซึ่ง Juntei จะตัดออก ให้เชื่อมโยง กับ Prefetch, BAM, UserAssist และเหตุการณ์การสร้างโพรเซส - รายการสั้น แต่ละรายการเก็บเฉพาะรายการล่าสุดเพียงไม่กี่รายการ และการตั้งค่าความเป็นส่วนตัวหรือเครื่องมือทำความสะอาด
สามารถล้างรายการเหล่านี้ได้ ใช้
parse-registry read --recover-deletedสำหรับค่าที่ถูกลบ - คำค้นคือสิ่งที่พิมพ์ WordWheelQuery และ ACMru เก็บข้อความที่พิมพ์ ไม่ใช่สิ่งที่ค้นพบ
- ลำดับมาจากรายการ
MRUListของ RunMRU และMRUListExของ WordWheelQuery ให้ลำดับ ส่วนรายการอื่น ลำดับมาจากหมายเลขของค่า (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 |
โฮสต์ เจ้าของโปรไฟล์ (จากพาธหรือ shell folder) SID จาก ProfileList ของระบบ และไฮฟ์ |
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 |
ไบต์ของค่า (hex) เมื่อถอดรหัสไม่ได้ |
TransactionLogStatus, LogsApplied |
บริบทการกู้คืนรีจิสทรี |
Problems |
ค่าที่รายการระบุชื่อแต่คีย์ไม่มี ค่าที่รายการไม่ได้ระบุชื่อ ค่าที่ตั้งชื่อผิด ชนิดข้อมูลผิด คำค้นที่ถูกตัดทอน และเวลาที่ไม่ใช่ FILETIME |
กลยุทธ์การตรวจสอบ¶
- อ่าน RunMRU เพื่อหาคำสั่ง สคริปต์ แชร์บนเครือข่าย และเครื่องมือดูแลระบบที่ผู้ใช้พิมพ์
- อ่าน TypedPaths และ WordWheelQuery เพื่อหาโฟลเดอร์และไฟล์ที่ผู้ใช้ค้นหา: ข้อมูลประจำตัว (credentials) ไฟล์ส่งออก ไฟล์บีบอัด ตำแหน่งบนสื่อแบบถอดได้และบนเครือข่าย
- นำที่อยู่ที่พิมพ์ไปวางบนไทม์ไลน์ด้วย
TypedTimeUTC - เชื่อมโยงกับ Prefetch, BAM, UserAssist, ShellBags, ไฟล์ LNK, Jump Lists และประวัติเบราว์เซอร์