Mã độc GhostPoster: Nguy hiểm từ PNG ẩn trên Firefox

Mã độc GhostPoster: Nguy hiểm từ PNG ẩn trên Firefox

Một chiến dịch mã độc tinh vi và chưa từng có tiền lệ, được đặt tên là mã độc GhostPoster, đã được phát hiện, khai thác một kỹ thuật steganography khéo léo để lây nhiễm khoảng 50.000 người dùng trình duyệt Firefox. Kẻ tấn công đã sử dụng các tiện ích mở rộng trình duyệt có vẻ hoàn toàn vô hại, điển hình như “Free VPN Forever”, nhằm che giấu payload độc hại ngay trong các tệp biểu tượng giao diện của chính chúng.

Điểm độc đáo của chiến dịch này nằm ở việc mã độc GhostPoster nhúng logic thực thi ban đầu trực tiếp vào các byte thô của một tệp tin hình ảnh PNG. Phương pháp này đặc biệt hiệu quả trong việc bỏ qua các máy quét bảo mật thông thường và các quy trình kiểm duyệt nghiêm ngặt trên các chợ ứng dụng, vốn thường mặc định coi các tệp hình ảnh là tài sản không độc hại, tạo ra một lỗ hổng đáng kể trong chuỗi phòng thủ.

Vectơ Tấn Công và Kỹ Thuật Steganography Độc Đáo

Vectơ chính của cuộc tấn công mạng này là các tiện ích mở rộng trình duyệt giả mạo. Các tiện ích này, sau khi được cài đặt, sẽ âm thầm thực hiện các hành vi độc hại. Quá trình lây nhiễm bắt đầu khi tiện ích mở rộng bị xâm nhập tải tệp logo.png của nó trong quá trình hoạt động bình thường của trình duyệt.

Thay vì chỉ đơn thuần hiển thị hình ảnh như một biểu tượng đồ họa, mã nguồn của tiện ích mở rộng được thiết kế để đọc và phân tích dữ liệu nhị phân của tệp PNG. Trong chuỗi byte này, nó tìm kiếm một dấu hiệu ẩn cụ thể, được xác định là chuỗi 0x3D 0x3D 0x3D (tương đương với ba ký tự “===”). Sự hiện diện của dấu hiệu này là tín hiệu để tiện ích kích hoạt cơ chế độc hại được nhúng sâu.

Cơ Chế Khai Thác Đồ Họa

Khi dấu hiệu 0x3D 0x3D 0x3D được phát hiện, tiện ích mở rộng sẽ trích xuất một đoạn mã JavaScript được che giấu kỹ lưỡng ngay bên trong tệp hình ảnh. Đoạn mã JavaScript này sau đó được thực thi, khởi động một chuỗi lây nhiễm đa giai đoạn phức tạp. Kỹ thuật steganography này là cốt lõi cho sự tinh vi của mã độc GhostPoster, cho phép nó ẩn mình một cách hiệu quả khỏi các công cụ phát hiện xâm nhập dựa trên chữ ký.

Cách tiếp cận lén lút này giúp mã độc duy trì trạng thái hoạt động trên trình duyệt của nạn nhân trong thời gian dài. Điều này trao quyền cho kẻ tấn công khả năng thực thi các lệnh từ xa, loại bỏ các tiêu đề bảo mật quan trọng và chiếm đoạt lưu lượng truy cập của người dùng để thực hiện các hành vi gian lận liên kết tinh vi mà không gây ra bất kỳ cảnh báo nào đáng kể cho người dùng cuối.

Ảnh Hưởng Nghiêm Trọng và Rủi Ro Bảo Mật Từ Mã Độc GhostPoster

Các nhà phân tích bảo mật từ Koi đã tiết lộ rằng chiến dịch GhostPoster không chỉ giới hạn ở một tiện ích mà đã lan rộng qua ít nhất 17 tiện ích mở rộng khác nhau. Tất cả các tiện ích này đều được phát hiện là giao tiếp với cùng một hạ tầng lệnh và điều khiển (C2) duy nhất, bao gồm miền liveupdt.com, cho thấy một chiến dịch có tổ chức và quy mô lớn.

Nghiên cứu của họ chỉ ra rằng mã độc GhostPoster không chỉ đơn thuần là xâm phạm quyền riêng tư của người dùng bằng cách tiêm các script theo dõi. Nó còn thực hiện một hành vi nguy hiểm hơn là vô hiệu hóa các biện pháp bảo vệ cốt lõi của trình duyệt, đặc biệt là các tiêu đề Content-Security-Policy (CSP). CSP là một cơ chế bảo mật quan trọng giúp giảm thiểu rủi ro từ các cuộc tấn công tiêm mã và XSS, bằng cách chỉ định các nguồn nội dung được phép tải và thực thi trên một trang web.

Gia Tăng Rủi Ro Tấn Công Cross-Site Scripting và Clickjacking

Bằng cách loại bỏ các biện pháp bảo vệ như CSP, kẻ tấn công đã cố tình đẩy người dùng vào tình thế dễ bị tổn thương trước các rủi ro bảo mật nghiêm trọng hơn. Điều này bao gồm các cuộc tấn công cross-site scripting (XSS), cho phép kẻ tấn công tiêm mã độc vào các trang web mà người dùng tin cậy, và các cuộc tấn công clickjacking, nơi người dùng bị lừa nhấp vào các phần tử ẩn hoặc không mong muốn trên trang.

Trong khi đó, mã độc này âm thầm tạo ra doanh thu bất hợp pháp khổng lồ thông qua việc chuyển hướng bắt buộc người dùng đến các trang thương mại điện tử hoặc các trang quảng cáo không mong muốn. Điều này không chỉ gây phiền toái mà còn tiềm ẩn nguy cơ lừa đảo hoặc tiếp xúc với các nội dung độc hại khác.

Để né tránh các hệ thống phát hiện xâm nhập ban đầu, các tiện ích mở rộng độc hại này thường duy trì trạng thái “ngủ đông” trong nhiều ngày sau khi cài đặt. Chúng sử dụng các trình kích hoạt dựa trên thời gian, chỉ bắt đầu thực hiện các hành vi độc hại sau một khoảng thời gian nhất định, gây khó khăn cho việc phân tích và nhận diện ngay lập tức trong giai đoạn cài đặt.

Kỹ Thuật Né Tránh Phân Tích và Giải Mã Payload Phức Tạp

Một trong những khía cạnh kỹ thuật phức tạp nhất và đáng chú ý của mã độc GhostPoster là quy trình giải mã tùy chỉnh của nó. Quy trình này cho phép giải nén payload cuối cùng một cách an toàn và khó theo dõi sau khi dữ liệu đã được lấy từ các máy chủ lệnh và điều khiển (C2).

Thuật Toán Giải Mã Ba Bước

Sau khi bộ tải ban đầu (loader) truy xuất dữ liệu được mã hóa từ C2, nó không thực thi ngay lập tức mà áp dụng một thuật toán biến đổi ba bước độc đáo để tái tạo mã JavaScript có thể thực thi. Các bước này được thiết kế để gây khó khăn cho việc phân tích tĩnh và động:

  1. Hoán đổi chữ hoa/thường: Tất cả các chữ cái viết thường trong chuỗi mã hóa sẽ được chuyển thành chữ hoa, và ngược lại. Ví dụ: ‘aBc’ sẽ trở thành ‘AbC’.
  2. Trao đổi số ‘8’ và ‘9’: Các số ‘8’ sẽ được thay thế bằng ‘9’, và số ‘9’ sẽ được thay thế bằng ‘8’. Các số khác không bị ảnh hưởng. Ví dụ: ‘1289’ sẽ trở thành ‘1298’.
  3. Giải mã Base64: Cuối cùng, chuỗi đã được biến đổi sẽ trải qua quá trình giải mã Base64 tiêu chuẩn để khôi phục lại mã JavaScript ban đầu.

Ví dụ minh họa quy trình giải mã (giả định một chuỗi mã hóa):

// Chuỗi mã hóa ban đầu (sau khi lấy từ C2)
const encodedPayload = "yZ89aXB0UjM2M0g=";

// Bước 1: Hoán đổi chữ hoa/thường
// "yZ89aXB0UjM2M0g=" -> "Yz89AxBtUr363h="

// Bước 2: Trao đổi '8' và '9'
// "Yz89AxBtUr363h=" -> "Yz98AxBtUr363h="

// Bước 3: Giải mã Base64
// Base64_decode("Yz98AxBtUr363h=") -> "initialJsPayload" (mã JS đã giải mã)

Sự che giấu (obfuscation) này tương đối đơn giản về mặt tính toán nhưng lại cực kỳ hiệu quả trong việc né tránh phát hiện dựa trên chữ ký tĩnh, vì payload ban đầu không chứa bất kỳ chuỗi độc hại dễ nhận dạng nào. Sau bước giải mã ba bước, payload tiếp tục được xử lý bằng cách sử dụng mã hóa XOR, với khóa được tạo ra từ ID thời gian chạy duy nhất của tiện ích mở rộng. Điều này tạo thêm một lớp bảo mật, khiến việc giải mã trở nên khó khăn hơn nếu không có thông tin cụ thể về phiên bản tiện ích.

Điểm đáng chú ý là mã đã giải mã chỉ tồn tại trong bộ nhớ của trình duyệt. Điều này có nghĩa là mã độc GhostPoster không để lại bất kỳ dấu vết tệp tĩnh nào trên hệ thống đĩa của nạn nhân, gây khó khăn cực độ cho các công cụ phân tích pháp y và hệ thống phát hiện xâm nhập dựa trên tệp.

Thách Thức Trong Phân Tích Động

Để làm phức tạp thêm quá trình phân tích và nhận dạng, mã độc này cố tình đưa vào các độ trễ ngẫu nhiên trong quá trình hoạt động. Nó cũng chỉ lấy payload định kỳ, không phải liên tục. Những chiến thuật này khiến việc phân tích động trở nên đặc biệt khó khăn đối với các nhóm bảo mật khi cố gắng tái tạo quá trình lây nhiễm trong môi trường kiểm soát và quan sát hành vi của mã độc một cách đầy đủ. Sự không nhất quán trong hành vi làm giảm khả năng thu thập mẫu và phân tích hiệu quả.

Chỉ Số Thỏa Hiệp (IOCs)

Để hỗ trợ các nhà nghiên cứu bảo mật và quản trị viên hệ thống trong việc xác định và ngăn chặn các mối đe dọa liên quan đến chiến dịch mã độc GhostPoster, dưới đây là các chỉ số thỏa hiệp đã được ghi nhận:

  • Miền Lệnh và Điều Khiển (C2): liveupdt.com

Việc theo dõi các kết nối mạng đến miền này là rất quan trọng để phát hiện và cô lập các hoạt động liên quan đến mã độc. Để có cái nhìn sâu sắc hơn về kỹ thuật và phân tích chi tiết của mã độc này, độc giả có thể tham khảo báo cáo nghiên cứu gốc từ Koi:

Inside GhostPoster: How a PNG Icon Infected 50,000 Firefox Browser Users.