Giải mã phần mềm gián điệp mạng CloudSorcerer

10:00 | 16/08/2024 | HACKER / MALWARE
Vào tháng 5/2024, các nhà nghiên cứu của hãng bảo mật Kaspersky đã phát hiện ra một mối đe dọa APT mới nhắm vào các thực thể Chính phủ Nga. Được gọi là CloudSorcerer, đây là một công cụ gián điệp mạng tinh vi được sử dụng để theo dõi lén lút, thu thập dữ liệu và đánh cắp thông tin thông qua cơ sở hạ tầng đám mây Microsoft Graph, Yandex Cloud và Dropbox. Phần mềm độc hại này tận dụng các tài nguyên đám mây và GitHub làm máy chủ điều khiển và ra lệnh (C2), truy cập chúng thông qua API bằng mã thông báo xác thực. Bài viết này sẽ tiến hành phân tích và giải mã về công cụ gián điệp mạng này, dựa trên báo cáo mới đây của Kaspersky.

Tạp chí An toàn thông tin đã có tin bài giới thiệu tổng quan về CloudSorcerer, trong đó có đề cập đến việc phần mềm độc hại này có những điểm tương đồng với CloudWizard, nhưng vẫn có những điểm khác biệt trong mã nguồn. Trọng tâm của bài viết sẽ làm sáng tỏ những điều này.

PHÂN TÍCH KỸ THUẬT

CloudSorcerer được thực thi thủ công trên một máy tính đã bị lây nhiễm. Ban đầu, nó là một tệp nhị phân Portable Executable (PE) được viết bằng ngôn ngữ C. Chức năng phần mềm độc hại thay đổi tùy thuộc vào tiến trình mà nó được thực thi. Lúc này, CloudSorcerer gọi hàm GetModuleFileNameA để xác định tên tiến trình đang chạy. Sau đó, so sánh tên tiến trình này với một tập hợp các chuỗi được mã hóa cứng, bao gồm: browser, mspaint[.]exe và msiexec[.]exe. Tùy thuộc vào tên tiến trình được phát hiện, phần mềm độc hại sẽ kích hoạt các chức năng khác nhau:

- Nếu tên tiến trình là mspaint[.]exe, CloudSorcerer sẽ hoạt động như một mô-đun backdoor và thực hiện các hoạt động như thu thập dữ liệu và thực thi mã.

- Nếu tên tiến trình là msiexec[.]exe, phần mềm độc hại sẽ khởi tạo mô-đun giao tiếp C2.

- Cuối cùng, nếu tên tiến trình chứa chuỗi “browser” hoặc không khớp với bất kỳ tên nào được chỉ định, phần mềm độc hại sẽ cố gắng đưa shellcode vào các tiến trình msiexec[.]exe, mspaint[.]exe hoặc explorer[.]exe trước khi kết thúc tiến trình ban đầu.

Mọi trao đổi dữ liệu giữa các mô-đun đều được tổ chức thông qua các Pipe Windows, một cơ chế giao tiếp giữa các tiến trình (IPC).

Mô-đun backdoor

Mô-đun backdoor của phần mềm độc hại bắt đầu bằng cách thu thập nhiều thông tin hệ thống khác nhau về máy tính nạn nhân, thực thi trong một luồng riêng biệt, cụ thể: Tên máy tính; Tên tài khoản; Thông tin về phiên bản Windows; Thời gian hoạt động hệ thống.

Tất cả dữ liệu thu thập được đều được lưu trữ trong một cấu trúc được tạo đặc biệt. Sau khi thu thập thông tin hoàn tất, dữ liệu được ghi vào Pipe có tên \\[.]\PIPE\[1428] được kết nối với quy trình mô-đun C2. Điều quan trọng cần lưu ý là tất cả trao đổi dữ liệu đều được tổ chức bằng các cấu trúc được xác định rõ ràng với các mục đích khác nhau, chẳng hạn như cấu trúc lệnh backdoor và cấu trúc thu thập thông tin.

Tiếp theo, phần mềm độc hại cố gắng đọc dữ liệu từ \\[.]\PIPE\[1428]. Nếu thành công, nó sẽ phân tích dữ liệu đến thành cấu trúc COMMAND và đọc một byte duy nhất từ ​​đó, biểu thị cho COMMAND_ID.

Hình 1. Chức năng chính của backdoor

Tùy thuộc vào COMMAND_ID, phần mềm độc hại sẽ thực hiện một trong các hành động sau:

- 0x1: Thu thập thông tin về ổ cứng trong hệ thống, bao gồm tên ổ đĩa logic, dung lượng và không gian trống.

- 0x2: Thu thập thông tin về tệp và thư mục, chẳng hạn như tên, kích thước.

- 0x3: Thực thi lệnh shell bằng API ShellExecuteExW.

- 0x4: Sao chép, di chuyển, đổi tên hoặc xóa tệp.

- 0x5: Đọc dữ liệu từ bất kỳ tệp nào.

- 0x6: Tạo và ghi dữ liệu vào bất kỳ tệp nào.

- 0x8: Nhận shellcode từ Pipe và đưa nó vào bất kỳ tiến trình nào bằng cách phân bổ lại bộ nhớ và tạo một luồng mới trong một tiến trình từ xa.

- 0x9: Nhận tệp PE, tạo một phần và ánh xạ nó vào tiến trình từ xa.

- 0x7: Chạy chức năng nâng cao bổ sung.

Tất cả thông tin thu thập hoặc kết quả của các tác vụ đã thực hiện sẽ được thêm vào một cấu trúc được tạo đặc biệt và gửi đến tiến trình mô-đun C2 thông qua một Pipe được đặt tên.

Mô-đun C2

Mô-đun C2 bắt đầu bằng cách tạo một Pipe mới có tên\\[.]\PIPE\[1428]. Tiếp theo, nó cấu hình kết nối với máy chủ C2 ban đầu bằng cách cung cấp các đối số cần thiết cho một chuỗi các hàm API Windows chịu trách nhiệm cho các kết nối Internet: InternetCrackUrlA; InternetSetOptionA; InternetOpenA; InternetConnectA; HttpOpenRequestA; HttpSendRequestA.

Phần mềm độc hại thiết lập loại yêu cầu (GET), cấu hình thông tin proxy, thiết lập Header được mã hóa cứng và cung cấp URL C2.

Hình 2. Thiết lập kết nối Internet

Sau đó, CloudSorcerer kết nối với máy chủ C2 ban đầu, đó là trang GitHub tại địa chỉ https://github[.]com/alinaegorovaMygit. Phần mềm độc hại đọc toàn bộ trang web vào bộ đệm bộ nhớ bằng cách sử dụng lệnh gọi “InternetReadFile”.

Kho lưu trữ GitHub chứa các nhánh của 3 dự án công khai chưa được sửa đổi hoặc cập nhật. Mục đích của chúng chỉ là làm cho trang GitHub có vẻ hợp pháp và hoạt động. Tuy nhiên, phần tác giả của trang GitHub hiển thị một chuỗi khá thú vị.

Hình 3. Chuỗi hex trong phần tác giả

Các nhà nghiên cứu tìm thấy dữ liệu trông giống như một chuỗi hex bắt đầu và kết thúc bằng cùng một mẫu byte “CDOY”. Sau khi phần mềm độc hại tải xuống toàn bộ trang HTML GitHub, bắt đầu phân tích cú pháp, tìm kiếm cụ thể chuỗi ký tự “CDOY”. Khi tìm thấy, phần mềm độc hại sao chép tất cả các ký tự cho đến ký tự phân cách thứ hai “CDOY” rồi lưu trữ chúng trong vùng Buffer (vùng lưu trữ dữ liệu tạm thời, thường lưu trữ ở bộ nhớ tạm RAM).

Tiếp theo, phần mềm độc hại phân tích cú pháp các ký tự này, chuyển đổi chúng từ giá trị chuỗi thành giá trị hex. Sau đó, giải mã chuỗi bằng bảng thay thế charcode được mã hóa cứng, mỗi byte từ chuỗi đã phân tích cú pháp hoạt động như một chỉ mục trong bảng charcode, trỏ đến một byte có thể thay thế, do đó tạo thành một mảng byte hex mới.

Hình 4. Thuật toán giải mã

Hình 5. Bảng mã ký tự

Ngoài ra, thay vì kết nối với GitHub, CloudSorcerer cũng cố gắng lấy cùng dữ liệu từ địa chỉ hxxps://my[.]mail[.]ru/, đây là máy chủ lưu trữ ảnh đám mây của Nga. Tên của album ảnh chứa cùng một chuỗi hex.

Byte đầu tiên được giải mã của chuỗi hex là một giá trị cho biết phần mềm độc hại nên sử dụng dịch vụ đám mây nào. Ví dụ, nếu byte là “1”, CloudSorcerer sử dụng đám mây Microsoft Graph; nếu là “0” thì sử dụng đám mây Yandex.

Tùy thuộc vào giá trị chuỗi hex, phần mềm độc hại sẽ tạo ra một cấu trúc và thiết lập một offset cho Virtual Table (là một cơ chế quan trọng trong lập trình hướng đối tượng, được sử dụng trong việc xử lý với virtual function) chứa một tập hợp con các chức năng để tương tác với dịch vụ đám mây đã chọn.

Hình 6. Virtual Table cho Yandex và Microsoft

Tiếp theo, phần mềm độc hại kết nối với API đám mây bằng cách:

- Thiết lập kết nối ban đầu bằng InternetOpenA và InternetConnectA .

- Thiết lập tất cả các Header cần thiết và mã thông báo xác thực nhận được từ trang GitHub.

- Cấu hình đường dẫn API trong yêu cầu.

- Gửi yêu cầu bằng HttpSendRequestExA và kiểm tra lỗi phản hồi.

- Đọc dữ liệu từ đám mây bằng InternetReadFile.

Sau đó, CloudSorcerer tạo ra hai luồng riêng biệt: một luồng chịu trách nhiệm nhận dữ liệu từ Pipe và luồng còn lại chịu trách nhiệm gửi dữ liệu đến Pipe đó. Các luồng này tạo điều kiện trao đổi dữ liệu không đồng bộ giữa các mô-đun C2 và backdoor.

Cuối cùng, mô-đun C2 liên lạc với các dịch vụ đám mây bằng cách đọc dữ liệu, nhận các lệnh được mã hóa, giải mã chúng bằng bảng mã ký tự và gửi chúng qua Pipe được đặt tên đến mô-đun backdoor. Ngược lại, nó nhận kết quả thực hiện lệnh hoặc dữ liệu được trích xuất từ ​​mô-đun backdoor và ghi chúng vào đám mây.

CƠ SỞ HẠ TẦNG

Trang GitHub được tạo vào ngày 7/5/2024 và 2 kho lưu trữ đã được fork (một tính năng trên GitHub cho phép người dùng tạo một bản sao của một kho lưu trữ từ người dùng khác về tài khoản của mình) vào cùng một ngày. Vào ngày 13/5/2024, một kho lưu trữ khác đã được fork và không có tương tác nào nữa với GitHub xảy ra. Các kho lưu trữ đã được fork vẫn được giữ nguyên. Tên của kho lưu trữ C2: “Alina Egorova” là tên phụ nữ Nga phổ biến. Tuy nhiên, ảnh trên trang GitHub là ảnh một người đàn ông.

DIỄN BIẾN LIÊN QUAN

Công ty an ninh mạng Proofpoint (Mỹ) cho biết họ đã phát hiện một chiến dịch mạng nhắm vào một tổ chức có trụ sở tại Mỹ, mô phỏng theo chiến thuật của phần mềm độc hại CloudSorcerer. Công ty đang theo dõi hoạt động này với tên gọi là UNK_ArbitraryAcrobat.

Vụ tấn công được phát hiện vào cuối tháng 5/2024, được cho là đã sử dụng một tài khoản freemail mạo danh một tổ chức nghiên cứu nổi tiếng của Mỹ và lợi dụng lời mời tham dự sự kiện giả mạo làm mồi nhử để đánh lừa người nhận tải xuống tệp lưu trữ ZIP được lưu trữ trên acrobat-inst[.]com.

Công ty cho biết: “Nếu tệp ZIP được tải xuống và mở ra, người dùng sẽ thấy một thư mục và ba tệp LNK, tất cả đều có thể được sử dụng để bắt đầu chuỗi hoạt động độc hại. Tệp LNK sẽ khởi chạy PDF hoặc Word được nhúng trong thư mục, sau đó đổi tên nhiều thành phần khác nhau trong thư mục thành tên mới, rồi khởi chạy tệp thực thi được nhúng”.

Nhà nghiên cứu về mối đe dọa của Proofpoint, ông Greg Lesnewich cho rằng những phát hiện mới nhất cho thấy kẻ tấn công đang sử dụng các kỹ thuật lừa đảo trực tuyến để xâm nhập vào hệ thống mạng mục tiêu, mặc dù không thể loại trừ khả năng sử dụng các phương pháp phân phối khác. Hiện tại chưa có bằng chứng nào cho thấy các tin tặc đang nhắm mục tiêu vào bất kỳ điều gì ngoài hệ điều hành Windows.

KẾT LUẬN

CloudSorcerer là một phần mềm độc hại tinh vi nhắm vào các thực thể Chính phủ Nga. Việc sử dụng các dịch vụ đám mây như Microsoft Graph, Yandex Cloud và Dropbox cho cơ sở hạ tầng C2, cùng với GitHub cho các giao tiếp C2 ban đầu, cho thấy một cách tiếp cận được lên kế hoạch tương đối tỉ mỉ đối với hoạt động gián điệp mạng. Khả năng điều chỉnh hành vi của phần mềm độc hại một cách linh hoạt dựa trên tiến trình mà nó đang chạy, cùng với việc sử dụng giao tiếp liên tiến trình phức tạp thông qua các Pipe, càng làm nổi bật thêm sự tinh vi của nó.

Hồng Đạt

(Tổng hợp)

Tin cùng chuyên mục

Tin mới