Article
NTFS Forensics: Artifact Ẩn Trong File System
MFT, $USNJrnl, Prefetch, LNK files, Shellbags — những artifact NTFS thường bị bỏ qua nhưng cực kỳ có giá trị trong điều tra số.
NTFS không chỉ là nơi lưu file. Nó ghi lại lịch sử hoạt động của hệ thống qua nhiều cấu trúc dữ liệu nội bộ mà người dùng bình thường không nhìn thấy. Hiểu các artifact này là nền tảng của disk forensics.
Master File Table ($MFT)
Mọi file và thư mục trên NTFS đều có một entry trong MFT. Entry MFT lưu metadata: tên file, timestamps (MACE), quyền truy cập, và data runs (vị trí dữ liệu trên đĩa).
Điều quan trọng: khi file bị xóa, MFT entry không xóa ngay — chỉ đánh dấu là available. Nội dung vẫn có thể recover được cho đến khi sector bị ghi đè.
# Trích xuất $MFT bằng FTK Imager hoặc Arsenal Image Mounter
# Sau đó parse với MFTECmd
MFTECmd.exe -f C:\$MFT --csv output_dir
Timestamps trong MFT:
Mỗi file có 2 bộ timestamp (4 giá trị mỗi bộ):
- $STANDARD_INFORMATION — thường bị malware sửa (timestomping)
- $FILE_NAME — khó sửa hơn, thường giữ giá trị gốc
Khi $STANDARD_INFORMATION timestamps sớm hơn $FILE_NAME timestamps — đây là dấu hiệu rõ ràng của timestomping.
SI Created: 2020-01-01 00:00:00 <-- quá tròn, nghi ngờ
FN Created: 2026-05-15 14:32:17 <-- thời gian thực tế file được tạo
USN Change Journal ($USNJrnl)
USN Journal là log tất cả thay đổi file system: tạo, xóa, rename, modify. Nó là timeline source cực kỳ có giá trị vì ghi lại cả file đã bị xóa.
# Trích xuất $USNJrnl:$J
MFTECmd.exe -f C:\$Extend\$UsnJrnl:$J --csv output_dir
# Hoặc dùng fsutil trên live system
fsutil usn readjournal C: csv > usn_journal.csv
USN Journal có giới hạn kích thước và bị overwrite theo vòng. Trên hệ thống bận, dữ liệu có thể chỉ lưu 24-72 giờ gần nhất.
Những gì cần tìm:
- File được tạo rồi xóa nhanh trong khoảng thời gian ngắn (staging malware)
- Rename file:
payload.exe→svchost.exe - Tạo file trong
%TEMP%,%APPDATA%, hoặc thư mục web server
Prefetch Files
Windows Prefetch ghi lại thông tin về các chương trình đã thực thi: tên executable, thời gian chạy lần đầu và lần gần nhất, số lần chạy, và danh sách file được nạp.
Prefetch files nằm tại C:\Windows\Prefetch\, có tên dạng PROCESSNAME-XXXXXXXX.pf.
# Parse prefetch với PECmd
PECmd.exe -d C:\Windows\Prefetch --csv output_dir
# Hoặc file đơn
PECmd.exe -f C:\Windows\Prefetch\CMD-89305D47.pf
Những gì có thể khai thác:
- Execution timeline — biết chính xác thời điểm tool được chạy lần đầu/cuối
- File dependencies — xem malware load DLL nào, đọc file nào
- Xác nhận execution kể cả file đã bị xóa — prefetch vẫn tồn tại sau khi executable bị xóa
Ví dụ thực tế: attacker xóa mimikatz.exe sau khi dùng, nhưng MIMIKATZ-XXXXXXXX.pf vẫn còn trong Prefetch thư mục.
Lưu ý: Prefetch mặc định tắt trên Windows Server. Nếu cần bật: fsutil behavior set DisablePrefetcher 0.
LNK Files và Jump Lists
Windows tự động tạo LNK (shortcut) files khi user mở file. Chúng lưu tại:
%APPDATA%\Microsoft\Windows\Recent\%APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations\(Jump Lists)
# Parse LNK files với LECmd
LECmd.exe -d C:\Users\Username\AppData\Roaming\Microsoft\Windows\Recent --csv output_dir
LNK files chứa: đường dẫn đầy đủ của file gốc, timestamps (created/modified/accessed), volume serial number, MAC address của máy tạo LNK.
Giá trị forensic: ngay cả khi file gốc đã bị xóa và volume đã bị format, LNK vẫn lưu đường dẫn và serial number. Điều này giúp chứng minh file từng tồn tại.
Shellbags
Shellbags lưu trữ thông tin về thư mục mà user đã mở trong Windows Explorer — bao gồm cả network shares và thiết bị ngoài.
Registry keys:
HKCU\Software\Microsoft\Windows\Shell\BagMRU
HKCU\Software\Microsoft\Windows\Shell\Bags
HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\
# Parse shellbags với ShellBagsExplorer (GUI) hoặc SBECmd
SBECmd.exe -d C:\Users\Username\NTUSER.DAT --csv output_dir
Ứng dụng: chứng minh user đã truy cập vào thư mục cụ thể (kể cả USB bị rút ra), network share bí mật, hay file server.
Timeline Analysis với MFT
Kết hợp các nguồn trên để tạo timeline hoạt động:
# Tạo super timeline với plaso (log2timeline)
log2timeline.py timeline.plaso /image.dd
# Filter và xuất
psort.py -o l2tcsv timeline.plaso "date > '2026-05-01' AND date < '2026-05-31'" > may_2026.csv
Thứ tự ưu tiên khi phân tích timeline:
- Bắt đầu từ thời điểm IOC đã biết (timestamp của file malware, log entry đầu tiên)
- Nhìn ±30 phút xung quanh — thường thấy staging, execution chain
- Mở rộng ra để tìm initial access (T-2h đến T-1d)
- Xác nhận persistence mechanism được cài sau initial compromise
Công cụ cần có
| Công cụ | Mục đích |
|---|---|
| MFTECmd | Parse $MFT và $USNJrnl |
| PECmd | Parse Prefetch files |
| LECmd | Parse LNK files |
| SBECmd | Parse Shellbags |
| KAPE | Thu thập artifact tự động |
| Arsenal Image Mounter | Mount disk image |
Tất cả công cụ Eric Zimmerman ở trên đều miễn phí và là tiêu chuẩn ngành.