Giải mã phần mềm gián điệp LianSpy nhắm mục tiêu vào người dùng Nga
Chi tiết kỹ thuật
Ban đầu, LianSpy xác định xem nó có đang chạy như một ứng dụng hệ thống hay không, nếu có ứng dụng sẽ tự động nhận được các quyền cần thiết. Trường hợp còn lại, LianSpy sẽ yêu cầu các quyền như thông báo, hoạt động nền, danh bạ, nhật ký cuộc gọi,...
Sau khi được cấp quyền, phần mềm gián điệp sẽ tự động kiểm tra để xác định rằng nó không chạy trong môi trường gỡ lỗi (debug). Tiếp đó, LianSpy thiết lập cấu hình với các giá trị được xác định trước và lưu trữ dữ liệu này dưới dạng một tập hợp các cặp khóa key-value cục bộ bằng SharedPreferences, một cơ chế lưu trữ dữ liệu ứng dụng thường được sử dụng để lưu trữ cài đặt ứng dụng.
Cấu hình này vẫn tồn tại khi thiết bị khởi động lại và sử dụng các khóa integer được liên kết với các cài đặt phần mềm gián điệp cụ thể trong SharedPreferences. Danh sách chi tiết các tham số cấu hình, bao gồm mô tả và giá trị mặc định, được thể hiện qua Bảng 1.
Bảng 1. Mô tả các tham số cấu hình
Sau khi được kích hoạt, phần mềm gián điệp ẩn biểu tượng của nó và đăng ký một bộ thu phát sóng tích hợp để nhận lệnh từ hệ thống. Bộ thu này kích hoạt nhiều hoạt động độc hại khác nhau, chẳng hạn như chụp màn hình thông qua API media, chụp ảnh màn hình với tư cách là người dùng root, đánh cắp dữ liệu và cập nhật cấu hình của nó.
Hình 1. LianSpy đăng ký một máy thu phát sóng độc hại
Để cập nhật cấu hình phần mềm gián điệp, LianSpy tìm kiếm các tệp so khớp với biểu thức chính quy “^frame_[.]+\\[.]png$” trên dịch vụ đám mây Yandex Disk của tác nhân đe dọa sau mỗi 30 giây. Nếu tìm thấy, tệp sẽ được tải xuống thư mục dữ liệu nội bộ của ứng dụng.
Sau đó, phần mềm gián điệp giải mã lớp phủ (dữ liệu được ghi sau khi kết thúc payload) trong tệp đã tải xuống bằng khóa AES được mã hóa cứng. Cuối cùng, trình cập nhật cấu hình tìm kiếm payload đã giải mã để xác định một tập hợp các chuỗi substring, mỗi chuỗi substring này sẽ sửa đổi cấu hình của LianSpy. Danh sách đầy đủ các tùy chọn khả dụng được thể hiện trong Bảng 2.
Bảng 2. Mô tả các chuỗi substring
Dữ liệu thu thập của nạn nhân được lưu trữ mã hóa trong bảng SQL “Con001”, bảng này cũng chứa nhiều loại bản ghi (thông tin thiết bị, danh sách liên lạc, nhật ký cuộc gọi,…) và hàm băm SHA-256 của nó. Dữ liệu được mã hóa bằng cách sử dụng cách thức sau:
- Khóa AES để mã hóa dữ liệu được tạo ra bằng cách sử dụng trình tạo số giả ngẫu nhiên an toàn (PRNG). Phương pháp này ngăn chặn các cuộc tấn công dựa trên thời gian có khả năng bị khai thác bởi các bên không được ủy quyền.
- Khóa RSA công khai được mã hóa cứng nhúng trong phần mềm gián điệp sẽ mã hóa khóa AES.
Chương trình mã hóa mạnh mẽ này đảm bảo rằng chỉ kẻ tấn công sở hữu khóa RSA riêng tương ứng mới có thể giải mã dữ liệu bị đánh cắp.
Tính năng tàng hình
LianSpy sử dụng các kỹ thuật trốn tránh tinh vi không theo quy tắc để không bị phát hiện. Để thực hiện điều này, các biến thể của LianSpy ngụy trang thành ứng dụng Alipay hoặc dịch vụ hệ thống.
Từ phiên bản Android 12 đã giới thiệu tính năng chỉ báo quyền riêng tư, tính năng này hiển thị biểu tượng thanh trạng thái nếu dữ liệu nhạy cảm đang được truy cập, ví dụ như khi màn hình đang được ghi lại. Tuy nhiên, các nhà phát triển LianSpy đã thay đổi để bỏ qua biện pháp bảo vệ này bằng cách thêm giá trị “cast” vào tham số cài đặt bảo mật Android “Icon_blacklist”, ngăn không cho biểu tượng thông báo xuất hiện trên thanh trạng thái.
LianSpy có thể chụp ảnh màn hình bằng lệnh “screencap system”, vốn thường được sử dụng để gỡ lỗi, nhưng có thể truy cập bằng quyền root. Lệnh này không để lại dấu vết chụp ảnh màn hình, cho phép kẻ tấn công bí mật chụp nội dung màn hình.
Phần mềm gián điệp này tận dụng các dịch vụ đám mây hợp pháp, khiến hoạt động web độc hại từ thiết bị bị xâm phạm hầu như rất khó phát hiện.
LianSpy mã hóa dữ liệu đã rò rỉ bằng một chương trình mã hóa mạnh mẽ. Việc xác định nạn nhân vẫn không thể thực hiện được ngay cả khi thông tin đăng nhập Yandex Disk bị xâm phạm trong quá trình phân tích APK.
Ngoài ra, LianSpy sử dụng su binary với tên đã sửa đổi để có được quyền truy cập gốc. Các mẫu phần mềm độc hại mà Kaspersky phân tích cố gắng định vị mu binary trong các thư mục su mặc định. Điều này cho thấy nỗ lực trốn tránh phát hiện trên thiết bị của nạn nhân. Việc có được quyền siêu người dùng với sự phụ thuộc mạnh mẽ như vậy vào nhị phân đã sửa đổi cho thấy phần mềm gián điệp có khả năng đã được phân phối thông qua một lỗ hổng khai thác chưa được vá trước đó hoặc quyền truy cập thiết bị vật lý.
Cơ sở hạ tầng
LianSpy không có bất kỳ cơ sở hạ tầng riêng nào. Thay vào đó, tác nhân đe dọa sử dụng Yandex Disk để thu thập dữ liệu bị đánh cắp và lưu trữ các lệnh cấu hình. Dữ liệu nạn nhân được tải lên một thư mục Yandex Disk riêng biệt.
Ngoài việc cập nhật cấu hình, LianSpy giao tiếp với máy chủ C2 của nó là một chiều, không có lệnh nào gửi đến. Phần mềm gián điệp này tự động thực hiện kiểm tra cập nhật và trích xuất dữ liệu dựa trên cấu hình hiện tại của nó.
Thông tin đăng nhập Yandex Disk có thể được cập nhật từ URL Pastebin được mã hóa cứng, có thể thay đổi tùy theo các biến thể phần mềm độc hại khác nhau.
Nạn nhân
Do các cụm từ khóa được sử dụng để lọc thông báo một phần bằng tiếng Nga và một số cấu hình mặc định của các biến thể LianSpy bao gồm tên gói cho các ứng dụng nhắn tin phổ biến ở Nga, các nhà nghiên cứu cho rằng phần mềm gián điệp này nhắm vào người dùng ở quốc gia này. Dữ liệu từ xa KSN của Kaspersky cũng cho thấy người dùng Nga đã trở thành nạn nhân của các cuộc tấn công LianSpy.
Kết luận
Phần mềm gián điệp Android LianSpy thể hiện một số khả năng đáng chú ý. Ngoài các chiến thuật gián điệp chung như thu thập nhật ký cuộc gọi và danh sách ứng dụng, nó còn tận dụng các đặc quyền gốc để ghi lại màn hình bí mật và khả năng trốn tránh phát hiện.
Bằng cách tận dụng các nền tảng hợp pháp như Yandex Disk và dịch vụ Pastebin để trích xuất dữ liệu và giao tiếp C2, đây được xem là mối đe dọa khá tinh vi. Phần mềm gián điệp này không có sự chồng chéo với các chiến dịch phần mềm độc hại đang diễn ra nhắm vào người dùng Nga trước đây.
Đức Hoàng (Tổng hợp)