Phân tích chiến dịch khai thác lỗ hổng Windows SmartScreen để phân phối phần mềm độc hại DarkGate

07:00 | 08/04/2024 | HACKER / MALWARE
Tháng 01/2024, nhóm nghiên cứu Zero Day Initiative (ZDI) của hãng bảo mật Trend Micro phát hiện chiến dịch phân phối phần mềm độc hại DarkGate. Các tác nhân đe dọa đã khai thác lỗ hổng CVE-2024-21412 trong Windows Defender SmartScreen để vượt qua kiểm tra bảo mật (bypass) và tự động cài đặt phần mềm giả mạo.

 

TỔNG QUAN VỀ CHIẾN DỊCH

SmartScreen là một tính năng bảo mật của Windows hiển thị cảnh báo khi người dùng kích hoạt các tệp không được nhận dạng hoặc đáng ngờ được tải xuống từ Internet. Đây là lỗ hổng SmartScreen định danh CVE-2024-21413 cho phép các tệp tải xuống được thiết kế đặc biệt để bypass qua các cảnh báo này.

Cuộc tấn công bắt đầu bằng một email độc hại, bao gồm tệp đính kèm PDF có liên kết điều hướng đến Google DoubleClick Digital Marketing (DDM) - nền tảng quảng cáo cao cấp của Google, khiến các nạn nhân mất cảnh giác và dẫn đến tải xuống trình cài đặt Microsoft (.MSI) độc hại.

Cụ thể, chiến dịch lừa đảo này đã sử dụng các URL chuyển hướng mở (open redirect) từ công nghệ của Google Ads nhằm phân phối các trình cài đặt phần mềm Microsoft (.MSI) giả mạo dưới dạng phần mềm hợp pháp, bao gồm Apple iTunes, Notion, NVIDIA và các phần mềm khác. Các trình cài đặt giả mạo chứa một tệp DLL được tải sẵn có chức năng giải mã và lây nhiễm phần mềm độc hại DarkGate cho người dùng.

Được biết, DarkGate hoạt động theo mô hình phần mềm độc hại dưới dạng dịch vụ (MaaS), là một trong những loại phần mềm độc hại phổ biến, tinh vi và hoạt động tích cực nhất trong thế giới tội phạm mạng. Phần mềm độc hại này thường được các tin tặc có động cơ tài chính sử dụng để nhắm mục tiêu vào các tổ chức ở Bắc Mỹ, châu Âu, châu Á và châu Phi.

PHÂN TÍCH CHUỖI LÂY NHIỄM

Chuyển hướng mở: Google DoubleClick Digital Marketing (DDM)

Hình 1. Sơ đồ chuỗi tấn công

Trong những năm gần đây, các tác nhân đe dọa đã lạm dụng công nghệ Google Ads để phát tán phần mềm độc hại ngày một nhiều hơn. Ngoài việc mua quảng cáo và các bài đăng được tài trợ, các tin tặc cũng đã sử dụng các chuyển hướng mở trong công nghệ DDM của Google, điều này có thể dẫn đến việc thực thi mã từ xa. Kỹ thuật này được sử dụng với mục đích dựa vào sự tin cậy vốn có liên quan đến các dịch vụ và công nghệ web mà hầu hết người dùng đều coi đó là điều hiển nhiên.

Để bắt đầu chuỗi lây nhiễm DarkGate, các tin tặc đã triển khai một chuyển hướng mở từ tên miền doubleclick[.]net bên trong tệp PDF được cung cấp thông qua một chiến dịch email lừa đảo, sử dụng tham số “adurl” để điều hướng nạn nhân đến một máy chủ web bị xâm nhập (Hình 2). Mục tiêu là người dùng phải chọn nút bên trong tệp PDF này để có thể khai thác CVE-2024-21412 và lây nhiễm DarkGate.

Hình 2. Chuyển hướng mở bên trong tệp PDF lừa đảo

Google sử dụng chuyển hướng URL như một phần của nền tảng quảng cáo và bộ dịch vụ phân phối quảng cáo trực tuyến khác. Về cốt lõi, Google DoubleClick cung cấp các giải pháp được thiết kế để giúp nhà quảng cáo, các tổ chức, doanh nghiệp tối ưu hóa chiến dịch quảng cáo trực tuyến của họ.

Trước đây, Trend Micro đã chứng kiến ​​​​sự gia tăng lạm dụng hệ sinh thái Google Ads để phân phối phần mềm độc hại, bao gồm cả những tác nhân đe dọa sử dụng những trình đánh cắp MaaS phổ biến như Rhadamanthys và những trình đánh cắp macOS như Atomic Stealer (AMOS). Tin tặc có thể lạm dụng công nghệ Google Ads để tăng phạm vi tiếp cận của phần mềm độc hại thông qua các chiến dịch quảng cáo và bằng cách nhắm mục tiêu đến các đối tượng cụ thể.

Khi người dùng sử dụng công cụ tìm kiếm Google để tìm kiếm nội dung, quảng cáo được tài trợ sẽ được hiển thị cho họ. Chúng được đặt bởi các doanh nghiệp và nhóm tiếp thị bằng cách sử dụng các công nghệ như Google DoubleClick. Các công nghệ quảng cáo này theo dõi những truy vấn mà người dùng gửi và hiển thị quảng cáo có liên quan dựa trên truy vấn.

Khi chọn một quảng cáo, người dùng sẽ bắt đầu một chuỗi yêu cầu dẫn người dùng chuyển hướng đến tài nguyên được nhắm mục tiêu do nhà quảng cáo thiết lập (Hình 3). Công nghệ Google DoubleClick hoạt động theo giao thức HTTP/2.

Hình 3. Mẫu yêu cầu quảng cáo Google DoubleClick được giải mã

Bên cạnh việc mua trực tiếp quảng cáo, một cách mà các tác nhân đe dọa có thể phát tán phần mềm độc hại hiệu quả hơn là sử dụng các chuyển hướng mở trong các URL liên quan đến Google DDM. Trong khi Microsoft Windows có một tính năng gọi là Mark-of-the-Web (MotW) để gắn cờ nội dung từ các nguồn không an toàn như web, thì những người vận hành DarkGate có thể bypass qua SmartScreen của Windows Defender bằng cách khai thác lỗ hổng CVE-2024-21412, dẫn đến sự lây nhiễm DarkGate.

Khai thác CVE-2024-21412 để bypass Windows Defender SmartScreen

Để khai thác lỗ hổng CVE-2024-21412, các tin tặc đã điều hướng nạn nhân bằng chuyển hướng mở Google DoubleClick đến một máy chủ web bị xâm nhập chứa tệp Internet Shortcut URL đầu tiên.

Tệp này khai thác CVE-2024-21412 bằng cách chuyển hướng đến một tệp Internet Shortcut khác, như trong Hình 4. Tệp sử dụng tham số “URL=” để trỏ đến giai đoạn tiếp theo của quá trình lây nhiễm và lần này được lưu trữ trên máy chủ WebDAV do kẻ tấn công kiểm soát.

Hình 4. Nội dung của tệp JANUARY-25-2024-FLD765.url

Giai đoạn tiếp theo của quá trình lây nhiễm, phần mềm độc hại sẽ kết nối đến tệp MSI chứa kho lưu trữ zip (ZIP) trong đường dẫn khai thác CVE-2023-36025, như trong Hình 5.

Hình 5. Nội dung của tệp gamma.url

Trình tự chuyển hướng tệp này thực thi trình cài đặt phần mềm Microsoft từ một nguồn không đáng tin cậy sẽ áp dụng MotW đúng cách, từ đó sẽ dừng và cảnh báo người dùng thông qua Microsoft Defender SmartScreen rằng tập lệnh đang cố thực thi từ một nguồn không đáng tin cậy, chẳng hạn như web. Bằng cách khai thác CVE-2024-21412, Microsoft Defender SmartScreen của nạn nhân không được nhắc do không áp dụng MotW đúng cách. Điều này khiến nạn nhân dễ rơi vào giai đoạn tiếp theo của quá trình lây nhiễm DarkGate, đó là trình cài đặt phần mềm giả mạo sử dụng tệp MSI.

Giai đoạn 1. Trình cài đặt phần mềm DarkGate Microsoft

Trong giai đoạn tiếp theo của chuỗi lây nhiễm, tệp MSI được sử dụng để tải tệp DLL và tập lệnh AutoIt được sử dụng để giải mã và triển khai payload DarkGate. Trong mẫu cụ thể được các nhà nghiên cứu phân tích, các toán tử bao bọc payload DarkGate trong gói trình cài đặt MSI giả dạng trình cài đặt NVIDIA (Hình 6). Trình cài đặt này được thực thi bằng tiến trình msiexec.exe của Windows, như trong Hình 7. Đối với nạn nhân, một trình cài đặt sẽ xuất hiện và đối với họ, dường như quá trình cài đặt phần mềm NVIDIA bình thường đang diễn ra.

Hình 6. Gói cài đặt NVIDIA .MSI giả mạo

Hình 7. Quá trình thực thi MSI

Trình cài đặt MSI sử dụng CustomActionDLL, một tệp DLL chứa logic của quá trình cài đặt (Hình 8).

Hình 8. Logic cài đặt MSI

Ban đầu, CustomActionDLL tạo một thư mục trong thư mục %tmp% có tên MW-<Uuid> , nơi nó đặt kho lưu trữ Windows Cabinet (CAB) có tên files.cab. Sau đó, CustomActionDLL sử dụng công cụ Expand.exe tích hợp sẵn của Windows để giải nén nội dung của tệp CAB. Cuối cùng tiến hành thực thi một tệp nhị phân hợp pháp  được ký số.

Giai đoạn 2. Sử dụng kỹ thuật DLL sideloading

Trong giai đoạn thứ hai của quá trình thực thi payload, DarkGate sử dụng kỹ thuật DLL sideloading, trong đó một ứng dụng hợp pháp tải tệp DLL độc hại. Trong trường hợp này, tin tặc sử dụng ứng dụng NVIDIA Share.exe để tải thư viện libcef.dll bị trojan hóa.

Mã độc nằm trong hàm GetHandleVerifier của tệp libcef.dll, được gọi từ điểm đầu vào của DLL. Mục đích của DLL này là giải mã giai đoạn tiếp theo của bộ tải được mã hóa XOR, có tên là sqlite3.dll (Hình 9).

Hình 9. Quá trình giải mã “sqlite3.dll”

Trong cuộc tấn công này, khóa chính là zhRVKFlX. Đối với mỗi giai đoạn, phần mềm độc hại sử dụng khóa này theo những cách khác nhau. Đôi khi, nó sử dụng khóa làm điểm đánh dấu để phân biệt các payload khác nhau trong một tệp hoặc giải mã khóa này bằng thuật toán XOR tùy chỉnh để tạo một khóa khác để giải mã payload.

Giai đoạn 3. Trình tải AutoIt

Tệp sqlite3.dll được chia thành bốn phần riêng biệt:

- Phân đoạn 1: Trình tải được mã hóa.

- Phân đoạn 2: Autoit3.exe được mã hóa.

- Phân đoạn 3: Bản rõ script.au3.

- Phân đoạn 4: Bản rõ test.txt.

Phân đoạn đầu tiên, có kích thước 321 KB, là một tệp thực thi của trình tải AutoIt đã được giải mã từ bước trước đó. Tệp nhị phân của trình tải bắt đầu bằng tiêu đề “MZRE”, cho phép nó thực thi dưới dạng shellcode.

Shellcode này được thiết kế để ánh xạ động và tải tệp PE (trình tải AutoIt) vào bộ nhớ của hệ thống. Khi tệp PE được ánh xạ vào bộ nhớ, shellcode sẽ thực thi Original Entry Point (OEP) của tệp thực thi payload.

Sau khi thực thi, trình tải sẽ đọc tệp sqlite3.dll gốc và tìm từ khóa “delimitador” (Hình 10). Nó sử dụng từ khóa này làm điểm đánh dấu để xác định và phân tách từng tệp có trong đó. Sau đó, trình tải trích xuất các tệp này và lưu chúng vào thư mục C:\temp.

Hình 10. Dropper AutoIt

Giai đoạn 4. Phân tích tập lệnh AutoIt

Script.au3 là tập lệnh AutoIt được biên dịch sẵn có chứa hai phần (Hình 11). Phần đầu tiên là tập lệnh được biên dịch AutoIt hợp lệ với các giá trị byte “AU3!EA06” (0x4155332145413036) sẽ được thực thi bởi tệp AutoIt.exe. Phần thứ hai là trojan truy cập từ xa DarkGate (RAT) được mã hóa, phần bắt đầu và kết thúc của payload được mã hóa và đánh dấu bằng “zhRVKFlX”.

Hình 11. Cấu trúc của “script.au3”

Script.au3 chịu trách nhiệm tải và thực thi DarkGate giai đoạn thứ năm trong bộ nhớ. Đoạn mã hiển thị trong Hình 12 là một tập lệnh AutoIt được dịch ngược.

Hình 12. Tập lệnh AutoIt được dịch ngược

Tệp test.txt hoạt động như một nguồn dữ liệu bên ngoài. Tập lệnh đọc nội dung của test.txt (Hình 13), chia nó thành một mảng các ký tự riêng lẻ, sau đó ghép nối có chọn lọc các ký tự nhất định dựa trên các chỉ mục được xác định trước nhằm xây dựng một lệnh hoặc biểu thức.

Hình 13. Nội dung của “test.txt”

Biến $ ZZNDMOFL chứa một tệp nhị phân và để tải tệp này vào bộ nhớ, sau đó chuyển quá trình thực thi tới trình tải thông qua các hàm gọi lại API EnumWindows. Đoạn giải mã được hiển thị trong Hình 14.

Hình 14. Giải mã tệp nhị phân

Đoạn mã tiến hành kiểm tra sự hiện diện của thư mục “CProgramDataSophos” trên hệ thống. Có vẻ như tên thư mục này bị thay đổi do quá trình làm rối mã nguồn. Trong phiên bản trước của tập lệnh, việc kiểm tra sự tồn tại nhằm vào thư mục C:\Program Files(x86)\Sophos, cho biết có lỗi trong việc đặt tên thư mục trong phiên bản này.

Tập lệnh tạo cấu trúc trong bộ nhớ thông qua DllStructCreate, cấu trúc này sẽ được sử dụng khi gọi các hàm DLL và phân bổ không gian cần thiết cho payload của trình tải DarkGate. Sau đó, nó thực hiện lệnh gọi hệ thống tới kernel32.dll bằng cách sử dụng DllCall, gọi hàm VirtualProtect. Chức năng này được sử dụng để thay đổi mức bảo vệ trên một vùng bộ nhớ trong không gian địa chỉ ảo của tiến trình. Mức bảo vệ được đặt thành 0x40, tương ứng với PAGE_EXECUTE_READWRITE, cho phép vùng bộ nhớ được thực thi, đọc và ghi vào.

Sau đó, tập lệnh sẽ ghi vào cấu trúc đã tạo trước đó với dữ liệu nhị phân được chuyển đổi từ biểu diễn chuỗi. Việc chuyển đổi này được thực hiện bằng cách lấy một chuỗi thập lục phân được lưu trữ trong biến $ZZNdmOFL, chuyển đổi nó thành nhị phân với BinaryToString, sau đó đặt dữ liệu nhị phân này vào phân đoạn đầu tiên của $PT bằng cách sử dụng DllStructSetData. Quá trình này tải nhị phân của trình tải DarkGate Delphi một cách hiệu quả.

Cuối cùng, tập lệnh sử dụng các hàm gọi lại API để chuyển hướng luồng thực thi sang payload giai đoạn tiếp theo. Hàm gọi lại là các tiến trình được truyền dưới dạng tham số cho các hàm API của Windows. Tập lệnh thực hiện lệnh gọi hệ thống tới user32.dll để gọi EnumWindows, tận dụng con trỏ tương ứng với giá trị $ZZNdmOFL.

Giai đoạn 5. Trình tải PE shellcode DarkGate

Việc thực thi shellcode bắt đầu bằng ba lần nhảy (jump) tới header của tệp nhị phân. Từ đó, lệnh gọi được thực hiện tới việc triển khai tùy chỉnh trình tải PE (Hình 15).

Hình 15. Lệnh gọi thực hiện tùy chỉnh của trình tải PE

Trình tải DarkGate yêu cầu trình tải PE để ánh xạ tệp nhị phân trong bộ nhớ. Để giải quyết vấn đề này, biến “$ZZNdmOFL” chứa shellcode tải và thực thi tệp PE trong bộ nhớ (Hình 16).

Hình 16. Trình tải PE tùy chỉnh DarkGate

Phân tích trình tải DarkGate Delphi

Mục đích chính của trình tải DarkGate là trích xuất payload cuối cùng DarkGate RAT từ tập lệnh AutoIt, tải nó vào bộ nhớ, giải mã và thực thi (Hình 17).

Hình 17. Tìm kiếm và tải payload DarkGate được mã hóa từ tập lệnh AutoIt

Khi trình tải chạy, nó sẽ kiểm tra đối số dòng lệnh của tiến trình AutoIt.exe, chỉ ra đường dẫn đến tập lệnh AutoIt. Nếu có tham số, nó sẽ tiến hành tải nội dung của tập lệnh vào bộ đệm.

Khóa giải mã payload được mã hóa bằng XOR. Trình tải giải mã khóa bằng cách lặp qua từng byte, áp dụng thao tác XOR với giá trị giảm dần theo độ dài của khóa.

Sau khi lấy được khóa giải mã roTSOEnY, phần mềm độc hại sẽ sử dụng phương pháp giải mã XOR tùy chỉnh để giải mã payload (Hình 18). Quá trình giải mã bắt đầu bằng cách áp dụng thao tác XOR cho từng byte, ghép nó với byte tương ứng từ khóa được giải mã. Việc ghép nối này được hướng dẫn bởi một chỉ mục chính cập nhật động trong suốt tiến trình.

Hình 18. Quá trình giải mã payload DarkGate

Chỉ mục khóa này được tính toán lại sau mỗi thao tác XOR bằng cách thêm giá trị của byte khóa hiện tại vào chỉ mục và lấy mô-đun với tổng kích thước của khóa. Nếu chỉ số khóa đạt đến 0 sau khi cập nhật, nó sẽ được đặt lại về vị trí cuối cùng trong khóa. Quá trình này được lặp lại cho từng byte cho đến khi payload được giải mã.

Sau đó, trình tải sẽ chuyển payload đó đến hàm “mw_Execute_Payload” để thực thi payload trực tiếp từ bộ nhớ.

Phân tích DarkGate RAT

DarkGate là một RAT được viết bằng Borland Delphi và được quảng cáo là MaaS trên diễn đàn tội phạm mạng bằng tiếng Nga ít nhất kể từ năm 2018. Phần mềm độc hại này có nhiều tính năng khác nhau, bao gồm chèn tiến trình, tệp tải xuống và thực thi, đánh cắp thông tin, thực thi lệnh shell, keylogging,… Bên cạnh đó, DarkGate cũng sử dụng nhiều kỹ thuật trốn tránh.

Trong chiến dịch này, DarkGate phiên bản 6.1.7 đã được triển khai. Những thay đổi chính trong phiên bản 6 bao gồm mã hóa XOR cho cấu hình, bổ sung các giá trị cấu hình mới, sắp xếp lại thứ tự cấu hình và cập nhật các giá trị lệnh từ máy chủ điều khiển và ra lệnh (C&C).

Sau khi thực thi, DarkGate kích hoạt anti-ntdll.dll bằng cách sử dụng phương thức Direct System Call (syscall), được thiết kế đặc biệt cho những lúc phần mềm độc hại cần gọi API gốc từ ntdll.dll. Kỹ thuật này cho phép DarkGate gọi trực tiếp các chức năng chế độ kernel, bỏ qua các lớp API chế độ standard user-mode. Bằng cách sử dụng syscall, phương pháp này không chỉ tăng cường khả năng tàng hình của phần mềm độc hại mà còn làm phức tạp các nỗ lực phát hiện và phân tích của các cơ chế bảo mật vì nó làm xáo trộn sự phụ thuộc của phần mềm độc hại vào các chức năng quan trọng của hệ thống để thực hiện các hoạt động độc hại.

Phần mềm độc hại xác định kiến ​​trúc hệ điều hành bằng cách kiểm tra sự hiện diện của tệp C:\Windows\SysWOW64\ntdll.dll. Tùy thuộc vào kiến ​​trúc x64 hay x86, DarkGate sử dụng một phương thức syscall khác. Đối với kiến ​​trúc x86, syscall được thực thi trực tiếp bằng cách sử dụng lệnh sysenter. Ngược lại, đối với kiến ​​trúc x64, nó sử dụng con trỏ FS:[0xC0], tham chiếu wow64cpu!KiFastSystemCall để thực hiện syscall (Hình 19).

Hình 19. Hàm KiFastSystemCall của hệ thống 64-bit

Để tránh phân tích tĩnh, giảm thiểu khả năng hiển thị của các lệnh gọi API đáng ngờ, che dấu các chức năng độc hại và cản trở tính hiệu quả của quá trình phân tích bảo mật, phần mềm độc hại sẽ tự động phân giải các chức năng API trong thời gian thực thi.

Đồng thời, không giống như DarkGate phiên bản 5, trong đó cấu hình ở dạng văn bản rõ, cấu hình phiên bản 6 được mã hóa XOR. Quá trình giải mã được thể hiện trong Hình 20. Hàm này chấp nhận bộ đệm được mã hóa, khóa mã hóa cứng (hard-code) và kích thước bộ đệm. Sau đó, nó tạo khóa giải mã mới dựa trên khóa đã cho và giải mã bộ đệm cấu hình.

Hình 20. Quá trình giải mã cấu hình DarkGate phiên bản 6

Sau khi hoàn tất quá trình thiết lập ban đầu, phần mềm độc hại sẽ đăng ký hệ thống bị lây nhiễm với máy chủ C&C của nó thông qua các yêu cầu HTTP POST.

KẾT LUẬN

Bài viết này đã phân tích cách các tin tặc vận hành DarkGate có thể khai thác lỗ hổng CVE-2024-21412 như một cuộc tấn công zero-day để triển khai phần mềm độc hại DarkGate phức tạp và đang phát triển.

Những kẻ tấn công đã sử dụng trình cài đặt phần mềm giả mạo, cùng với các chuyển hướng mở, cho thấy sự kết hợp mạnh mẽ và có thể dẫn đến nhiều chuỗi lây nhiễm. Điều cần thiết là phải luôn cảnh giác và không nên tin tưởng tuyệt đối vào bất kỳ trình cài đặt phần mềm nào mà người dùng nhận được bên ngoài các kênh chính thức. Các doanh nghiệp cũng như cá nhân đều phải thực hiện các bước chủ động để bảo vệ hệ thống của mình khỏi những mối đe dọa như vậy.

Bước đầu tiên để giảm thiểu rủi ro từ các cuộc tấn công này là áp dụng bản cập nhật Patch Tuesday tháng 02/2024 của Microsoft để vá lỗ hổng CVE-2024-21412. Trend Micro đã công bố danh sách đầy đủ các chỉ số xâm phạm (IoC) cho chiến dịch DarkGate này, quý độc giả có thể tham khảo tại đây.

Hồng Đạt

(Tổng hợp)

Tin cùng chuyên mục

Tin mới