0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Khôi phục File Bị Xóa: Thử Thách Forensics CTF

Đăng vào 7 tháng trước

• 5 phút đọc

Khôi phục File Bị Xóa: Thử Thách Forensics CTF

Giới thiệu

Trong thử thách CTF (Capture The Flag) lần này, chúng ta sẽ khám phá một tình huống thú vị liên quan đến khôi phục dữ liệu từ một USB drive, nơi mà một file đã bị xóa. Mục tiêu cuối cùng là xác định danh tính chủ sở hữu file đó thông qua metadata của nó. Thử thách này không chỉ giúp bạn hiểu sâu hơn về các kỹ thuật forensics mà còn rèn luyện kỹ năng phân tích dữ liệu. Hãy cùng nhau tìm hiểu và thực hiện từng bước để giải quyết thử thách này!

Mục tiêu của thử thách

  • Tên thử thách: File đã bị xóa
  • Điểm số: 5
  • Độ khó: Validasi 11471, tỷ lệ thành công 4%
  • Mô tả: Bạn sẽ giúp người em họ của mình tìm ra chủ sở hữu của USB drive mà họ đã tìm thấy tại thư viện.
  • Checksum SHA256: cd9f4ada5e2a97ec6def6555476524712760e3d8ee99c26ec2f11682a1194778
  • File được cung cấp: ch39.gz

Nội dung giải pháp

Bước 1: Hiểu thử thách

Đây là một thử thách forensics liên quan đến việc phân tích một image của USB drive mà file đã bị xóa. Mục tiêu là khôi phục file đã xóa và xác định chủ sở hữu từ metadata. Định dạng của flag sẽ là firstname_lastname.

Bước 2: Giải nén file

File được cung cấp là ch39.gz, một file nén sử dụng gzip. Chúng ta sẽ giải nén nó để lấy ch39, một archive tar POSIX.

bash Copy
gunzip ch39.gz
tar -xvf ch39

Sau khi thực hiện lệnh trên, chúng ta sẽ có được file usb.image, một image filesystem FAT16 với nhãn DOS/MBR có dung lượng 32 MB.

Bước 3: Phân tích image filesystem

Image này là một filesystem FAT16. Chúng ta cần mount nó để kiểm tra nội dung bên trong.

bash Copy
mkdir -p /tmp/usb_mount
sudo mount -t vfat -o loop usb.image /tmp/usb_mount
ls -la /tmp/usb_mount

Khi thực hiện lệnh này, chúng ta thấy thư mục được mount là trống rỗng, điều này cho thấy rằng file đã bị xóa và không còn hiển thị trên filesystem.

Bước 4: Khôi phục file đã xóa

Để khôi phục file đã xóa, chúng ta cần kiểm tra các mục trong thư mục gốc (root) của image FAT16. Thư mục gốc bắt đầu từ sector 132 (sau 4 sector dự phòng và 128 sector FAT).

Chúng ta sẽ trích xuất thư mục gốc (32 sector, 16384 byte):

bash Copy
dd if=usb.image bs=512 skip=132 count=32 | hexdump -C

Phân tích hexdump cho thấy:

  • Nhãn volume là "USB".
  • Mục file đã xóa (byte đầu tiên là 0xE5) với tên ngắn là "NONUME.PNG" và tên dài là "anonymous.png".
  • Kích thước file: 246.320 byte.
  • Cluster đầu tiên: 3 (số thứ tự cluster FAT16).

Bước 5: Trích xuất file đã xóa

Khu vực dữ liệu bắt đầu từ sector 164. Cluster 3 bắt đầu từ sector 168 (164 + (3-2)*4).

Chúng ta sẽ trích xuất dữ liệu file (482 sector để bao gồm 246.320 byte):

bash Copy
dd if=usb.image bs=512 skip=168 count=482 of=anonymous.png

Kiểm tra file đã khôi phục:

bash Copy
file anonymous.png
# Kết quả: PNG image data, 400 x 300, 8-bit/color RGB, non-interlaced

Bước 6: Phân tích file đã khôi phục

File này là một hình ảnh PNG. Chúng ta sẽ trích xuất chuỗi để tìm metadata:

bash Copy
strings anonymous.png | sed -n '/xpacket begin/,/xpacket end/p'

Metadata XMP cho thấy người tạo:

xml Copy
<?xpacket begin='
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 11.88'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
  <dc:creator>
   <rdf:Seq>
    <rdf:li>Javier Turcot</rdf:li>
   </rdf:Seq>
  </dc:creator>
 </rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='r'?>

Người tạo là Javier Turcot, được xác định là chủ sở hữu.

Bước 7: Xác định flag

Danh tính của chủ sở hữu là Javier Turcot. Flag sẽ là javier_turcot (chữ thường với dấu gạch dưới như đã quy định).

Những bài học chính

  • Cấu trúc filesystem FAT16: sector boot, bảng FAT, thư mục gốc, khu vực dữ liệu.
  • File đã xóa trong FAT: được đánh dấu bằng 0xE5 trong mục thư mục, dữ liệu vẫn còn cho đến khi bị ghi đè.
  • Khôi phục dữ liệu forensics: Sử dụng dd để trích xuất dữ liệu thô, phân tích các mục thư mục một cách thủ công.
  • Trích xuất metadata: File PNG có thể chứa metadata XMP với thông tin của người tạo.
  • Công cụ sử dụng: gunzip, tar, mount, dd, hexdump, file, strings.

Kiểm tra

  • Tính toàn vẹn của file: Hình ảnh và PNG đã được trích xuất phù hợp với định dạng mong đợi.
  • Định dạng flag: Phù hợp với yêu cầu firstname_lastname.

Flag: javier_turcot

Thực hành tốt nhất

  • Luôn kiểm tra tính toàn vẹn của file sau khi khôi phục.
  • Sử dụng các công cụ forensics chuyên dụng để phân tích sâu hơn nếu cần.

Những cạm bẫy thường gặp

  • Nhầm lẫn giữa các định dạng file có thể dẫn đến việc không tìm ra metadata.
  • Không kiểm tra các sector khác có thể dẫn đến mất dữ liệu quan trọng.

Mẹo hiệu suất

  • Sử dụng lệnh dd với các tùy chọn hợp lý để tối ưu hóa tốc độ trích xuất dữ liệu.

Giải quyết sự cố

  • Nếu không thể mount image, hãy kiểm tra định dạng và tính toàn vẹn của file trước.

Câu hỏi thường gặp (FAQ)

  1. Tôi có thể khôi phục file bị xóa từ các định dạng filesystem khác không?
    Có, nhưng quy trình sẽ khác nhau tùy thuộc vào loại filesystem.
  2. Công cụ nào tốt nhất để phân tích file PNG?
    ExifTool là một trong những công cụ tốt nhất cho việc này.

Kết luận

Khôi phục file đã xóa là một kỹ năng quan trọng trong lĩnh vực an ninh mạng và forensics. Thông qua thử thách này, bạn đã học được cách sử dụng các công cụ và kỹ thuật để phân tích và khôi phục dữ liệu. Hãy tiếp tục rèn luyện kỹ năng của mình và tham gia vào các thử thách khác để nâng cao hiểu biết của bạn trong lĩnh vực này. Đừng quên chia sẻ bài viết này với những người bạn cùng đam mê công nghệ!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào