Khám phá Trojan ngân hàng Coyote

07:00 | 11/03/2024 | HACKER / MALWARE
Mới đây, các nhà nghiên cứu của hãng bảo mật Kaspersky (Nga) đã phát hiện một Trojan ngân hàng tinh vi mới đánh cắp thông tin tài chính nhạy cảm có tên là Coyote, mục tiêu là người dùng của hơn 60 tổ chức ngân hàng, chủ yếu từ Brazil. Điều chú ý là chuỗi lây nhiễm phức tạp của Coyote sử dụng nhiều kỹ thuật tiên tiến khác nhau, khiến nó khác biệt với các trường hợp lây nhiễm Trojan ngân hàng trước đó. Phần mềm độc hại này sử dụng trình cài đặt Squirrel để phân phối, tận dụng NodeJS và ngôn ngữ lập trình đa nền tảng tương đối mới có tên Nim làm trình tải (loader) trong chuỗi lây nhiễm. Bài viết này sẽ phân tích hoạt động và khám phá khả năng của Trojan ngân hàng này.

Tổng quan

Quá trình hoạt động của Coyote bao gồm ứng dụng NodeJS thực thi mã JavaScript phức tạp, trình tải Nim giải nén tệp thực thi .NET và cuối cùng là thực thi một Trojan. Coyote bỏ qua quá trình làm rối mã và sử dụng phương pháp làm xáo trộn chuỗi bằng mã hóa AES để tăng khả năng ẩn giấu trên máy nạn nhân. Mục tiêu của Trojan phù hợp với hành vi điển hình của Trojan ngân hàng, đó là theo dõi ứng dụng hoặc trang web ngân hàng cụ thể được truy cập.

Ngày nay, việc sử dụng ngôn ngữ lập trình Delphi hoặc trình cài đặt MSI là xu hướng chủ yếu của các tác giả phần mềm độc hại. Với Coyote, Trojan này có cách thức hoạt động với đôi chút sự khác biệt. Thay vì sử dụng trình cài đặt MSI, nhà phát triển của Coyote đã lựa chọn một công cụ tương đối mới để cài đặt và cập nhật các ứng dụng máy tính để bàn Windows, đó là Squirrel. Theo các nhà nghiên cứu, Squirrel sử dụng NuGet để tạo các gói cài đặt và cập nhật.

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

Bằng cách sử dụng Squirrel, Coyote ẩn trình tải giai đoạn ban đầu của nó bằng cách hiển thị dưới dạng trình đóng gói cập nhật (Hình 2).

Hình 2. Nội dung của trình cài đặt Squirrel độc hại

Tập lệnh tải NodeJS

Khi Squirrel được thực thi, phần mềm độc hại sẽ chạy một ứng dụng NodeJS được biên dịch bằng Electron. Ứng dụng này thực thi mã JavaScript bị xáo trộn (preload.js) có chức năng chính là sao chép tất cả các tệp thực thi được tìm thấy trong thư mục temp sang thư mục captures của người dùng. Sau đó nó chạy một ứng dụng đã được ký số từ thư mục đó.

Hình 3. Cấu trúc của NodeJS

Một số tệp thực thi được liên kết với trình duyệt Chrome và OBS Studio. Trong tất cả các trường hợp được các nhà nghiên cứu Kaspersky phân tích, quá trình tải DLL được thực hiện bên trong thư viện libcef.dll.

Trình tải Nim

Một điểm đặc biệt trong chuỗi lây nhiễm là việc sử dụng Nim, một ngôn ngữ lập trình đa nền tảng tương đối mới để thực hiện quá trình tải ở giai đoạn cuối cùng. Điều này phù hợp với xu hướng được Kaspersky quan sát, trong đó tội phạm mạng sử dụng các ngôn ngữ đa nền tảng và ít phổ biến hơn, thể hiện khả năng thích ứng của chúng với các công nghệ mới nhất. Mục tiêu của trình tải là giải nén tệp .NET và thực thi nó trong bộ nhớ bằng CLR.

Hình 4. Giải nén tệp .NET

Cần lưu ý rằng cùng một điểm truy cập, tiến trình obs-browser-page.exe được sử dụng cho mỗi lần khởi động lại máy tính, đóng vai trò như một tác nhân duy trì sự hiện diện. Sau tất cả các bước trên, Coyote sẽ được thực thi thành công. Trojan này không thực hiện bất kỳ kỹ thuật mã hóa mã nào và chỉ sử dụng kỹ thuật mã hóa chuỗi bằng mã hóa AES.

Hình 5. Xây dựng bảng chuỗi được mã hóa

Để truy xuất một chuỗi cụ thể, phần mềm độc hại gọi một phương thức giải mã với chỉ mục (index) chuỗi làm tham số. Phương thức giải mã hoạt động bằng cách tạo một bảng dữ liệu được mã hóa bằng base64, với16 byte đầu tiên của mỗi mục dữ liệu được giải mã đóng vai trò là Vectơ khởi tạo (IV - Initialization Vector), trong khi phần còn lại là dữ liệu được mã hóa sau này được sử dụng trong quy trình giải mã AES.

Hình 6. Cấu trúc dữ liệu được mã hóa

Khóa được tạo ngẫu nhiên bởi mỗi tệp thực thi và thuật toán giải mã AES sử dụng giao diện mã hóa .NET chính thức. Với cách tiếp cận này, đối với mỗi quyền truy cập chuỗi mà Coyote cần, nó sẽ tìm kiếm bên trong bảng và giải mã từng chuỗi bằng IV tùy chỉnh.

Sự kiên trì

Coyote đạt được sự kiên trì bằng cách lạm dụng các tập lệnh đăng nhập Windows; trước tiên, nó sẽ kiểm tra xem đường dẫn: HKCU\Environment\UserInitMprLogonScript có tồn tại hay không và nếu có, phần mềm độc hại sẽ chèn giá trị registry làm đường dẫn đầy đủ đến một ứng dụng đã được ký số, trong trường hợp này là obs-browser-page.exe.

Mục tiêu hoạt động của Coyote phù hợp với hành vi điển hình của một Trojan ngân hàng, thực hiện giám sát tất cả các ứng dụng đang mở trên hệ thống của nạn nhân và chờ ứng dụng hoặc trang web ngân hàng cụ thể được truy cập.

Hình 7. Quy trình giám sát ứng dụng

Kaspersky đã xác định được ít nhất 61 ứng dụng liên quan, tất cả đều có nguồn gốc từ Brazil. Điều này cho thấy rõ ràng rằng Coyote là một Trojan ngân hàng nhắm mục tiêu chính đến các nạn nhân tại quốc gia Nam Mỹ này.

Giao tiếp với máy chủ C2

Khi bất kỳ ứng dụng nào liên quan đến ngân hàng được sử dụng, Trojan Coyote sẽ liên hệ với máy chủ điều khiển và ra lệnh (C2) để cung cấp thông tin này. Sau đó, C2 sẽ phản hồi bằng nhiều hành động khác nhau trên máy, từ ghi nhật ký thao tác bàn phím cho đến chụp ảnh màn hình.

Trojan thiết lập liên lạc với máy chủ C2 bằng các kênh SSL với lược đồ xác thực lẫn nhau. Điều này ngụ ý rằng Coyote sở hữu chứng thư số từ máy chủ do kẻ tấn công kiểm soát và sử dụng nó trong quá trình kết nối. Sau khi phần mềm độc hại xác minh rằng kết nối thực sự là của kẻ tấn công, nó sẽ tiến hành gửi thông tin được thu thập từ máy bị nhiễm và ứng dụng ngân hàng đến máy chủ. Các thông tin được truyền đi bao gồm:

  • Tên máy tính.
  • GUID được tạo ngẫu nhiên.
  • Ứng dụng ngân hàng đang được sử dụng.

Với những thông tin này, kẻ tấn công sẽ gửi gói phản hồi chứa các hành động cụ thể. Để xử lý những hành động đó, kẻ tấn công gửi một chuỗi có dấu phân cách ngẫu nhiên. Sau đó, mỗi vị trí của chuỗi sẽ được chuyển đổi thành một danh sách, với mục nhập đầu tiên hiển thị loại lệnh.

Để xác định lệnh mong muốn, phần mềm độc hại sẽ kiểm tra độ dài của chuỗi trong tham số đầu tiên, đây là một chuỗi ngẫu nhiên. Nói cách khác, sự khác biệt duy nhất giữa các lệnh là kích thước của chuỗi. Trojan cũng có thể yêu cầu mật khẩu thẻ ngân hàng cụ thể và tạo lớp phủ lừa đảo để lấy thông tin xác thực của người dùng.

Khuyến nghị phòng tránh

Để bảo vệ khỏi các mối đe dọa đánh cắp thông tin tài chính, các nhà nghiên cứu khuyến nghị:

  • Chỉ cài đặt các ứng dụng từ các nguồn đáng tin cậy.
  • Không cho phép và phê duyệt các quyền mà ứng dụng yêu cầu mà không đảm bảo trước rằng chúng phù hợp với bộ tính năng của ứng dụng.
  • Không mở các liên kết hoặc tài liệu từ các tin nhắn và email đáng ngờ.
  • Sử dụng đồng bộ, kết hợp nhiều giải pháp bảo mật, như chương trình anti-virus và các ứng dụng sẵn có trên máy tính.

Kết luận

Coyote đánh dấu một sự thay đổi đáng chú ý về đặc điểm chung của một Trojan ngân hàng. Không giống như các phần mềm độc hại trước đó, thường sử dụng các ngôn ngữ cũ hơn như Delphi, các nhà phát triển của Coyote có kỹ năng về các công nghệ hiện đại như NodeJS, .NET và các phương pháp đóng gói tiên tiến.

Việc bổ sung Nim làm trình tải sẽ làm tăng thêm độ phức tạp của Trojan. Sự phát triển này nêu bật mức độ phức tạp ngày càng tăng trong bối cảnh mối đe dọa, đồng thời cho thấy các tin tặc đang thích nghi và sử dụng các ngôn ngữ cũng như công cụ mới nhất trong các chiến dịch độc hại của họ như thế nào.

“Trong ba năm qua, số vụ tấn công Trojan ngân hàng gần như tăng gấp đôi, đạt hơn 18 triệu vào năm 2023. Điều này cho thấy các thách thức bảo mật trực tuyến đang gia tăng” Fabio Assolini, người đứng đầu Nhóm nghiên cứu và Phân tích toàn cầu (GReAT) tại Kaspersky đánh giá.

TÀI LIỆU THAM KHẢO

https://securelist.com/coyote-multi-stage-banking-trojan/111846/

https://www.kaspersky.com/about/press-releases/2024_coyote-ugly-kaspersky-unveils-banking-trojan-targeting-over-60-institutions

 

Thái Bảo

(Tổng hợp)

Tin cùng chuyên mục

Tin mới