Microsoft Office (ไฟล์ล่าสุด, Trusted Documents, การตั้งค่ามาโคร)¶
สิ่งที่ Office บันทึกไว้¶
Microsoft Office จัดเก็บข้อมูลต่อผู้ใช้ไว้ใน NTUSER.DAT แยกตามเวอร์ชันและแอปพลิเคชัน ได้แก่
- ไฟล์และตำแหน่งล่าสุด:
File MRUคือเอกสารที่แอปพลิเคชันเปิด และPlace MRUคือโฟลเดอร์ที่เอกสารเหล่านั้นถูกเปิดมา แต่ละรายการมีเวลาที่เปิดครั้งล่าสุด Microsoft 365 ยังเก็บรายการแยกต่อบัญชีที่ลงชื่อเข้าใช้ (User MRU\<account>) ด้วย - Trusted Documents: เมื่อผู้ใช้คลิก Enable Editing หรือ Enable Content บนเอกสาร
Office จะจดจำเอกสารนั้นไว้ใน
TrustRecordsได้แก่ พาธของเอกสาร เวลาที่ได้รับความเชื่อถือ และ มาโครของเอกสารถูกเปิดใช้งานหรือไม่ - การตั้งค่ามาโคร:
VBAWarnings(มาโครใดบ้างที่ทำงาน),BlockContentExecutionFromInternet(มาโครในไฟล์จากอินเทอร์เน็ตถูกบล็อกหรือไม่),AccessVBOM(โปรแกรมสามารถ แก้ไขโปรเจกต์ VBA ได้หรือไม่) และ Trusted Locations ซึ่งเป็นโฟลเดอร์ที่มาโครของเอกสารภายในจะทำงานโดยไม่ ถาม Group Policy สามารถตั้งค่าเดียวกันนี้ได้ภายใต้Software\Policies
เอกสารที่เป็นอันตรายโดยปกติต้องให้ผู้ใช้เปิดใช้งานมาโคร: trust record ที่มาโคร ถูกเปิดใช้งานจะเชื่อมโยงเอกสาร ผู้ใช้ และเวลาเข้าด้วยกัน
ข้อสรุปที่ดีที่สุด: ผู้ใช้เปิดเอกสารนี้ในแอปพลิเคชันนี้ (และเปิดครั้งล่าสุด ณ เวลานี้) ผู้ใช้เปิดใช้งานการแก้ไขหรือมาโครของเอกสารนี้ ณ เวลานี้ และ Office ถูกกำหนดค่าให้เรียกใช้มาโครในลักษณะนี้
ตำแหน่ง¶
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\Office\<version>\<application>\File MRU Item 1, Item 2, …
Software\Microsoft\Office\<version>\<application>\Place MRU
Software\Microsoft\Office\<version>\<application>\User MRU\<account>\File MRU
Software\Microsoft\Office\<version>\<application>\Security\Trusted Documents\TrustRecords
Software\Microsoft\Office\<version>\<application>\Security VBAWarnings, …
Software\Microsoft\Office\<version>\<application>\Security\Trusted Locations\LocationN
Software\Policies\Microsoft\Office\<version>\<application>\Security by policy
เวอร์ชัน: 16.0 คือ Office 2016 และรุ่นใหม่กว่า (2019, 2021, 2024, Microsoft 365), 15.0 คือ Office 2013,
14.0 คือ Office 2010, 12.0 คือ Office 2007
แต่ละรายการมีลักษณะเช่น [F00000000][T01D86AF6D3C287B0][O00000000]*C:\Users\alice\report.docx โดย T
คือเวลาที่เปิดครั้งล่าสุด (FILETIME ในรูปเลขฐานสิบหก) และพาธตามหลัง * trust record มีขนาด 24
ไบต์ ได้แก่ FILETIME ที่เอกสารได้รับความเชื่อถือ ตามด้วยแฟล็กใน 4 ไบต์สุดท้าย ซึ่งเป็น 0x7FFFFFFF
เมื่อมาโครถูกเปิดใช้งาน และ 0x00000001 เมื่อเปิดใช้งานเฉพาะการแก้ไข
ข้อควรระวังสำหรับนักวิเคราะห์¶
- เวลา
LastOpenedUTCคือเวลาของแต่ละรายการเองTrustedAtUTCคือเวลาที่ผู้ใช้ให้ความเชื่อถือ เอกสาร ซึ่งก็คือช่วงเวลาที่คลิก Enable Editing หรือ Enable Content ซึ่งอาจอยู่ก่อน การเปิดครั้งล่าสุด - มาโครถูกเปิดใช้งาน ไม่ใช่ถูกเรียกใช้
MacrosEnabledบอกว่าผู้ใช้เปิดใช้งานมาโครของเอกสาร แต่ ไม่ได้พิสูจน์ว่ามาโครทำงานหรือทำอะไร ให้เชื่อมโยงกับการสร้างโพรเซส Prefetch บันทึก PowerShell และตัวเอกสารเอง - พาธตามที่ Office จัดเก็บ trust record ระบุเอกสารด้วยพาธที่อาจใช้
%USERPROFILE%เครื่องหมายทับไปข้างหน้า URL แบบfile:///และการเข้ารหัส URL (%20) รายการ MRU ของ เอกสารบนคลาวด์จะเป็น URL - ค่าเริ่มต้นและนโยบายที่มีผลจริง Office สร้าง trusted location เริ่มต้น (
Templates,XLSTART,STARTUP, …) ค่าDateของ location เป็นเบาะแสที่มีประโยชน์ แต่ไม่ใช่หลักฐานว่าใครเป็นผู้สร้าง: ผู้ดูแลระบบ สคริปต์ นโยบาย และการตั้งค่ารีจิสทรีที่ถูกคัดลอกมาก็สามารถเพิ่มค่านี้ได้ การไม่มีVBAWarningsเพียงอย่างเดียวไม่ได้ยืนยันนโยบายมาโครที่มีผลจริง เวอร์ชันของ Office การทำเครื่องหมายไฟล์ จากอินเทอร์เน็ต และการตั้งค่าการจัดการอื่น ๆ ก็มีผลเช่นกัน Microsoft อธิบายการบล็อกมาโครจากอินเทอร์เน็ต - เอกสารที่ถูกลบ รายการเหล่านี้คงอยู่นานกว่าตัวเอกสาร ไฟล์ที่ไม่มีอยู่แล้วอาจยังแสดง ที่นี่ได้ รายการมีความยาวสั้นและจะถูกล้างโดย Clear unpinned items ของ Office และเครื่องมือล้างข้อมูล
วิเคราะห์ด้วย Juntei¶
Usage: juntei parse-registry office <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
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry office -d evidence/ -o office.csv
juntei parse-registry office -f NTUSER.DAT -t jsonl | jq 'select(.MacrosEnabled == true)'
ข้อมูลสรุปจะแสดงเอกสารที่มาโครถูกเปิดใช้งาน การตั้งค่าที่ทำให้มาโครทำงานได้
อย่างอิสระมากขึ้น (VBAWarnings 1, BlockContentExecutionFromInternet 0, AccessVBOM 1,
AllowNetworkLocations 1) trusted location ที่ผู้ใช้เพิ่มหรือนโยบายกำหนด และเอกสารที่
เปิดล่าสุด
ฟิลด์เอาต์พุต¶
| ฟิลด์ | การตีความ |
|---|---|
Host, User, UserSID, SourcePath |
โฮสต์ เจ้าของโปรไฟล์ (จากพาธหรือ shell folder) SID จาก ProfileList ของระบบ และไฮฟ์ |
OfficeVersion, App |
คีย์ของเวอร์ชัน (16.0) และแอปพลิเคชัน (Word, Excel, …) |
List |
File MRU, Place MRU, TrustRecords, Security หรือ Trusted Locations |
Account |
บัญชี Microsoft 365 ของรายการ User MRU |
Policy |
การตั้งค่าหรือ location ถูกกำหนดโดยนโยบายหรือไม่ |
MRU-Position, IsMostRecent |
ตำแหน่งของรายการในลิสต์ (Item 1 คือ 0 ซึ่งเป็นรายการล่าสุด) |
Path |
เอกสารหรือโฟลเดอร์ พาธของ trusted document ตามที่จัดเก็บ หรือ Path ของ trusted location |
LastOpenedUTC |
เวลาที่รายการถูกเปิดครั้งล่าสุด |
TrustedAtUTC, MacrosEnabled, TrustFlags |
เวลาที่เอกสารได้รับความเชื่อถือ มาโครถูกเปิดใช้งานหรือไม่ และแฟล็กของเรคคอร์ด แฟล็กที่ไม่รู้จักจะทำให้ MacrosEnabled ว่างและสร้างข้อความวินิจฉัย |
Setting, Value |
การตั้งค่ามาโครและค่าพร้อมความหมาย (1 (all macros enabled)) หรือคีย์ของ trusted location (Location3) และค่าอื่น ๆ ของคีย์นั้น (AllowSubFolders=1; Date=…; Description=…) |
KeyPath, KeyLastWrittenUTC |
คีย์และเวลาเขียนล่าสุด |
DataRaw |
ไบต์ของค่า (hex) เมื่อถอดรหัสไม่ได้ |
TransactionLogStatus, LogsApplied |
บริบทการกู้คืนรีจิสทรี |
Problems |
รายการที่ไม่มี * หรือมีเวลาที่ไม่ใช่เวลาที่ถูกต้อง trust record ที่ไม่ใช่ 24 ไบต์ location ที่ไม่มี Path และชนิดที่ไม่ถูกต้อง |
กลยุทธ์การตรวจสอบ¶
- เริ่มจาก
MacrosEnabledที่เป็น true: เอกสารใด เมื่อใด และโดยใคร ค้นหาไฟล์ ($MFT, USN Journal,Zone.Identifier) แหล่งที่มา (ประวัติเบราว์เซอร์และอีเมล) และสิ่งที่ทำงานต่อจากนั้น - ตรวจสอบการตั้งค่ามาโครและ trusted location: การเปิดใช้งานมาโครทั้งหมด การไม่บล็อกมาโครจากอินเทอร์เน็ต
การเข้าถึงโปรเจกต์ VBA หรือ location ที่ผู้ใช้เพิ่มเอง (ใน
Downloads,Tempหรือแชร์บนเครือข่าย) ล้วนลดความปลอดภัยของค่าเริ่มต้น - นำ
LastOpenedUTCไปไว้บนไทม์ไลน์ร่วมกับไฟล์ LNK, Jump Lists และ RecentDocs สำหรับ พาธของเอกสาร รวมถึงตำแหน่งแบบถอดได้และบนเครือข่าย