(1/1) Kỹ thuật giấu tin trong ảnh

09:08 | 29/11/2023
ThS. Vũ Ngọc Cương , ThS. Nguyễn Hữu Trung , Đặng Thị Hải Yến (Phòng Thí nghiệm trọng điểm An toàn thông tin) , Bộ Tư lệnh 86)

Giấu tin (steganography) là một kỹ thuật nhúng thông tin vào một nguồn đa phương tiện nào đó, ví dụ như tệp âm thanh, tệp hình ảnh,... Việc này giúp thông tin được giấu trở nên khó phát hiện và gây ra nhiều thách thức trong lĩnh vực bảo mật và an toàn thông tin, đặc biệt là quá trình điều tra số. Thời gian gần đây, số lượng các cuộc tấn công mạng có sử dụng kỹ thuật giấu tin đang tăng lên, tin tặc lợi dụng việc giấu các câu lệnh vào trong bức ảnh và khi xâm nhập được vào máy tính nạn nhân, các câu lệnh chứa mã độc sẽ được trích xuất từ ảnh và thực thi. Nhằm mục đích cung cấp cái nhìn tổng quan về phương thức ẩn giấu mã độc nguy hiểm, bài báo sẽ giới thiệu về kỹ thuật giấu tin trong ảnh và phân tích một cuộc tấn công cụ thể để làm rõ về kỹ thuật này.

GIỚI THIỆU CHUNG

Mục đích và ý tưởng về che giấu thông tin đã có từ hàng nghìn năm về trước, nhưng kỹ thuật này chỉ được dùng chủ yếu trong quân sự và các cơ quan tình báo. Mãi cho tới vài thập niên gần đây, che giấu thông tin mới nhận được sự quan tâm của các nhà nghiên cứu với rất nhiều công trình và kết quả đã được công bố. Cuộc cách mạng số hóa thông tin và sự phát triển nhanh chóng của mạng truyền thông là nguyên nhân chính dẫn đến sự thay đổi này. Có rất nhiều phương pháp giấu tin trên nền tảng số hóa như giấu tin trong chuỗi text, giấu tin trong tệp tin audio, tệp tin media,… song phổ biến nhất vẫn là phương pháp giấu tin trong ảnh.

Các phương pháp giấu tin luôn phải bảo đảm được yếu tố che giấu thông tin mà tác giả không muốn người khác nhận ra. Giấu tin trong ảnh cũng vậy, cho dù một người có được bức ảnh đã bị nhúng tin nhưng họ sẽ không thể nhìn ra được thông tin được ẩn giấu bên trong, đây cũng chính là mục đích mà kẻ tấn công luôn mong muốn. Trong các cuộc tấn công mạng, các câu lệnh, tập lệnh script độc hại hay các mã độc luôn là đối tượng trọng yếu mà kẻ tấn công tìm cách che giấu và lẩn tránh phát hiện bởi các công cụ, hệ thống giám sát bảo mật. Do vậy, chúng lợi dụng các kỹ thuật giấu tin trong ảnh để che giấu các câu lệnh tấn công, che giấu các mã độc hại trong các bức ảnh tưởng như vô hại.

KỸ THUẬT GIẤU TIN TRONG ẢNH

Nguyên lý chung của kỹ thuật giấu tin trong ảnh

Thuật toán giấu tin được kẻ tấn công nhúng vào một nguồn đa phương tiện bằng cách sử dụng một khóa bí mật được dùng chung bởi người gửi và người nhận. Việc giải mã thông tin chỉ có thể thực hiện được khi có khoá và sau khi giải mã, ta được thông tin mật.

Hình 1. Lược đồ thể hiện quá trình giấu tin

Hiện nay, giấu tin trong ảnh chiếm tỉ lệ lớn trong các ứng dụng giấu tin dữ liệu đa phương tiện bởi vì lượng thông tin được trao đổi bằng hình ảnh là rất lớn. Giấu tin trong ảnh có nhiều ứng dụng trong thực tế, ví dụ như trong việc xác định bản quyền sở hữu, chống xuyên tạc thông tin hay truyền dữ liệu một cách an toàn,...

Cấu trúc ảnh định dạng hỗ trợ nén dữ liệu không bị suy giảm

PNG (Portable Network Graphics) là một định dạng tập hợp các điểm ảnh (pixel) nhỏ lưu trữ thông tin về màu sắc và vị trí của từng điểm ảnh (ảnh raster). PNG là một trong những định dạng được sử dụng để giấu tin phổ biến nhất. Định dạng ảnh này được tạo ra như là một cải tiến, thay thế cho GIF và là định dạng ảnh nén không bị suy giảm chất lượng sử dụng nhiều nhất trên Internet.

Cấu trúc chung: Tập tin định dạng ảnh được bắt đầu bằng 8 byte: “89 50 4E 47 0D 0A 1A 0A”. Đây được coi là các byte dấu hiện nhận biết định dạng ảnh PNG (byte signature).

Cấu trúc chi tiết: Sau các byte dấu hiệu nhận biết là các đoạn (được gọi là “chunk”) lưu trữ từng phần dữ liệu của ảnh. Mỗi chunk có thể là quan trọng (Critical) hoặc phụ trợ (Ancillary). Chương trình có thể nhận biết để bỏ qua đoạn phụ trợ này nếu không thể đọc được. Cấu trúc của mỗi chunk gồm 4 phần: độ dài (4 bytes), loại (4 bytes), dữ liệu, CRC checksum (4 bytes).

Kỹ thuật giấu tin trên bit ít quan trọng của ảnh

Ý tưởng cơ bản của kỹ thuật này là tiến hành giấu tin vào vị trí các bit ít quan trọng (Least Signification Bit - LSB) đối với mỗi phần tử trong bảng màu. Đây là phương pháp giấu tin đơn giản nhất, thông điệp dưới dạng nhị phân sẽ được giấu (nhúng) vào các bit LSB - là bit có ảnh hưởng ít nhất tới việc quyết định màu sắc của mỗi điểm ảnh. Vì vậy, khi ta thay đổi bit ít quan trọng của một điểm ảnh thì màu sắc của mỗi điểm ảnh mới sẽ tương đối gần với điểm ảnh cũ. Ví dụ, đối với ảnh 16 bit thì 15 bit là biểu diễn 3 màu trong mô hình RGB của điểm ảnh, còn bit cuối cùng không dùng đến thì ta sẽ tách bit này ra ở mỗi điểm ảnh để giấu tin.

Hình 2. Mỗi điểm ảnh biểu diễn bởi 8 bit cuối cùng được coi là bit ít quan trọng nhất

Trong phép tách này ta coi bit cuối cùng là bit ít quan trọng nhất, thay đổi giá trị của bit này thì sẽ thay đổi giá trị của điểm ảnh lên hoặc xuống đúng một đơn vị, với sự thay đổi nhỏ đó thì cấp độ màu của điểm ảnh sẽ không bị thay đổi nhiều.

MÃ ĐỘC LỢI DỤNG KỸ THUẬT GIẤU TIN TRONG ẢNH

Qua quá trình công tác và nghiên cứu, nhóm tác giả đã thu thập được một bộ mã độc điển hình cho việc lợi dụng kỹ thuật giấu tin trong ảnh để lẩn trốn khỏi các giải pháp giám sát và cài cắm sâu trong hệ thống.

Bộ mã độc này ngụy trang dưới hình thức giả dạng một tệp tin thư viện của công cụ ảo hóa rất phổ biến là VMware tools. Bộ mã độc gồm 03 tệp tin chính là: xsec_1_5. dll (kích thước 114 KB), Uninstall.png (kích thước: 309KB) và xerces-c_3_0.dll (kích thước 1KB).

Ban đầu bộ mã độc này rất dễ đánh lừa các quản trị viên do chúng ẩn mình trong bộ VMware tools và kèm theo bức ảnh vô hại. Khi xem xét tên của mã độc trên thì nó giống với tên được đặt cho các thư viện DLL tương tự của VMware Tools. Tuy nhiên, khi so sánh kỹ hơn với các tệp khác nằm trong cùng bộ mẫu của VMware thì nhóm tác giả phát hiện một điểm khác biệt nhỏ, đó là các tệp còn lại đều được viết bằng C++, trong khi tệp tin xsec_1_5.dll lại được viết bằng C#. Với kinh nghiệm, nhóm tác giả dự đoán mã độc chính là tệp tin xsec_1_5.dll, tệp tin xerces-c_3_0.dll có thể là tệp tin cấu hình của mã độc, còn tệp tin có định dạng ảnh Uninstall.png chưa thể xác định. Xuất phát từ những phỏng đoán trên, nhóm tác giả bắt đầu phân tích làm rõ đối với tệp tin đầu tiên là xsec_1_5.dll và xem xét đến trường debugger-stamp, compiler-stamp. Đây là trường thông tin cho biết chi tiết về thời gian biên dịch liên quan đến tệp tin.

Các tệp tin thư viện khác trong thư mục VMware đều có thời gian từ năm 2011 trở lại đây, trong khi tệp tin nghi ngờ độc hại lại có thời gian khác biệt là từ năm 1969. Xét qua một số chuỗi (strings), nhận thấy một số chuỗi có liên quan đến các hàm rất đáng nghi, dự đoán mã độc có khả năng nhúng vào các tiến trình khác.

Sau khi nạp tệp tin vào trong DNSpy thì ta thấy rằng, đây là một tệp tin đã bị làm rối (obfuscate), các hàm, các biến đều là các ký tự ngẫu nhiên. Đến đây đã chứng minh khá rõ ràng nhiều khả năng tệp tin này là mã độc. Do vậy, nhóm tác giả quyết định giải mã để phân tích sâu hơn.

Sử dụng công cụ Detect It Easy cho ta thấy tệp tin được làm rối bằng .NET Reactor (4.8-4.9). Sau khi thực hiện giải mã tệp tin, tiếp tục nạp vào DNSpy ta thấy kết quả tốt hơn nhiều, các hàm đã ở dạng tường minh hơn.

Hình 3. Mã độc ban đầu bị làm rối (bên trái) và kết quả sau khi giải mã (bên phải)

Qua đánh giá đoạn code sau giải mã có thể xác định được class chính là XMLCom. Trong hàm này, ta thấy mã độc bắt đầu tìm kiếm các bức ảnh có định dạng là “.png” (Hình 4).

Hình 4. Hàm tìm kiếm tệp tin .png

Trong thư mục mẫu tìm được tệp tin “Uninstall. png”. Thoạt nhìn, tệp tin này có vẻ là bức ảnh bình thường, giống như một đám mây, với các thông số như sau:

- Kích thước: 1213 x 270 (px).

- Bit Depth: 8, Loại màu: 6 (RGB + Alpha).

Hình 5. Tệp PNG độc hại với payload C# được nhúng theo phương pháp ẩn dữ liệu

Việc giấu tin trong ảnh phổ biến nhất hiện nay chính là kỹ thuật giấu tin trên LSB. Nhìn chung, phương pháp này nhúng dữ liệu vào các bit ít quan trọng nhất của mỗi pixel. Trong trường hợp cụ thể này, một pixel mã hóa một nibble (một bit cho mỗi kênh alpha, đỏ, lục và lam), tức là hai pixel chứa một byte thông tin ẩn.

Sau đó, nội dung được nhúng theo phương pháp ghi mật mã được trích xuất theo 4 bước sau:

Bước 1: 16 byte đầu tiên (32 pixel) của tệp PNG được trích xuất và 8 byte đầu tiên phải khớp với một số magic number là “F1 6A 92 1D D8 7E 46 7C”. 8 byte sau là độ dài của payload được nhúng.

Bước 2: Dữ liệu được trích xuất sau đó là một payload được mã hóa ở định dạng GZIP.

Bước 3: Payload được trích xuất được giải mã bằng mã hóa cứng XOR nhiều byte trong PNGLoader.

Bước 4: Kết quả của XORing là dữ liệu GZIP không được giải nén.

Tiếp theo mã độc sẽ tiến hành giải mã payload (Hình 6).

Hình 6. Giải mã payload

Tác giả của phần mềm độc hại dựa vào mã hóa LSB để ẩn payload độc hại trong dữ liệu pixel PNG, cụ thể hơn là trong LSB của từng kênh màu (đỏ, lục, lam và alpha). Ở đây có 02 phương pháp để trích xuất payload: Sử dụng chức năng debug của DNSpy và sử dụng IDE chạy tệp tin trên để trích xuất payload.

Nếu PNGLoader xử lý thành công (giải nén → giải mã → giải nén) payload cuối cùng, thì payload này sẽ được thực thi ngay lập tức. Payload được thực thi với PowerShell, như được minh họa bằng đoạn mã của PNGLoader trong Hình 7.

Hình 7. Đoạn mã của PNGLoader thực thi payload PowerShell

Tiếp theo, nếu tồn tại tập tin xerces-c_3_0. dll (chứa máy chủ điều khiển C2) thì thực hiện giải mã với tham số truyền vào là tệp tin xerces-c_3_0.dll và khóa là owe01zU4 (Hình 8).

Hình 8. Khóa giải mã và tệp tin cấu hình sau giải mã chứa máy chủ điều khiển C2

Khi giải mã tệp tin trên thì thu được địa chỉ máy chủ điều khiển là 152.32.221.141, tương ứng tên miền affiliate.misecure.com. Tiếp tục tiến trình phân tích và dịch ngược làm rõ các hành vi, chức năng của mã độc, đến cuối cùng có thể nhận thấy đây là mã độc điều khiển từ xa (RAT) có các chức năng chính sau: Chức năng lấy thông tin hệ điều hành; Duyệt thư mục ổ đĩa; Xem tệp tin, đọc thông tin tệp tin, tải, upload tệp tin; Chức năng chạy tệp tin Exe, chạy câu lệnh CMD; Thiết lập proxy; Chức năng nhận và thực thi lệnh từ máy chủ điều khiển, gửi kết quả thực thi lệnh.

KẾT LUẬN

Bài báo trình bày tổng quan về việc giấu tin trong ảnh và quá trình tìm, phân tích bộ mã độc hại. Công nghệ này đã được biết đến từ lâu nhưng cách thức ứng dụng trong mỗi trường hợp lại khác nhau và khó nhận diện. Cùng với sự phát triển của khoa học công nghệ, tin tặc ngày càng tinh vi hơn. Chúng không ngừng lợi dụng nhiều kẽ hở của các hệ thống thông tin và sử dụng các kỹ năng lẩn trốn để tránh khỏi sự giám sát của nhân viên an ninh mạng. Với việc ẩn giấu thông tin trong các tệp audio, video,… phổ biến nhất là tệp ảnh, các câu lệnh chứa mã độc không thể được phát hiện bởi các phần mềm bảo mật và giám sát an toàn thông tin thông thường. Thậm chí sau khi phân tích, chúng ta cũng khó phát hiện và giải mã hết được các nội dung ẩn bên trong tệp ảnh được mã hóa. Hình thức tấn công kết hợp giấu tin trong ảnh này không phải là giải pháp kỹ thuật quá mới, song nó lại khiến cho quá trình phát hiện, phân tích và ngăn chặn các cuộc tấn công trở nên khó khăn hơn rất nhiều.

TÀI LIỆU THAM KHẢO

[1]. USC-SIPI Image Database, Signal and Image Processing Institute, University of Southern California. 

[2]. Marghny Mohamed, Fadwa Al-Afari and Mohamed Bamatraf, Data Hiding by LSB Substitution Using Genetic Optimal Key-Permutation, International Arab Journal of e-Technology, Vol. 2, No. 1, January 2011.

[3]. https://decoded.avast.io/martinchlumecky/png[1]steganography