← All posts

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.exesvchost.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:

  1. Execution timeline — biết chính xác thời điểm tool được chạy lần đầu/cuối
  2. File dependencies — xem malware load DLL nào, đọc file nào
  3. 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:

  1. Bắt đầu từ thời điểm IOC đã biết (timestamp của file malware, log entry đầu tiên)
  2. Nhìn ±30 phút xung quanh — thường thấy staging, execution chain
  3. Mở rộng ra để tìm initial access (T-2h đến T-1d)
  4. Xác nhận persistence mechanism được cài sau initial compromise

Công cụ cần có

Công cụMục đích
MFTECmdParse $MFT và $USNJrnl
PECmdParse Prefetch files
LECmdParse LNK files
SBECmdParse Shellbags
KAPEThu thập artifact tự động
Arsenal Image MounterMount disk image

Tất cả công cụ Eric Zimmerman ở trên đều miễn phí và là tiêu chuẩn ngành.

↗ Mở SoundCloud chọn nhạc