Dia cung - 19 - NTFS - Siêu dữ liệu



Siêu dữ liệu (metadata)

Siêu dữ liệu là thông tin (dữ liệu) mô tả tập tin hoặc thư mục. Siêu dữ liệu được lưu trong các attribute. Tìm hiểu về siêu dữ liệu, cũng có nghĩa là tìm hiểu về các attribute của một tập tin hoặc thư mục. Ba attribute phổ biến của một tập tin là $STANDARD_INFORMATION, $FILE_NAME và $DATA. Hình sau minh họa ba attribute này.

Attribute $STANDARD_INFORMATION

Attribute $STANDARD_INFORMATION có trong tất cả các tập tin và thư mục, attribute này chứa một số thông tin quan trọng như: thời gian, ngày tháng, quyền sở hữu (ownership), phân quyền sử dụng (security), hạn ngạch đĩa (quota). Những thông tin này không cần thiết đối với việc lưu trữ tập tin, tuy nhiên Windows rất cần đến các thông tin này trong các ứng dụng của nó.
Mã loại (type ID) mặc định của attribute này là 16. Trong Windows 2000 và XP, attribute này có kích thước 72 byte, trong Windows NT là 48 byte.
Hệ thống Windows luôn sắp xếp các attribute trong một MFT entry theo thứ tự tăng dần của mã loại. Do mã loại attribute $STANDARD_INFORMATION có giá trị nhỏ nhất nên nó luôn nằm ở đầu mỗi MFT entry.
Attribute này có bốn thông tin về thời gian, gồm:
- Thời gian tạo tập tin (created).
- Thời gian thay đổi nội dung hai attribute $DATA hoặc $INDEX mới nhất (Modified Time).
- Thời gian thay đổi thông tin mô tả tập tin (metadata) mới nhất. Thời gian này không được hiển thị cho người dùng khi xem trong Windows (MFT Modified Time).
- Thời gian truy cập nội dung tập tin mới nhất (Accessed Time).
Attribute này cũng chứa “cờ báo” (flag) cho biết thông tin về kiểu của tập tin: chỉ đọc (read only), tập tin hệ thống (system), thông tin liên quan đến việc lưu dự phòng (archive).
Với các entry không phải là của tập tin hoặc thư mục, attribute $STANDARD_INFORMATION còn cung cấp thông tin về nén, tập tin “thưa” (sparse) hoặc mã hóa (encrypted). Nếu là entry của tập tin hoặc thư mục, các thông tin này sẽ được lưu trong header của entry.
Trong các hệ thống NTFS phiên bản 3.0 về sau (Windows 2000, XP…v.v), attribute này có chứa thêm bốn thông tin gồm:
- Thông tin về sở hữu (owner identity), được sử dụng trong việc tính hạn ngạch đĩa của mỗi người dùng.
- Thông tin cho biết dung lượng của tập tin được tính vào hạn ngạch đĩa của người dùng.
- Định danh bảo mật (Security ID), định danh này được sử dụng trong tập tin $Secure để xác định quyền truy cập tập tin.
- Giá trị USN (update sequence number), hỗ trợ trong việc tìm kiếm hàng loại các tập tin đã có thay đổi trong một khoảng thời gian nhất định.

Attribute $FILE_NAME

Mỗi tập tin hoặc thư mục luôn có ít nhất một attribute $FILE_NAME trong MFT entry của nó. Mỗi tập tin hoặc thư mục cũng có ít nhất một phiên bản khác của attribute $FILE_NAME trong thư mục cha (chứa nó), hai phiên bản không nhất thiết phải giống hệt nhau về nội dung.
Mã loại của attribute này là 48. Kích thước của attribute này không cố định, tùy thuộc vào chiều dài của tên tập tin. Cụ thể, kích thước của attribute là: 66 + chiều dài của tên.
Tên của tập tin là một chuỗi kí tự kiểu UTF-16 Unicode, được định dạng theo kiểu DOS 8.3, Win32 hoặc POSIX. Windows thường yêu cầu có hai định dạng tên: định dạng DOS và tên đầy đủ.
Attribute $FILE_NAME chứa địa chỉ entry (file reference) của thư mục cha trong MFT (thư mục chứa nó).
Attribute $FILE_NAME cũng chứa bốn thông tin về thời gian, tương tự như trong attribute $STANDARD_INFORMATION. Tuy nhiên, hệ thống Windows không cập nhật thông tin về thời gian thường xuyên như trong attribute $STANDARD_INFORMATION, thông thường nó chỉ được cập nhật khi tập tin được tạo ra, di chuyển hoặc khi đổi tên.
Trong attribute $FILE_NAME có trường cho biết kích thước của tập tin, tuy nhiên, giá trị trường này thường là 0.
Cuối cùng, attribute $FILE_NAME có chứa “cờ báo” cho biết entry này là: thư mục, tập tin chỉ đọc, tập tin hệ thống, nén, mã hóa…v.v.
Nói chung, attribute $FILE_NAME chứa rất nhiều các thông tin tương tự như trong attribute $STANDARD_INFORMATION. Có hai thông tin thực sự có ý nghĩa của attribute $FILE_NAME là tên của tập tin và địa chỉ của thư mục cha (giúp xác định đường dẫn).

Attribute $DATA

Attribute $DATA được sử dụng để lưu trữ tất cả các loại dữ liệu. Mã loại của attribute này là 128. Attribute $DATA không có kích thước cố định. Mỗi tập tin có thể gồm một hoặc nhiều attribute $DATA. Attribute $DATA đầu tiên không có tên, các attribute $DATA tiếp sau phải được đặt tên cụ thể.
Trong hệ thống Windows, attribute $DATA cũng được tạo thêm khi người dùng nhập thông tin vào mục “Summary” (chuột phải vào tập tin\ chọn properties\ Summary), hoặc do chương trình anti-virus, hoặc do chương trình lưu dự phòng tạo ra…v.v.
Attribute $DATA có thể được mã hóa để đảm bảo an toàn thông tin. Khi được mã hóa, “cờ báo” trong header của attribute sẽ được thiết lập, “khóa” của quá trình mã hóa được lưu trong attribute $LOGGED_UTILITY_STREAM.
Hình sau minh họa một tập tin với hai attribute $DATA đã được mã hóa.

----------------------


Tham khảo
[1] Brian Carrie, File System Forensic Analysis, Addison Wesley Professional, 2005
----------------------
Cập nhật: 2014/2/9