May con ga biet gi?

Chigger's Blogs

// A personal blog notes on Cybersecurity, and technology, documenting discoveries, research, and lessons learned along the way.

$I30: Dấu Vết Còn Sót Lại Của Những File Đã Bị Xóa Trên Windows

§ PART 2 OF 5 Digital Forensics

Trong Digital Forensics, việc chứng minh một file từng tồn tại trên hệ thống thường quan trọng không kém việc khôi phục chính file đó. Trên thực tế, nhiều đối tượng sau khi thực hiện hành vi trái phép sẽ cố gắng xóa file, xóa thư mục hoặc ghi đè dữ liệu nhằm che giấu dấu vết và gây khó khăn trong quá trình điều tra. Tuy nhiên, hệ thống tập tin NTFS của Windows được thiết kế để tối ưu hiệu năng và khả năng quản lý dữ liệu. Chính cơ chế này đã vô tình để lại nhiều artifact có giá trị điều tra rất cao. Một trong số đó là $I30, nguồn dữ liệu có khả năng tiết lộ thông tin về các file và thư mục từng tồn tại, kể cả khi chúng đã bị xóa khỏi hệ thống từ lâu. Việc phân tích $I30 thường mang lại những bằng chứng quan trọng giúp tái dựng hoạt động của người dùng, xác định các file đã bị xóa và phát hiện những nỗ lực che giấu dấu vết trên hệ thống Windows.


Tổng Quan

Để hiểu giá trị của $I30, trước tiên cần hiểu cách NTFS quản lý thư mục. Không giống như cách nhìn thông thường rằng thư mục chỉ là nơi chứa file, trong NTFS mỗi thư mục thực chất là một file đặc biệt được sử dụng để quản lý và lập chỉ mục các file nằm bên trong nó. Để tăng tốc độ tìm kiếm và truy xuất dữ liệu, NTFS sử dụng cấu trúc cây B-Tree nhằm lưu trữ thông tin về các file và thư mục con. Dữ liệu chỉ mục này được lưu trong các thuộc tính như $INDEX_ROOT$INDEX_ALLOCATION. Trong đó, $I30 là tên của chỉ mục thư mục được sử dụng để quản lý danh sách các đối tượng bên trong thư mục.

Có thể hiểu đơn giản rằng:

Mỗi thư mục trên NTFS đều sử dụng chỉ mục $I30 để theo dõi các file và thư mục con mà nó quản lý.

Nhờ cơ chế này, Windows có thể nhanh chóng tìm kiếm, sắp xếp và truy xuất dữ liệu ngay cả khi thư mục chứa số lượng lớn file.


Cấu Trúc $I30

Mỗi khi một file hoặc thư mục mới được tạo ra, NTFS sẽ bổ sung một bản ghi chỉ mục (Index Entry) vào $I30 của thư mục cha. Các bản ghi này đóng vai trò như một danh mục nội dung của thư mục và giúp hệ điều hành biết được những đối tượng nào đang tồn tại bên trong. Thông thường, một Index Entry trong $I30 có thể chứa:

  • Tên file hoặc thư mục
  • Kích thước file
  • File Reference Number (FRN)
  • Parent FRN
  • Các mốc thời gian MACB
    • Created Time
    • Modified Time
    • Accessed Time
    • MFT Modified Time

Những thông tin này không chỉ phục vụ hoạt động của hệ điều hành mà còn mang lại giá trị rất lớn trong quá trình điều tra số.

Đối với các nhà điều tra, dữ liệu trong $I30 có thể được sử dụng để xác định mối quan hệ giữa các file, xác định vị trí của file trong cấu trúc thư mục và tái dựng lịch sử hoạt động của hệ thống.


Dấu Vết File Đã Xóa

Giá trị lớn nhất của $I30 nằm ở cách NTFS xử lý dữ liệu khi file bị xóa. Khi người dùng xóa một file khỏi thư mục, NTFS sẽ loại bỏ bản ghi tương ứng khỏi cấu trúc chỉ mục đang hoạt động. Tuy nhiên, hệ điều hành thường không xóa sạch dữ liệu của bản ghi đó ngay lập tức. Thay vào đó, vùng dữ liệu chứa bản ghi cũ sẽ được đánh dấu là có thể tái sử dụng trong tương lai. Phần không gian này được gọi là Slack Space.

[ẢNH 3: Cơ chế Slack Space trong $I30 sau khi một file bị xóa]

Trong nhiều trường hợp, các bản ghi đã bị xóa vẫn tồn tại nguyên vẹn trong Slack Space cho đến khi bị dữ liệu mới ghi đè lên. Điều này tạo ra một cơ hội rất lớn cho điều tra viên. Ngay cả khi file đã bị xóa hoàn toàn khỏi hệ thống hoặc bản ghi MFT của file đã bị ghi đè, các thông tin như tên file, kích thước file và timestamp vẫn có thể được tìm thấy bên trong Slack Space của $I30. Đây chính là lý do khiến $I30 được xem là một trong những artifact giá trị nhất trong điều tra số trên nền tảng Windows.


Giá Trị Điều Tra

Chứng Minh File Đã Tồn Tại

Một trong những ứng dụng phổ biến nhất của $I30 là chứng minh sự tồn tại của các file không còn xuất hiện trên hệ thống. Kẻ tấn công có thể xóa mã độc, công cụ khai thác lỗ hổng, tài liệu nội bộ hoặc dữ liệu nhạy cảm nhằm phi tang chứng cứ. Tuy nhiên, dấu vết về các file này vẫn có thể còn tồn tại trong vùng chỉ mục của thư mục cha.

Trong nhiều cuộc điều tra, chỉ riêng việc tìm thấy tên file và timestamp trong $I30 cũng đủ để chứng minh rằng file đó từng xuất hiện trên hệ thống.

Khôi Phục Cấu Trúc Thư Mục

Ngay cả khi toàn bộ thư mục đã bị xóa, các bản ghi trong $I30 vẫn có thể giúp điều tra viên tái dựng lại danh sách file từng tồn tại bên trong thư mục đó. Điều này đặc biệt hữu ích trong các vụ việc liên quan đến đánh cắp dữ liệu, phát tán mã độc hoặc xóa dữ liệu có chủ đích. Thông qua việc phân tích các bản ghi còn sót lại, điều tra viên có thể xác định cấu trúc thư mục, mối quan hệ giữa các file và trình tự hoạt động của đối tượng.

Phát Hiện Timestomping

Timestomping là kỹ thuật thường được sử dụng để thay đổi các mốc thời gian của file nhằm gây nhiễu quá trình điều tra. Thông thường, kẻ tấn công sẽ chỉnh sửa timestamp trong thuộc tính $STANDARD_INFORMATION. Tuy nhiên, nhiều trường hợp lại bỏ sót các timestamp được lưu ở những vị trí khác của NTFS. Dữ liệu timestamp trong $FILE_NAME hoặc các bản ghi chỉ mục của $I30 thường trở thành nguồn đối chiếu quan trọng giúp điều tra viên phát hiện các dấu hiệu bất thường. Sự khác biệt giữa các nguồn timestamp này có thể là bằng chứng cho thấy file đã bị chỉnh sửa thời gian một cách có chủ đích.


Công Cụ Phân Tích

MFTECmd

https://github.com/EricZimmerman/MFTECmd

INDXRipper

https://github.com/harelsegev/INDXRipper

INDXParse

https://github.com/williballenthin/INDXParse

[ẢNH 4: Kết quả phân tích $I30 bằng MFTECmd hoặc INDXRipper]

Sau khi dữ liệu được trích xuất, điều tra viên có thể sử dụng Timeline Explorer hoặc các nền tảng phân tích khác để xây dựng dòng thời gian sự kiện và tái dựng lại hoạt động đã diễn ra trên hệ thống.


Kết Luận

Trong Digital Forensics, việc tìm kiếm bằng chứng không chỉ dừng lại ở các file còn tồn tại trên ổ đĩa. Những artifact ẩn sâu bên trong NTFS thường mang lại giá trị điều tra lớn hơn rất nhiều so với dữ liệu nhìn thấy bằng các công cụ thông thường. $I30 là một ví dụ điển hình cho điều đó. Nhờ cơ chế quản lý chỉ mục của NTFS, các bản ghi liên quan đến file đã bị xóa có thể vẫn tồn tại trong thời gian dài và cung cấp cho điều tra viên những thông tin quan trọng về hoạt động trước đó của hệ thống.

Khả năng chứng minh sự tồn tại của file, tái dựng cấu trúc thư mục và phát hiện các hành vi che giấu dấu vết khiến $I30 trở thành một artifact không thể bỏ qua trong các cuộc điều tra sự cố an ninh mạng, phân tích mã độc và điều tra số trên nền tảng Windows. Bởi trong điều tra số, một nguyên tắc là:

"Mọi hành động đều để lại dấu vết – vấn đề chỉ là bạn biết tìm chúng ở đâu."