Giải mã chiến dịch phân phối phần mềm độc hại PikaBot của tin tặc Water Curupia

15:46 | 06/02/2024

Các nhà nghiên cứu của hãng bảo mật Trend Micro phát hiện các tác nhân đe dọa Water Curupira (một nhánh của nhóm tin tặc Black Basta) đang triển khai chiến dịch phân phối phần mềm độc hại PikaBot như một phần của chiến dịch email spam trong suốt năm 2023 vừa qua. Bài viết này sẽ phân tích hoạt động tấn công trong chiến dịch PikaBot cùng khuyến nghị về các biện pháp phòng tránh trước các mối đe dọa lừa đảo này.

Tổng quan

Pikabot là một loại phần mềm độc hại được các tác nhân đe dọa tích cực sử dụng trong các chiến dịch thư rác mà Trend Micro đã theo dõi trong quý đầu tiên của năm 2023. Thời gian trước đó, các nhà nghiên cứu từng ghi nhận những điểm tương đồng mạnh mẽ của Pikabot với Qakbot - Phần mềm độc hại đã bị các cơ quan thực thi pháp luật gỡ bỏ vào tháng 8/2023. Số lượng chiến dịch lừa đảo liên quan đến Pikabot đã gia tăng trong quý cuối cùng của năm 2023, trùng với thời điểm Qakbot bị đánh sập, điều này gợi ý về nhận định Pikabot có thể là sự thay thế của phần mềm độc hại Qakbot.

Các nhà phát triển Pikabot đã triển khai các chiến dịch lừa đảo, nhắm mục tiêu vào nạn nhân thông qua hai thành phần của nó, một trình tải và một mô-đun core, cho phép truy cập từ xa trái phép và thực thi các lệnh tùy ý thông qua kết nối đã thiết lập với máy chủ điều khiển và ra lệnh (C2) của họ. Pikabot thực thi nhiều giai đoạn phức tạp với trình tải và mô-đun core trong cùng một tệp, cũng như shellcode để giải mã một tệp DLL khác từ payload của phần mềm độc hại. Bên cạnh đó, Pikabot còn có quyền truy cập ban đầu vào máy tính của nạn nhân thông qua các email spam có chứa kho lưu trữ hoặc tệp đính kèm PDF.

Nhìn chung, các tin tặc Water Curupira tiến hành các chiến dịch độc hại với mục đích chèn các backdoor như Cobalt Strike, dẫn đến các cuộc tấn công mã độc tống tiền Black Basta (trùng hợp thay, Black Basta cũng quay trở lại hoạt động vào tháng 9/2023). Kẻ tấn công đã thực hiện một số chiến dịch email spam DarkGate và chiến dịch IcedID trong những tuần đầu của quý 3/2023, nhưng kể từ đó đã chuyển hướng độc quyền sang Pikabot. 

Hình 1. Chuỗi lây nhiễm của Pikabot

Truy cập ban đầu qua email

Các tin tặc gửi những email này thông qua kỹ thuật chiếm quyền điều khiển, đây là một kỹ thuật mà trong đó kẻ tấn công sử dụng các chuỗi email hiện có (có thể bị đánh cắp từ các nạn nhân trước đó) và tạo các email giả mạo để đánh lừa người nhận tin rằng chúng là hợp pháp, từ đó có thể khiến các nạn nhân bị lây nhiễm khi mở các tệp đính kèm độc hại.

Ngoài ra, các tin tặc gửi những email này bằng địa chỉ (được tạo thông qua tên miền mới hoặc dịch vụ email miễn phí) với những tên có thể tìm thấy trong chuỗi email gốc bị tác nhân độc hại chiếm đoạt. Email chứa hầu hết nội dung gốc, bao gồm cả chủ đề email, nhưng thêm một thông báo ngắn ở trên cùng hướng dẫn người nhận mở tệp đính kèm email. Đây là một kho lưu trữ ZIP được bảo vệ bằng mật khẩu chứa tệp IMG hoặc PDF. Thành phần độc hại bao gồm mật khẩu trong thông báo email.

Lưu ý rằng tên của tệp đính kèm và mật khẩu của nó khác nhau tùy theo từng nội dung của email. Trong khi đó, email chứa tệp PDF có thông báo ngắn hơn yêu cầu người nhận kiểm tra hoặc xem tệp đính kèm email.

Hình 2. Ví dụ về email có tệp đính kèm ZIP độc hại

Hình 3. Ví dụ về email có tệp đính kèm PDF độc hại

Giai đoạn đầu tiên của cuộc tấn công

Tệp lưu trữ đính kèm chứa JavaScript bị xáo trộn nghiêm trọng với kích thước tệp hơn 100 KB. Sau khi nạn nhân mở tệp, tập lệnh (script) này sẽ được thực thi bằng cmd.exe

Hình 4. Các tệp được giải nén vào kho lưu trữ đính kèm (.ZIP hoặc .IMG)

Hình 5. Lệnh JavaScript được giải mã

Nếu nỗ lực ban đầu không thành công, tập lệnh thực hiện các bước sau: Lặp lại một chuỗi được chỉ định tới bảng điều khiển và cố gắng thực hiện “ping” một mục tiêu đã chỉ định bằng chính chuỗi đó. Trong trường hợp lệnh ping không thành công, tập lệnh sẽ sử dụng Curl.exe để tải xuống payload Pikabot từ máy chủ bên ngoài, lưu tệp vào thư mục tạm thời của hệ thống.

Sau đó, tập lệnh thử lại lệnh ping. Nếu việc này cũng không thành công, tập lệnh sẽ sử dụng rundll32.exe để thực thi payload Pikabot đã tải xuống (hiện được xác định là tệp .dll) với tham số trích xuất là “Crash”. Chuỗi lệnh kết thúc bằng mã lệnh ciCf51U2FbrvK.

Trend Micro cho biết đã quan sát một chuỗi tấn công khác mà trong đó các tác nhân độc hại thực hiện một nỗ lực đơn giản hơn để phân phối payload. Nếu như trước đây, các kỹ thuật lừa đảo tương tự đã được thực hiện để đánh lừa nạn nhân tải xuống và thực thi các tệp đính kèm độc hại. Trong trường hợp này, các tệp đính kèm lưu trữ được bảo vệ bằng mật khẩu đã được triển khai, với mật khẩu có trong nội dung email.

Tuy nhiên, thay vì một tập lệnh độc hại, một tệp IMG đã được trích xuất từ ​​​​tệp đính kèm. Tệp này chứa hai tệp bổ sung là tệp LNK giả dạng tài liệu Word và tệp DLL, thực tế đây chính là payload Pikabot được trích xuất trực tiếp từ tệp đính kèm email.

Hình 6. Nội dung của tệp IMG

Trái ngược với tệp JavaScript được quan sát trước đó, chuỗi tấn công này duy trì cách tiếp cận đơn giản ngay cả trong khi thực thi payload. Khi nạn nhân bị dụ dỗ mở tệp LNK, tiến trình rundll32.exe sẽ thực thi payload Pikabot DLL bằng cách sử dụng tham số trích xuất “Limit”.

Nội dung của tệp PDF được ngụy trang trông giống như một tệp được lưu trữ trên Microsoft OneDrive để thuyết phục người nhận rằng tệp đính kèm là hợp pháp. Mục đích chính của nó là đánh lừa nạn nhân truy cập vào nội dung tệp PDF, đây là liên kết để tải xuống phần mềm độc hại.

Hình 7. Tệp PDF độc hại được ngụy trang trông giống như tệp đính kèm OneDrive, lưu ý lỗi chính tả của từ “Download”

Đáng chú ý, từ “Download” trong tệp này lại bị viết sai chính tả là “Dowland”. Khi người dùng chọn nút này để tải xuống, nó sẽ cố gắng truy cập một URL độc hại, sau đó tiến hành tải xuống tệp JavaScript độc hại (có thể giống với tệp JavaScript đã đề cập trước đó).

Việc phân phối payload Pikabot qua tệp đính kèm PDF là một bước phát triển gần đây hơn và chỉ mới diễn ra vào quý 4/2023. Các nhà nghiên cứu cũng đã phát hiện một biến thể bổ sung của trình tải xuống độc hại sử dụng các phương pháp làm xáo trộn liên quan đến việc xử lý mảng (array).

Hình 8. Các phần tử của mảng “_0x40ee” chứa URL tải xuống và các phương thức JavaScript được sử dụng để thực thi bổ sung

Các hàm lồng nhau sử dụng các phương pháp xử lý mảng bằng các lệnh “push” và “shift”, tạo ra sự phức tạp cho cấu trúc của mã và che giấu luồng của nó để cản trở việc phân tích. Sự hiện diện của nhiều URL tải xuống, việc tạo tự động các thư mục ngẫu nhiên bằng lệnh mkdir và sử dụng Curl.exe, như được quan sát trong tập lệnh trước, được gói gọn trong một mảng khác.

JavaScript sẽ chạy nhiều lệnh nhằm truy xuất payload độc hại từ các trang web bên ngoài khác nhau bằng Curl.exe, sau đó lưu trữ nó trong một thư mục ngẫu nhiên được tạo bằng mkdir.

Hình 9. Các lệnh truy xuất payload bằng Curl.exe

Tệp rundll32.exe sẽ tiếp tục đóng vai trò là cơ chế thực thi cho payload, kết hợp với tham số xuất của nó.

Hình 10. Thực thi payload bằng rundll32.exe

Payload Pikabot

Các nhà nghiên cứu đã phân tích tệp DLL từ ​​kho lưu trữ được hiển thị trong Hình 6 và nhận thấy nó là mẫu của tệp DLL 32-bit với 1515 lần trích xuất. Gọi hàm trích xuất của nó là “Limit”, tệp sẽ giải mã và thực thi shellcode để xác định xem tiến trình có đang được gỡ lỗi (debug) hay không bằng cách gọi Windows API NtQueryInformationProcess hai lần với cờ 0x7 (ProcessDebugPort) trong lệnh gọi đầu tiên và 0x1F (ProcessDebugFlags) trong lệnh gọi thứ hai. Shellcode này cũng giải mã một tệp DLL khác mà nó tải vào bộ nhớ và cuối cùng thực thi.

Hình 11. Shellcode gọi điểm vào của tệp DLL được giải mã

Tệp DLL được giải mã sẽ thực thi một quy trình chống phân tích khác bằng cách tải các thư viện không chính xác và các tệp rác khác để phát hiện sandbox. Hành vi này dường như được sao chép từ một bài viết GitHub công khai trên mạng.

Sau khi thực hiện quy trình chống phân tích, phần mềm độc hại tải một tập hợp hình ảnh PNG từ phần tài nguyên chứa một đoạn mã hóa của mô-đun core, sau đó giải mã chúng. Khi payload core đã được giải mã, Pikabot sẽ tạo một tiến trình  %System%\SearchProtocolHost và đưa mô-đun core vào đó. Phần mềm độc hại sử dụng các lệnh gọi hệ thống gián tiếp để ẩn việc thực thi này.

Hình 12. Tải hình ảnh PNG để xây dựng mô-đun core

Giải quyết các API cần thiết là một trong những hành động ban đầu của phần mềm độc hại. Bằng cách sử dụng hàm băm của từng API (0xF4ACDD8, 0x03A5AF65E và 0xB1D50DE4), Pikabot sử dụng hai hàm để lấy địa chỉ của ba API cần thiết là GetProcAddress, LoadLibraryA và HeapFree. Phần còn lại của các API đã sử dụng được xử lý bằng GetProcAddress với các chuỗi được giải mã. Các chuỗi thích hợp khác cũng được giải mã trong thời gian thực thi.

Hình 13. Khai thác API GetProcAddress và LoadLibrary

Mô-đun core Pikabot kiểm tra ngôn ngữ của hệ thống và dừng thực thi nếu đó là tiếng Nga hoặc tiếng Ukraine. Sau đó, mô-đun sẽ đảm bảo rằng chỉ có một phiên bản của chính nó đang chạy bằng cách tạo một mutex được mã hóa cứng, {A77FC435-31B6-4687-902D-24153579C738}.

Giai đoạn tiếp theo của mô-đun core liên quan đến việc lấy thông tin chi tiết về hệ thống của nạn nhân và chuyển tiếp chúng đến máy chủ C2. Dữ liệu thu thập sử dụng định dạng JSON, trong đó mọi mục dữ liệu đều sử dụng hàm wsprintfW. Dữ liệu bị đánh cắp được minh họa qua Hình 14.

Hình 14. Thông tin bị đánh cắp ở định dạng JSON trước khi mã hóa

Phần mềm độc hại Pikabot tạo một đường dẫn có tên và sử dụng nó để lưu trữ tạm thời thông tin bổ sung được thu thập bằng cách tạo các tiến trình sau:

  • whoami.exe /all
  • ipconfig.exe /all
  • netstat.exe -aon

Mỗi phần thông tin được trả về sẽ được mã hóa trước khi thực hiện tiến trình. Bên cạnh đó, danh sách các tiến trình đang chạy trên hệ thống cũng sẽ được tập hợp và mã hóa bằng cách gọi hàm CreateToolHelp32Snapshot và liệt kê các tiến trình thông qua Process32First và Process32Next .

Sau khi tất cả thông tin được thu thập, nó sẽ được gửi đến một trong các địa chỉ IP sau được gắn với URL cụ thể, “cervicobrachial/oIP7xH86DZ6hb?vermixUnintermixed=beatersVerdigrisy&backoff=9zFPSr”:

  • 70[.]34[.]209[.]101:13720
  • 137[.]220[.]55[.]190:2223
  • 139[.]180[.]216[.]25:2967
  • 154[.]61[.]75[.]156:2078
  • 154[.]92[.]19[.]139:2222
  • 158[.]247[.]253[.]155:2225
  • 172[.]233[.]156[.]100:13721

Máy chủ C2

Như đã đề cập, các tin tặc Water Curupira tiến hành các chiến dịch độc hại nhằm chèn các backdoor như Cobalt Strike, dẫn đến các cuộc tấn công mã độc tống tiền Black Basta. Chính sự liên kết này với phần mềm độc hại tinh vi như Black Basta đã khiến các chiến dịch Pikabot trở nên đặc biệt nguy hiểm.

Cuối cùng, các nhà nghiên cứu đã quan sát thấy các cụm đèn hiệu (beacon) Cobalt Strike riêng biệt với hơn 70 tên miền dẫn đến thực thi mã độc tống tiền Black Basta.

Khuyến nghị bảo mật

Để tránh trở thành nạn nhân của các mối đe dọa trực tuyến khác nhau như lừa đảo và phần mềm độc hại, người dùng nên cảnh giác với các email họ nhận được. Dưới đây là một số phương pháp về bảo mật email của người dùng.

  • Kiểm tra danh tính của người gửi. Địa chỉ email lạ, bất thường và tên người gửi không khớp cũng như email giả mạo là những dấu hiệu cho thấy người gửi có mục đích xấu.
  • Nếu email cho biết đến từ một công ty hợp pháp, người dùng hãy xác minh cả người gửi và nội dung email trước khi tải xuống tệp đính kèm hoặc chọn liên kết được nhúng.
  • Luôn cập nhật hệ điều hành và tất cả các phần mềm với các bản vá cập nhật bảo mật mới nhất.
  • Thường xuyên sao lưu dữ liệu quan trọng vào một vị trí bên ngoài và an toàn. Điều này đảm bảo rằng ngay cả khi trở thành nạn nhân của một cuộc tấn công lừa đảo, người dùng vẫn có thể khôi phục thông tin của mình.
  • Cách tiếp cận phòng thủ nhiều lớp có thể giúp các tổ chức bảo vệ các điểm truy cập có thể có vào hệ thống của họ (điểm cuối, email, web và mạng). Giải pháp bảo mật có thể phát hiện các thành phần độc hại và hành vi đáng ngờ, giúp bảo vệ an toàn dữ liệu cho doanh nghiệp.