Tôi mới chơi CTF và bạn cũng thế: Steganography

tathoa0607

Moderator
Thành viên BQT
14/01/2021
19
81 bài viết
Tôi mới chơi CTF và bạn cũng thế: Steganography
Mới vọc vạch chơi CTF các bạn nhận được một chiếc ảnh và không biết phải làm gì với nó, điên đầu trong những câu hỏi Flag ở đâu, nó giấu Flag kiểu gì và liệu có cái tool nào hỗ trợ hay không thì sau đây sẽ là một vài gợi ý của mình muốn gửi đến cho các bạn.

Những Flag được ẩn giấu trong các bức ảnh, văn bản, video…. được gọi là những dạng bài Steganography.

1702541850847.png

Vậy Steganography là gì?​

Steganography là một phương pháp ẩn thông tin trong các loại phương tiện truyền thông, như hình ảnh, âm thanh, văn bản, hoặc video mà không gây sự nghi ngờ của người đọc hoặc người xem thông tin. Phương pháp này không như mã hóa thông thường, nó không chỉ che giấu thông tin mà còn che giấu sự tồn tại của thông tin đó. Điều này thường được thực hiện bằng cách nhúng dữ liệu bí mật vào trong dữ liệu tồn tại một cách rất khó để phát hiện.

Ví dụ, trong steganography ảnh, các bit của thông tin bí mật có thể được lưu giữ trong các bit ít quan trọng của pixel trong hình ảnh, không làm thay đổi quan sát của con người đối với hình ảnh nhưng vẫn giữ được thông tin bí mật.

Các chủ đề thường hay gặp​

  • Văn bản Steganography: Trong văn bản, việc ẩn thông điệp có thể được thực hiện bằng cách sử dụng các kỹ thuật như việc thay đổi kích thước các khoảng trắng, hoặc việc ẩn thông điệp trong văn bản không dấu.
  • Âm thanh Steganography: Trong tệp âm thanh, thông tin có thể được ẩn bằng cách sửa đổi các dải tần số không nghe được hoặc thêm dữ liệu vào các khu vực không ảnh hưởng đến chất lượng nghe được của âm thanh.
  • Video Steganography: Trong video, thông tin ẩn có thể được lưu trữ trong các khung hình không quan trọng hoặc được thêm vào các phần không gây ảnh hưởng đến chất lượng video chính.
  • Ảnh Steganography: Trong một bức hình ảnh, các bit của thông tin bí mật được lưu trữ trong các bit ít quan trọng của pixel. Ví dụ, việc thay đổi giá trị RGB nhỏ nhất của mỗi pixel có thể tạo ra một ảnh không thay đổi đáng kể về hình ảnh nhưng vẫn chứa thông tin ẩn.
Trong bài viết này mình sẽ nó về chủ đề Ảnh Steganography, vì dạo gần đây mấy giải CTF có nhiều quá, mà mình cũng đã mất nhiều thời gian loay hoay đi tìm Flag đã bị “giấu” có một điều hiển nhiên rằng các pro player có thể làm rất nhanh vì họ đã quen với các định dạng ảnh, các tool và tất nhiên là đọc cái mô tả cũng biết nên dùng kỹ thuật nào hay khó hơn trong việc giả mã RGB, LSB, overlay, code tool giải mã,..…. thế còn những newbie như chúng ta thì mò mẫm từ nhiều nguồn khác nhau cho nên nếu mà có cái checklist có phải hay không nhỉ :))) Cho nên mình sẽ tổng hợp 1 vài tools và theo trình tự mình hay sử dụng để các bạn cùng tham khảo.

1. Các commands cơ bản​

Thường khi nhận một cái ảnh chúng ta chưa biết dùng cái gì thì mình cứ chạy thử trước 3 commands sau để tìm kiếm thông tin có giá trị

1.1. Strings **** | grep ***​

Có thể nói đây là câu lệnh kinh điển nhất mà một CTFer nào cũng phải biết, không chỉ đọc các thông tin từ ảnh mà còn dùng được cả ở trong mấy bài dễ ở các chủ đề khác nữa RE là 1 ví dụ. Cũng đơn giản thôi tùy từng chủ đề mà các bạn có thể chọn các regex khác nhau: base64, base32,... hay đơn giản là flag hoặc tên viết tắt của Event, như ví dụ dưới đây mình grep flag

Screenshot 2023-12-13 104352.png

1.2. Exiftool​

ExifTool là một công cụ mạnh mẽ được sử dụng để đọc, viết và chỉnh sửa thông tin metadata của các tập tin đa phương tiện như hình ảnh, video và các tập tin âm thanh. Metadata là các dữ liệu mô tả về thông tin của tập tin, bao gồm thông tin về camera sử dụng để chụp ảnh, thời gian chụp, địa điểm, thông tin về tác giả, và nhiều thông tin khác. Nếu bạn muốn tạo 1 thử thách cho bạn bè có thể tìm hiểu thêm về exiftool và chỉnh sửa một số trường thông tin trên ảnh hay 1 file nào đó. Tất nhiên không chỉ ẩn flag mà các tác giả có thể để lại tên author hay vị trí chụp ảnh (GPS) hoặc bất kỳ điều gì đó chúng ta cần lưu ý để tìm kiếm thêm các thông tin liên quan (Metadata).

Screenshot 2023-12-13 104847.png

1.3. Binwalk​

Binwalk là một công cụ mạnh mẽ được sử dụng trong lĩnh vực phân tích tập tin nhị phân. Nó được thiết kế để phân tích và trích xuất thông tin từ các tập tin nhị phân, đặc biệt là các tệp firmware, hình ảnh, tập tin nén và các loại tệp tin khác. Thường mình dùng Binwalk -e trích xuất thông tin như 1 bức ảnh khác, file txt hay file zip (nếu có)

2586943-20220205143517737-53081564.png

2. Một số kỹ thuật thay đổi cấu trúc ảnh​

Mình cũng không rõ kỹ thuật này có tên gọi như thế nào nhưng nhìn chung đây là một dạng bài chúng ta cũng rất hay gặp và nó đánh lừa thị giác của người chơi khi mới bắt đầu.

2.1. Thay đổi tên File​

Như tên của tiêu đề, các dạng bài này chủ yếu dựa vào việc thay đổi tên file, chỉ đơn giản 1 file có định dạng png, jpg, jpeg thành 1 file có tên zip, txt,... hoặc ngược lại, dấu hiệu nhận biết dựa vào việc các file này mở ra thường lỗi không ghi nhận định dạng ảnh.

Screenshot 2023-12-14 140440.png

Ví dụ như bức ảnh phía trên khi mở ra bị lỗi nhưng nếu thử strings thì xuất hiện một vài dòng có dạng word/document.xml, chúng ta hãy thử đặt câu hỏi tại sao 1 tấm ảnh lại có cấu trúc của file word? Chỉ cần 1 vài thay đổi nhỏ chúng ta đã có thể lụm flag rồi, có 1 mẹo ở dạng bài này là White space hay White text là 1 trong những cách mà các tác giả hay đánh lừa chúng ta hãy ctrl+A bôi đen sau đó tìm flag nhé

Screenshot 2023-12-14 140618.png

2.2. Thay đổi hex header​

Cũng như trường hợp đã đề cập đến ở trên, nhưng không phải file cứ lỗi là chúng ta đổi đủ kiểu tên file như thế, và mình cũng đã có quãng thời gian mất hàng giờ liền chỉ đi tìm cái tên đúng cho nó, và mình đã phát hiện ra kỹ thuật tiếp theo là chỉnh sửa hex header ví dụ hex header của png là 89 50 4E 47 0D 0A,..... và chúng ta cần phải chỉnh sửa hex dựa theo gợi ý của tác giả để khôi phục về hình ảnh ban đầu

Screenshot 2023-12-14 141946.png

Thông thường với dạng này khi nhận được tấm ảnh mà nghi ngờ thay đã bị thay đổi hex chúng ta sử dụng command xxd để kiểm tra nếu có thay đổi thì phán đoán định dạng file và đưa lại về loại file ảnh ban đầu, mình thường dùng cyberchef để làm điều này, hình ảnh dưới đây sẽ mô tả việc thay đổi hex header từ file ban đầu, output là hình ảnh sau khi đã chỉnh sửa

2.3. Thay đổi hex nhưng là kích thước ảnh​

Không chỉ dừng lại ở việc thay đổi header mà chúng ta còn có thể can thiệp trực tiếp cả kích thước ảnh, ngoài việc giấu tin và các bit thấp để không làm ảnh hưởng tới bức ảnh thì các tác giả biến hóa bằng việc cắt chiều dài hoặc chiều rộng của bức ảnh, và với vai trò là người giải mã chúng ta cần phải xác định rõ vị trí các hex đại diện cho height width để tìm flag. Cái này tùy các bạn có thể sử dụng các tool như hexneo hay chỉnh sửa online trên trang web cyberchef…. Về cách làm dựa trên cấu trúc như ví dụ sau về file ảnh định dạng png

a.png

Trên đây mình đã trình bày một số dạng giấu tin trong ảnh ở mức độ dễ và trong các số tiếp tới mình sẽ cung cấp thêm một số tool khác phục vụ cho các dạng bài này. Nếu bạn có công cụ gì hay ho thì comment phía dưới để mình cùng tìm hiểu và viết bài về nó nhé!!!

- HẾT PHẦN 1-
 
Chỉnh sửa lần cuối:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
ctf cyberchef exiftool flag forensic hexheader stegano strings
Bên trên