Lợi Dụng Tệp CHM Phân Tán Mã Độc: Chi Tiết Chuỗi Tấn Công Tinh Vi

Kẻ tấn công đã lợi dụng các tệp tin Microsoft Compiled HTML Help (CHM) để phân tán mã độc, với một mẫu đáng chú ý là deklaracja.chm được tải lên VirusTotal từ Ba Lan. Việc lạm dụng định dạng tệp tin legacy này cho thấy sự thích nghi liên tục của các tác nhân đe dọa để vượt qua các biện pháp kiểm soát an ninh truyền thống.

Cơ Chế Lây Nhiễm Ban Đầu qua Tệp CHM

Tệp tin CHM về bản chất là một vùng chứa nhị phân cho các tệp HTML nén và các đối tượng liên quan. Nó thường được sử dụng để cung cấp tài liệu trợ giúp hoặc sách điện tử. Tuy nhiên, trong chiến dịch này, nó được dùng làm phương tiện phân phối cho một chuỗi lây nhiễm đa giai đoạn phức tạp. Khi tệp CHM độc hại được thực thi thông qua trình xử lý mặc định của Windows là hh.exe (Microsoft HTML Help Executable), nó sẽ hiển thị một hình ảnh mồi nhử (decoy image) có tên deklaracja.png.

Hình ảnh này được thiết kế để giả mạo một biên lai chuyển khoản ngân hàng từ ngân hàng PKO của Ba Lan. Mục đích chính là đánh lừa nạn nhân, giữ cho họ tập trung vào nội dung “hợp pháp” trên màn hình trong khi các tiến trình độc hại được khởi tạo một cách lặng lẽ trong nền, tạo điều kiện cho cuộc tấn công tiếp theo mà không gây ra bất kỳ cảnh báo tức thì nào cho người dùng.

Phân Tích Cấu Trúc Nội Bộ của CHM Độc Hại

Việc giải nén tệp CHM độc hại này tiết lộ một cấu trúc nội bộ được thiết kế để che giấu và kích hoạt tải trọng độc hại. Các thành phần cốt lõi bao gồm:

  • Các tệp hệ thống CHM tiêu chuẩn được tiền tố bằng ‘#‘, đây là các tệp cần thiết cho hoạt động bình thường của tệp trợ giúp CHM.
  • Một tệp HTML quan trọng bị xáo trộn có tên index.htm. Tệp này chứa một đoạn mã JavaScript phức tạp, được viết bằng các mẫu của obfuscator.io. Các mẫu này bao gồm việc sử dụng các biến dạng _0x và truy xuất chuỗi thông qua chỉ mục mảng, làm cho việc phân tích tĩnh trở nên khó khăn hơn đáng kể.
  • Một tệp cabinet (.cab) được ngụy trang thành desktop.mp3. Đây là một kỹ thuật che giấu tệp tin bằng cách thay đổi phần mở rộng của nó để trông có vẻ vô hại. Tệp cabinet này chứa tải trọng chính là unt32.dll.
  • Hình ảnh mồi nhử deklaracja.png, được sử dụng để đánh lừa người dùng như đã đề cập.

Chi Tiết Cơ Chế Khai Thác JavaScript và ActiveX

Đoạn mã JavaScript bị xáo trộn trong index.htm đóng vai trò trung tâm trong việc dàn dựng chuỗi tấn công. Mã này giải mã một chuỗi thập lục phân lớn thành HTML có thể thực thi, sau đó kiểm soát toàn bộ quá trình khai thác. Các bước chính do đoạn HTML này thực hiện bao gồm:

  1. Hiển thị Hình ảnh Mồi nhử: Mã tạo một iframe để hiển thị hình ảnh deklaracja.png. Điều này giúp duy trì sự đánh lừa thị giác đối với nạn nhân, khiến họ tin rằng họ đang xem một tài liệu hợp pháp.
  2. Buộc Tải xuống Tệp Độc hại: Kẻ tấn công lợi dụng thẻ <bgsound>. Mặc dù thẻ này đã lỗi thời và chủ yếu tương thích với Internet Explorer, nhưng nó bị lạm dụng để buộc trình duyệt tải xuống tệp desktop.mp3 dưới dạng một tệp tạm thời. Việc sử dụng thẻ <bgsound> trong ngữ cảnh này là một kỹ thuật khai thác các tính năng lỗi thời hoặc không an toàn của trình duyệt cũ, vốn có thể bỏ qua các cảnh báo bảo mật hiện đại.
  3. Kích hoạt Đối tượng ActiveX: Tiếp theo, quá trình này khởi tạo một đối tượng ActiveX thông qua CLSID adb880a6-d8ff-11cf-9377-00aa003b7a11. CLSID này đặc biệt quan trọng vì nó liên kết trực tiếp với hhctrl.ocx, một thư viện kiểm soát ActiveX của Microsoft HTML Help Control. hhctrl.ocx được thiết kế để hiển thị các tệp trợ giúp CHM, nhưng trong trường hợp này, nó bị lạm dụng để thực thi mã độc bằng cách giả lập các tương tác người dùng, cho phép kẻ tấn công điều khiển các hành vi hệ thống cơ bản mà không cần sự đồng ý trực tiếp của người dùng.

Theo báo cáo phân tích, điều khiển ActiveX này sau đó mô phỏng một cú nhấp chuột vào nút, kích hoạt một chuỗi lệnh phức tạp. Kỹ thuật này cho phép kẻ tấn công thực thi các lệnh hệ thống mà không cần tương tác trực tiếp của người dùng sau khi tệp CHM được mở, từ đó duy trì tính lén lút của cuộc tấn công.

Chuỗi Thực Thi Lệnh Sử Dụng LOLBins

Sau khi đối tượng ActiveX được kích hoạt thành công, một chuỗi lệnh tinh vi được thực thi thông qua cmd.exe. Tiến trình cmd.exe này được thu nhỏ để ẩn khỏi tầm nhìn của người dùng, giảm thiểu khả năng bị phát hiện. Chuỗi lệnh này đặc biệt đáng chú ý vì nó sử dụng các kỹ thuật “Living Off The Land Binaries” (LOLBins). LOLBins là các công cụ hợp lệ của hệ thống Windows được kẻ tấn công lạm dụng để thực hiện các hành động độc hại. Việc sử dụng các công cụ này giúp mã độc hòa nhập vào các hoạt động hệ thống thông thường, làm cho việc phát hiện trở nên khó khăn hơn đối với các giải pháp an ninh dựa trên chữ ký.

Các bước chi tiết của chuỗi lệnh được thực thi bao gồm:

  1. Điều hướng Thư mục: Lệnh đầu tiên điều hướng đến thư mục tạm thời của hệ thống: %temp%. Đây là một vị trí phổ biến để lưu trữ các tệp tạm thời và thường được mã độc sử dụng để lưu trữ các thành phần của nó.
  2. Tìm kiếm và Xác minh Tệp: Kẻ tấn công sau đó sử dụng forfiles.exe, một LOLBin hợp lệ của Windows. forfiles.exe là một tiện ích mạnh mẽ dùng để chọn các tệp và thực thi một lệnh trên chúng. Ở đây, nó được sử dụng với đối số /M để liệt kê các tệp .tmp trong thư mục tạm thời. Mục tiêu chính là xác định tệp desktop.mp3 đã được tải xuống và giải nén trước đó. Lệnh này kiểm tra kích thước tệp chính xác là 180738 byte để đảm bảo nó khớp với tệp cabinet chứa unt32.dll. Đây là một cơ chế kiểm tra tính toàn vẹn và xác định đúng tệp độc hại.
  3. Giải nén DLL: Ngay sau khi tệp được xác định và kích thước được xác minh, lệnh expand được sử dụng để giải nén DLL nhúng từ tệp cabinet (desktop.mp3). Lệnh expand là một công cụ hệ thống khác, thường được sử dụng để giải nén các tệp CAB của Microsoft.
  4. Tải và Thực thi DLL: Cuối cùng, DLL đã giải nén (unt32.dll) được tải và thực thi bằng cách sử dụng rundll32.exe và gọi ordinal #1. rundll32.exe là một LOLBin được sử dụng rộng rãi khác, cho phép thực thi các hàm được xuất từ các tệp DLL, biến nó thành một công cụ lý tưởng cho việc khởi chạy mã độc mà không cần một trình tải (loader) tùy chỉnh.

Ví dụ minh họa chuỗi lệnh có thể được thực thi, thể hiện sự kết hợp các công cụ hệ thống để đạt được mục tiêu độc hại:


cd %temp%
forfiles.exe /M *.tmp /C "cmd /c if @fsize == 180738 expand @file unt32.dll && rundll32.exe unt32.dll,#1"

(Lưu ý: Đoạn mã trên là minh họa logic kỹ thuật dựa trên mô tả, không phải đoạn mã thực tế được cung cấp trong nội dung gốc, nhưng nó thể hiện đúng cách LOLBins được lạm dụng.)

Phân Tích Mã Độc unt32.dll và Quá Trình Tải Tải Trọng Tiếp Theo

Tệp unt32.dll, được thực thi sau chuỗi LOLBins, là một trình tải xuống (downloader) được phát triển bằng C++. Điểm đáng chú ý của nó là việc sử dụng kỹ thuật mã hóa XOR cho các chuỗi nội bộ. Mã độc sử dụng một khóa xoay 128-byte để giải mã theo từng đoạn, ví dụ: các phân đoạn 5-byte được sử dụng cho User-Agent. Kỹ thuật mã hóa này không chỉ làm chậm quá trình phân tích bởi các nhà nghiên cứu bảo mật mà còn giúp mã độc tránh bị các hệ thống dựa trên chữ ký phát hiện bằng cách biến đổi các chuỗi dữ liệu nhạy cảm.

unt32.dll sử dụng các API WinHTTP, một tập hợp các hàm của Windows để truy cập giao thức HTTP, nhằm tìm nạp tải trọng tiếp theo từ địa chỉ hxxps://rustyquill[.]top/shw/the-magnus-protoco1.jpg. Tên miền và tên tệp này tham chiếu đến podcast Rusty Quill, cho thấy một nỗ lực sử dụng mồi nhử dựa trên văn hóa hoặc sở thích cụ thể của nạn nhân trong khu vực, nhằm tăng tính thuyết phục của cuộc tấn công xã hội.

Quy Trình Xác Thực và Thực Thi Tải Trọng Cuối Cùng

Trình tải xuống unt32.dll được lập trình để thực hiện các bước sau để xử lý tải trọng nhận được từ máy chủ điều khiển (C2):

  1. Xác thực Kích thước Phản hồi: Mã độc kiểm tra để đảm bảo kích thước phản hồi từ máy chủ C2 vượt quá 289109 byte. Đây là một cơ chế kiểm tra tính toàn vẹn để đảm bảo tải trọng được tải xuống hoàn chỉnh và đúng định dạng, tránh các phản hồi không mong muốn hoặc không đủ dữ liệu.
  2. Loại bỏ Tiêu đề Giả mạo: Nó loại bỏ phân đoạn ban đầu của dữ liệu phản hồi, có khả năng là một tiêu đề JPEG hợp lệ. Điều này gợi ý rằng kẻ tấn công đã sử dụng kỹ thuật steganography (ẩn giấu dữ liệu trong hình ảnh) hoặc ngụy trang mã độc trong dữ liệu vô hại để né tránh phát hiện của các giải pháp bảo mật dựa trên kiểm tra tệp tin.
  3. Giải mã Tải trọng: Dữ liệu được nối thêm sau tiêu đề giả mạo được giải mã bằng chính khóa XOR đã được sử dụng để giải mã các chuỗi nội bộ của unt32.dll, đảm bảo tính nhất quán trong phương pháp mã hóa.
  4. Lưu trữ Tải trọng Cuối cùng: Tệp DLL kết quả sau khi giải mã được lưu trữ dưới dạng C:\Users%user%\AppData\Local\TaskSync\net32.dll. Đường dẫn này được chọn để trông có vẻ hợp pháp như một tệp hệ thống hoặc ứng dụng.
  5. Thực thi Tải trọng Cuối cùng: Tệp net32.dll sau đó được thực thi thông qua rundll32.exe, gọi ordinal #1, tương tự như cách unt32.dll đã được thực thi. Điều này cho thấy một sự nhất quán trong phương pháp khởi chạy các thành phần mã độc.
  6. Thiết lập Cơ chế Duy trì: Cuối cùng, mã độc thiết lập một cơ chế duy trì bằng cách sử dụng một Scheduled Task dựa trên COM (Component Object Model). Cơ chế này đảm bảo mã độc có thể tồn tại qua các lần khởi động lại hệ thống, duy trì quyền truy cập vào thiết bị nạn nhân một cách bền vững. Việc sử dụng các tác vụ theo lịch trình dựa trên COM là một kỹ thuật nâng cao giúp mã độc hoạt động mà không cần can thiệp thêm từ kẻ tấn công.

Chỉ Dấu Thỏa Hiệp (IOCs) và Phân Loại Tác Nhân Đe Dọa

Hoạt động này cho thấy sự liên kết rõ ràng với các chiến dịch trước đây của cùng một tác nhân đe dọa. Một ví dụ điển hình là việc sử dụng một tệp CHM trong dowód_wpłaty.zip, được chia sẻ vào ngày 7 tháng 4 năm 2025. Tệp này cũng được liên kết với tên miền rustyquill[.]top, gợi ý sự tồn tại của một nhóm tác nhân đe dọa dai dẳng và có phương pháp hoạt động nhất quán.

Chỉ Dẫn Thỏa Hiệp (Indicators of Compromise – IOCs)

Các chỉ dẫn sau đây có thể được sử dụng để phát hiện và ứng phó với cuộc tấn công này:

  • Tên tệp độc hại:
    • deklaracja.chm
    • deklaracja.png
    • index.htm (bị xáo trộn)
    • desktop.mp3 (tệp cabinet ngụy trang chứa unt32.dll)
    • unt32.dll
    • net32.dll
    • dowód_wpłaty.zip (tên tệp CHM trong chiến dịch trước đó)
  • URL/Domain liên quan:
    • hxxps://rustyquill[.]top/shw/the-magnus-protoco1.jpg
    • rustyquill[.]top
  • CLSID bị khai thác: adb880a6-d8ff-11cf-9377-00aa003b7a11 (liên kết với hhctrl.ocx)
  • Kích thước tệp kiểm tra cụ thể:
    • 180738 bytes (kích thước tệp desktop.mp3)
    • >289109 bytes (kích thước phản hồi tải trọng nhận được)
  • Kỹ thuật mã hóa: Mã hóa XOR với khóa xoay 128-byte.
  • Đường dẫn lưu trữ tải trọng cuối cùng: C:\Users%user%\AppData\Local\TaskSync\net32.dll

Gán Ghép Tác Nhân Đe Dọa (Attribution)

Việc gán ghép thông tin tình báo chỉ ra nhóm FrostyNeighbor hoặc UNC1151. Đây là một nhóm tác nhân đe dọa liên kết với Belarus, nổi tiếng với lịch sử nhắm mục tiêu vào các quốc gia như Ukraine, Lithuania, Latvia, Ba LanĐức. Vị trí tải lên ban đầu từ Ba Lan hoàn toàn phù hợp với các mục tiêu lịch sử của nhóm này. Việc sử dụng các mồi nhử theo chủ đề như tài liệu ngân hàng và tham chiếu podcast cho thấy kỹ thuật xã hội của chúng được điều chỉnh riêng cho các nạn nhân trong khu vực cụ thể, nhằm tối đa hóa tỷ lệ thành công của cuộc tấn công. Đồng thời, việc sử dụng các kỹ thuật như ngụy trang hình ảnh vô hại và thực thi lệnh gián tiếp qua LOLBins giúp mã độc tiềm ẩn khả năng né tránh phát hiện.

Thách Thức Trong Phát Hiện và Các Kỹ Thuật Né Tránh Nâng Cao

Mặc dù đã có những nỗ lực phân tích, việc định vị các phiên bản tải trọng được nối thêm của tệp the-magnus-protoco1.jpg thông qua các quy tắc YARA khớp với tiêu đề JPEG và các mẫu byte đã không tìm thấy kết quả nào. Điều này gợi ý về việc phân phối tải trọng tạm thời hoặc theo khu vực địa lý (geofenced delivery), nơi tải trọng chỉ được phân phối đến các nạn nhân cụ thể hoặc trong một khoảng thời gian giới hạn. Kỹ thuật này làm cho việc phân tích và phát hiện trở nên khó khăn hơn, vì các nhà nghiên cứu không thể dễ dàng lấy được mẫu tải trọng hoàn chỉnh để phân tích.

Tổng thể, chiến dịch này nhấn mạnh sự lạm dụng ngày càng tinh vi của các định dạng tệp cũ như CHM để triển khai mã độc. Nó kết hợp nhiều kỹ thuật phức tạp như xáo trộn mã, khai thác ActiveX và kỹ thuật ẩn giấu dữ liệu (steganography) trong hình ảnh để vượt qua các biện pháp phòng thủ tại điểm cuối, đặt ra thách thức đáng kể cho an ninh mạng hiện đại.