File Slack (không gian dư của tệp)
1. Tổng quan
A. Định nghĩa
File Slack (không gian dư của tệp) là vùng trống không được sử dụng còn lại trong không gian được cấp phát cuối cùng do tệp không lấp đầy chính xác đơn vị lưu trữ (cluster); trong pháp y số (digital forensics), đây là không gian chứng cứ nơi dữ liệu quá khứ đã bị xóa·che giấu có thể còn tồn tại, đồng thời cũng là không gian dễ bị tổn thương có thể bị lạm dụng cho chống pháp y (che giấu dữ liệu).
Ý nghĩa của file slack trong pháp y nằm ở chỗ 'dữ liệu quá khứ ẩn nguyên vẹn trong những khe hở bị bỏ quên'. Thiết bị lưu trữ không quản lý dữ liệu chặt chẽ theo từng byte, mà cấp phát không gian theo đơn vị khối kích thước cố định gọi là cluster (đơn vị cấp phát, ví dụ mặc định của NTFS là 4KB) do hệ thống tệp quy định. Việc đặt đơn vị cấp phát tối thiểu lớn là vì hiệu năng và hiệu quả quản lý, nhưng vấn đề là kích thước tệp thực tế hầu như không bao giờ là bội số nguyên của đơn vị này. Ví dụ, nếu lưu một tệp văn bản 1KB vào cluster 4KB, không gian tệp thực sự dùng chỉ là 1KB, còn 3KB còn lại trở thành không gian lãng phí mà tệp này chiếm giữ nhưng không sử dụng. Chính không gian dư này là file slack.
Điểm cốt lõi là không gian lãng phí này không được khởi tạo hoàn toàn tại thời điểm lưu tệp. Hệ điều hành thường chỉ ghi đè vùng mà dữ liệu của tệp mới chiếm, còn vùng slack phía sau thì không động đến. Kết quả là các mảnh dữ liệu của tệp khác từng tồn tại trong cluster đó, hoặc trong quá khứ là nội dung còn sót của bộ nhớ (RAM), có thể còn nguyên. Người dùng nghĩ rằng đã xóa tệp hoặc ghi đè bằng tệp mới, nhưng trong không gian slack vẫn còn những dấu vết quá khứ chưa bị xóa. Điều tra viên pháp y phân tích chi tiết vùng này để khôi phục các mảnh tài liệu đã xóa, thông tin bị che giấu, manh mối về hoạt động trong quá khứ; ngược lại, kẻ tấn công lạm dụng 'không gian vô hình' này cho các thủ đoạn chống pháp y như giấu mã độc hoặc dữ liệu bị đánh cắp.
B. Bối cảnh ra đời và nguyên lý phát sinh
File slack không phải là một khiếm khuyết đặc biệt nào đó mà là sản phẩm phụ mang tính cấu trúc tất yếu phát sinh trong cấu trúc lưu trữ dựa trên khối. Khoảng dư được tạo ra khi chồng lên nhau sự chênh lệch kích thước giữa sector (theo truyền thống là 512 byte, đĩa mới là sector 4K = Advanced Format) — đơn vị ghi vật lý tối thiểu của thiết bị lưu trữ — và cluster (tập hợp nhiều sector) — đơn vị logic mà hệ thống tệp dùng để quản lý không gian — cùng với sự không khớp giữa kích thước cluster và kích thước tệp thực tế. Tức là không gian 'về vật lý đã được cấp cho tệp nhưng về logic tệp không sử dụng' là file slack, và vì khe hở theo định nghĩa này bảo tồn dữ liệu trước đó nên nó có giá trị làm chứng cứ.
Hiện tượng này được đặc biệt chú ý từ góc độ pháp y vì thông tin còn lại ở vùng mà người dùng và công cụ xóa thông thường không truy cập được. Dù xóa tệp trong trình quản lý tệp hay định dạng thông thường (nhanh), dữ liệu sót lại trong slack vẫn tồn tại về mặt vật lý, và nếu đọc đến mức bit thấp bằng công cụ chuyên dụng thì có thể khôi phục. Vì vậy, file slack cùng với vùng chưa cấp phát (Unallocated Space) · khôi phục tệp đã xóa được coi là 3 đối tượng phân tích cốt lõi của pháp y thiết bị lưu trữ.
2. Cấu trúc phân tầng của file slack
Để hiểu chính xác file slack, cần phân biệt slack phát sinh ở tầng nào theo phân tầng không gian lưu trữ (sector → cluster → hệ thống tệp → volume). Sơ đồ dưới đây cho thấy bên trong một cluster, dữ liệu tệp thực tế, RAM slack và drive slack được bố trí như thế nào.
flowchart LR
C["Cluster (4KB = 8 sector)"] --> D["Dữ liệu tệp thực tế<br/>(ví dụ: 1,300B)"]
C --> RS["RAM slack<br/>(cuối tệp ~ cuối sector đó)"]
C --> DS["Drive slack<br/>(sector kế tiếp ~ cuối cluster)"]
DS --> P["Dữ liệu tệp trước·đã xóa còn sót"]
style RS fill:#fef7e0,stroke:#f5a623,stroke-width:2px
style DS fill:#e8f0fe,stroke:#2f6fed,stroke-width:2px
File slack được chia nhỏ thành bốn loại chính theo vị trí phát sinh và nội dung được lấp vào. Hai loại được bàn đến nhiều nhất là RAM slack và drive slack, và theo góc nhìn mở rộng còn bao gồm file system slack và volume slack. Dưới đây trình bày từng loại xoay quanh nguyên lý phát sinh và hàm ý pháp y của chúng.
A. RAM slack (Sector Slack)
RAM slack là không gian từ điểm kết thúc dữ liệu thực tế của tệp đến cuối sector cuối cùng mà dữ liệu đó trải qua. Thiết bị lưu trữ chỉ ghi được dữ liệu theo đơn vị sector (512 byte), nên ví dụ nếu mảnh cuối của tệp là 200 byte thì 312 byte còn lại phải được lấp bằng thứ gì đó để hoàn thành một sector. Thời MS-DOS·Windows đời đầu, vị trí này được ghi nguyên nội dung của bộ đệm bộ nhớ (RAM) ngay trước khi ghi đĩa nên mới có tên 'RAM slack', và đã thực sự có trường hợp thông tin nhạy cảm như mật khẩu hay nội dung vừa chỉnh sửa bị lộ ngẫu nhiên tại đây.
Tuy nhiên, các hệ điều hành hiện đại đã nhận thức được rủi ro này, và thông thường xử lý bằng cách đệm 0x00 (zero-fill) vùng RAM slack để nội dung bộ nhớ còn sót không bị rò rỉ. Do đó, hiểu chính xác là ngày nay khả năng khôi phục dữ liệu bộ nhớ quá khứ từ RAM slack đã thấp hơn so với các hệ thống cũ. Dù vậy, RAM slack vẫn có giá trị phân tích như điểm chuẩn để xác định vị trí kết thúc chính xác của tệp (EOF) và phân biệt ranh giới giữa drive slack phía sau với dữ liệu thực tế.
RAM slack còn được gọi là 'sector slack'. Quy mô của nó bằng kích thước sector trừ đi lượng sử dụng ở sector cuối của tệp, phát sinh tối đa 511 byte (với sector 512B). Kích thước từng cái nhỏ, nhưng xét trên toàn bộ hệ thống thực tế có hàng trăm nghìn tệp thì trở thành đối tượng phân tích không thể bỏ qua.
B. Drive slack (Drive Slack)
Drive slack là không gian còn lại từ sector kế tiếp sau sector cuối cùng của tệp (tức điểm RAM slack kết thúc) đến cuối cluster. Slack quan trọng nhất trong pháp y chính là vùng này, vì ở đây dữ liệu của tệp đã xóa từng sử dụng cluster đó trước đây còn lại gần như nguyên vẹn. Khi đặt tệp mới vào cluster, hệ điều hành không cố xóa các sector phía sau mà dữ liệu tệp không chạm tới, nên nội dung tệp cũ được bảo tồn như 'bóng ma'.
Ví dụ, giả sử một tệp 1,300 byte được lưu vào cluster 4KB (8 sector). Tệp trải qua 3 sector đầu (1,536 byte), và 236 byte phía sau của sector thứ ba trở thành RAM slack (được đệm 0). Và từ sector thứ tư đến sector thứ tám (2,560 byte) đều là drive slack, nơi có thể còn sót các mảnh văn bản·hình ảnh của tệp khác từng ở đó. Điều tra viên khôi phục từ 2,560 byte này các câu chữ trong email đã xóa, một phần tài liệu, mảnh log… để có được manh mối quyết định cho vụ việc.
Drive slack cũng là mục tiêu của chống pháp y. Kẻ tấn công có thể cố ý ghi dữ liệu vào không gian phía sau tệp bình thường này để tạo kênh ẩn không hiện ra trong danh sách tệp thông thường. Vì vậy, che giấu trong slack được xếp cùng với steganography là các kỹ thuật che giấu dữ liệu tiêu biểu.
C. File system slack và volume slack
Slack không chỉ phát sinh bên trong cluster mà còn ở các đơn vị lớn hơn. File system slack là vùng dư ở cuối phân vùng mà hệ thống tệp không quản lý được bằng cluster, xuất hiện khi tổng kích thước phân vùng không chia hết cho kích thước cluster. Volume slack chỉ không gian còn lại ở cấp volume (đĩa) không được cấp cho các phân vùng. Cả hai vùng đều không được hệ thống tệp truy cập trong điều kiện bình thường, nên dấu vết xóa có thể được bảo tồn lâu hoặc bị lạm dụng để che giấu dữ liệu, vì vậy khi tạo ảnh (imaging) toàn bộ thiết bị lưu trữ để phân tích nhất định phải xem xét cùng.
Như vậy, slack phát sinh theo nguyên lý khác nhau ở mỗi tầng, và phân tích pháp y chỉ hoàn chỉnh khi rà soát tổng hợp các tầng slack của toàn bộ thiết bị chứ không chỉ slack của một tệp cụ thể. Bảng dưới đây so sánh bốn loại slack, nhưng không nên chỉ hiểu qua bảng mà phải đọc cùng phần giải thích văn xuôi ở trên thì mới rõ 'tại sao' mỗi vùng lại xuất hiện ở vị trí đó.
| Phân loại | Vị trí phát sinh | Nội dung được lấp vào | Góc nhìn pháp y |
|---|---|---|---|
| RAM slack | Cuối tệp ~ cuối sector đó | (Trước đây) nội dung bộ nhớ còn sót / (Hiện nay) đệm 0 | Xác định ranh giới cuối tệp, trên hệ thống cũ lộ thông tin nhạy cảm |
| Drive slack | Sector kế tiếp ~ cuối cluster | Dữ liệu tệp trước·đã xóa | Cốt lõi của khôi phục dữ liệu đã xóa, mục tiêu che giấu |
| File system slack | Phần dư ở cuối phân vùng | Dữ liệu định dạng trước·còn sót | Xem xét khi tạo ảnh toàn bộ thiết bị |
| Volume slack | Vùng volume chưa cấp phát | Dấu vết xóa phân vùng, v.v. | Đối tượng che giấu·khôi phục |
3. Quy trình phân tích pháp y và mối đe dọa chống pháp y
Phân tích file slack không được thực hiện tùy hứng mà trên nền quy trình chuẩn hóa nhằm bảo đảm hiệu lực pháp lý của chứng cứ. Sơ đồ quy trình dưới đây thể hiện luồng từ thu giữ thiết bị lưu trữ đến phân tích slack và báo cáo.
flowchart TD
A["Thu giữ thiết bị lưu trữ (niêm phong bản gốc)"] --> B["Kết nối thiết bị chống ghi (Write Blocker)"]
B --> C["Tạo ảnh theo bit (dd/E01)"]
C --> H["Tính·kiểm chứng giá trị hash (MD5/SHA-256)"]
H --> D["Trích xuất vùng slack (EnCase·FTK·Autopsy)"]
D --> E["Khôi phục dữ liệu bằng carving·tìm từ khóa"]
E --> F["Tài liệu hóa·báo cáo kết quả phân tích"]
F --> G["Duy trì chuỗi lưu giữ (Chain of Custody)"]
style D fill:#e8f0fe,stroke:#2f6fed,stroke-width:2px
style H fill:#e6f4ea,stroke:#34a853,stroke-width:2px
Điểm xuất phát của quy trình là bảo toàn tính toàn vẹn của bản gốc. Khi thu giữ thiết bị lưu trữ, lập tức gắn thiết bị chống ghi (Write Blocker) để không có bất kỳ thay đổi nào lên bản gốc, và phân tích trên ảnh sao chép theo bit (định dạng dd·E01) chứ không phải bản gốc. Ngay sau khi tạo ảnh, tính sẵn giá trị hash MD5·SHA-256, và khi kết thúc phân tích tính lại để cho thấy giá trị trùng khớp, qua đó chứng minh 'chứng cứ không bị tổn hại trong quá trình phân tích'. Nếu không có kiểm chứng toàn vẹn này thì dù khôi phục được dữ liệu mang tính quyết định đến đâu từ slack cũng khó được tòa án công nhận giá trị chứng cứ.
Sau đó, dùng các công cụ như EnCase, FTK, Autopsy (The Sleuth Kit) mã nguồn mở, Foremost để xác định và trích xuất vùng slack, kết hợp khắc tệp (File Carving) và tìm kiếm từ khóa để tái tạo các mảnh tệp đã xóa dựa trên chữ ký header/footer. Ví dụ, tìm chữ ký bắt đầu của JPEG (FF D8 FF) trong vùng slack để khôi phục một phần hình ảnh, hoặc tìm chuỗi số tài khoản·tên cụ thể trên toàn bộ slack để xác nhận dấu hiệu rò rỉ.
Ở phía đối lập là mối đe dọa chống pháp y. Kẻ tấn công giấu dữ liệu vào slack để tránh bị phát hiện, và ngược lại để cản trở điều tra, có khi dùng công cụ xóa (wiping) ghi đè cả slack để tiêu hủy chứng cứ. Do đó, pháp y và chống pháp y có quan hệ giáo và khiên xoay quanh cùng một không gian là slack, và người phụ trách bảo mật của tổ chức phải xem xét cả việc xóa triệt để thông tin nhạy cảm (wiping) lẫn kiểm tra slack.
| Góc nhìn | Nội dung |
|---|---|
| Khôi phục chứng cứ | Khôi phục mảnh tệp đã xóa·tệp trước, phát hiện dữ liệu ẩn, carving·tìm từ khóa |
| Mối đe dọa che giấu dữ liệu | Kẻ tấn công giấu thông tin trong drive slack·volume slack (chống pháp y) |
| Mối đe dọa tiêu hủy chứng cứ | Xóa dấu vết bằng wiping ghi đè cả slack |
| Công cụ phân tích | Trích xuất·phân tích slack bằng EnCase, FTK, Autopsy (TSK), Foremost, v.v. |
4. Chuyên sâu — Ảnh hưởng của thay đổi thiết bị lưu trữ·môi trường đến phân tích slack
File slack là khái niệm đã cũ, nhưng giá trị và phương pháp phân tích của nó đang thay đổi theo sự biến đổi của công nghệ lưu trữ và môi trường điện toán, nên từ góc nhìn Kỹ sư chuyên nghiệp (Professional Engineer) cần nắm được các xu hướng mới nhất.
Thứ nhất, sự phổ biến của SSD và lệnh TRIM làm lung lay tiền đề của phân tích slack. HDD giữ dữ liệu đã xóa về mặt vật lý cho đến khi bị ghi đè, nhưng SSD có xu hướng dùng lệnh TRIM để dọn trước các khối đã xóa ở chế độ nền (garbage collection) nhằm quản lý hiệu năng·tuổi thọ. Kết quả là trên SSD, dữ liệu sót lại trong slack·vùng chưa cấp phát có thể bị xóa trong thời gian ngắn sau khi xóa, khiến khả năng khôi phục thấp hơn nhiều so với HDD. Điều này không có nghĩa là 'xóa = không thể khôi phục', nhưng cho thấy phải thay đổi chiến lược phân tích tùy theo đặc tính thiết bị.
Thứ hai, thiết lập kích thước cluster quyết định tổng lượng slack. Trên hệ thống có nhiều tệp nhỏ, nếu đặt cluster lớn (ví dụ 64KB) thì mỗi tệp sinh slack lớn, hiệu quả lưu trữ giảm, nhưng về mặt pháp y thì dữ liệu còn sót nhiều hơn. Ngược lại, đặt cluster nhỏ thì giảm lãng phí slack nhưng chi phí quản lý tăng. Khi các máy chủ dung lượng lớn thực tế xử lý hàng triệu tệp nhỏ, sự đánh đổi này ảnh hưởng trực tiếp đến chi phí lưu trữ và hiệu năng.
Thứ ba là sự mở rộng của môi trường mã hóa·đám mây. Với thiết bị áp dụng mã hóa toàn đĩa (BitLocker, FileVault), dù tạo ảnh thì toàn bộ vùng kể cả slack đều là bản mã, nên không có khóa giải mã thì bản thân việc phân tích slack là vô nghĩa. Ngoài ra, khi dữ liệu được lưu phân tán trên lưu trữ đám mây, khó áp dụng nguyên vẹn khái niệm slack truyền thống theo đơn vị thiết bị vật lý, nên pháp y đang có xu hướng chuyển sang lấy log·API·snapshot làm trung tâm.
Thứ tư, như trường hợp áp dụng thực tế, phân tích slack thường đóng vai trò quyết định trong điều tra rò rỉ thông tin doanh nghiệp·người trong nội bộ. Ví dụ, khi một người nghỉ việc xóa tài liệu bí mật kinh doanh và ghi đè bằng tệp vô hại để che giấu, các mảnh văn bản của tài liệu gốc được khôi phục từ drive slack của tệp mới, chứng minh dấu hiệu rò rỉ. Đây là điểm cho thấy rõ khoảng cách nhận thức giữa 'người tin rằng đã xóa' và 'điều tra viên tìm dấu vết' mà slack tạo ra, và giải thích tại sao tổ chức phải trang bị đồng thời chính sách xóa triệt để và kiểm soát mang thiết bị ra ngoài.
5. Lưu ý và hàm ý
File slack không chỉ là 'không gian dư' đơn thuần mà là chủ đề gắn với toàn bộ việc quản lý vòng đời tạo lập·xóa·tồn dư thông tin. Từ góc nhìn Kỹ sư chuyên nghiệp, cần xem xét tổng hợp các điểm sau.
'Xóa' và 'khử dữ liệu (sanitization)' là khác nhau. Xóa tệp hay định dạng thông thường chỉ dọn siêu dữ liệu của hệ thống tệp, còn dữ liệu thực tế ở slack·vùng chưa cấp phát vẫn còn. Để loại bỏ chắc chắn thông tin nhạy cảm, phải chọn phương pháp phù hợp với mức nhạy cảm của dữ liệu trong số wiping theo kiểu ghi đè (ví dụ ghi đè nhiều lần DoD 5220.22-M, NIST SP 800-88 Purge), mã hóa rồi hủy khóa (Crypto Erase), hủy vật lý. [[anti-forensic]]
Vì slack có thể trở thành kênh ẩn nên phải đưa vào đối tượng kiểm soát bảo mật. Để DLP (ngăn rò rỉ dữ liệu)·EDR không chỉ giám sát theo đơn vị tệp mà bỏ sót che giấu trong slack, nên kết hợp kiểm tra toàn bộ thiết bị và phát hiện các mẫu lưu trữ bất thường. Đặc biệt trong ứng phó rò rỉ từ người trong nội bộ, cần hệ thống kiểm tra có tính đến khả năng che giấu trong slack.
Tính chính đáng về thủ tục để bảo đảm giá trị chứng cứ quan trọng ngang với việc khôi phục kỹ thuật. Dù khôi phục được dữ liệu quyết định đến đâu từ slack, nếu các thủ tục chống ghi, tạo ảnh, kiểm chứng hash, chuỗi lưu giữ (Chain of Custody) không được tuân thủ thì sẽ mất hiệu lực pháp lý. Độ tin cậy của công cụ (thương mại/mã nguồn mở đã được kiểm chứng) và tư cách của người phân tích cũng phải được bảo đảm. [[digital-forensics]]
Cần chiến lược phân tích phù hợp với đặc tính thiết bị·môi trường. Vì TRIM của SSD, mã hóa toàn đĩa, lưu trữ phân tán trên đám mây làm thay đổi hiệu lực của phân tích slack truyền thống, nên ngay khi thu giữ thiết bị cần đánh giá trạng thái nguồn điện, việc có mã hóa hay không, loại thiết bị, và điều chỉnh thứ tự ưu tiên như thu thập chứng cứ khả biến (bộ nhớ) trước.
Cần nhận thức sự đánh đổi giữa hiệu quả lưu trữ và giá trị pháp y ngay từ giai đoạn thiết kế. Thiết lập kích thước cluster ảnh hưởng đồng thời đến lãng phí lưu trữ (tổng lượng slack) và hiệu năng·khả năng khôi phục, nên nên quyết định có xem xét cùng đặc tính tệp của hệ thống (có nhiều tệp nhỏ hay không) và chính sách lưu giữ/hủy dữ liệu.
Tài liệu tham khảo
- Trung tâm Nghiên cứu Pháp y số, Đại học Korea, Digital Forensic WIKI — Slack: http://forensic.korea.ac.kr/DFWIKI/index.php/Slack
- NIST SP 800-88 Rev.1, Guidelines for Media Sanitization: https://csrc.nist.gov/publications/detail/sp/800-88/rev-1/final
Tóm tắt một câu: File slack là không gian còn lại do tệp không lấp đầy cluster, chia thành RAM slack·drive slack·file system slack·volume slack; dữ liệu đã xóa·trước đó còn sót lại khiến nó vừa là chứng cứ pháp y cốt lõi cho khôi phục tệp đã xóa, vừa có thể bị lạm dụng để che giấu trong chống pháp y, nên đòi hỏi đồng thời xóa triệt để (wiping) và phân tích slack dựa trên thủ tục bảo đảm toàn vẹn.