Phân tích phần mềm độc hại DinodasRAT trên Linux
Tổng quan về DinodasRAT
Vào đầu tháng 10/2023, các nhà nghiên cứu của Kaspersky đã phát hiện ra phiên bản mới của DinodasRAT trên Linux và cho rằng phiên bản này (V10) có thể đã bắt đầu hoạt động từ năm 2022, mặc dù biến thể Linux đầu tiên được biết đến (V7) vẫn chưa được mô tả công khai, đã có từ năm 2021.
Phiên bản DinodasRAT trên Linux chủ yếu nhắm vào các bản phân phối dựa trên Red Hat và Ubuntu. Khi được thực thi lần đầu tiên, phần mềm độc hại sẽ tạo một tệp ẩn trong cùng thư mục với tệp thực thi, theo định dạng “.[executable_name].mu”. Tệp này được sử dụng như một giá trị mutex để đảm bảo phần mềm độc hại chỉ chạy một phiên bản và cho phép nó tiếp tục nếu có thể tạo thành công tệp này. Backdoor DinodasRAT duy trì sự bền bỉ và được thực thi trong mã nguồn mô tả Hình 1.
Hình 1. Đoạn mã của backdoor DinodasRAT
Backdoor này thiết lập tính bền vững với 3 bước. Đầu tiên, phần mềm độc hại thực thi mà không có bất kỳ đối số nào, khiến nó chạy ở chế độ nền bằng cách gọi hàm “daemon” từ Linux. Sau đó, DinodasRAT thiết lập tính bền vững trên hệ thống bị nhiễm bằng cách sử dụng các tập lệnh khởi động SystemV hoặc SystemD. Cuối cùng, DinodasRAT thực thi lại chính nó với ID tiến trình gốc (PPID) làm đối số: Tiến trình mới được tạo (child) tiếp tục lây nhiễm backdoor trong khi tiến trình parent chờ đợi. Kỹ thuật này giúp cho DinodasRAT ẩn mình và khó bị phát hiện hơn bằng các công cụ giám sát và gỡ lỗi.
Tạo và duy trì ID nạn nhân
Trước khi thiết lập liên lạc với máy chủ điều khiển và ra lệnh (C2), backdoor sẽ thu thập thông tin về máy bị nhiễm và thời gian lây nhiễm để tạo ra mã định danh duy nhất. Đáng chú ý, những kẻ tấn công không thu thập bất kỳ dữ liệu cụ thể nào của người dùng để tạo UID này. Các giá trị UID thường bao gồm:
- Ngày bị lây nhiễm.
- Hàm băm MD5 của đầu ra lệnh dmidecode.
- Số được tạo ngẫu nhiên dưới dạng ID.
- Phiên bản backdoor.
Mã định danh duy nhất có định dạng như sau: Linux_{DATE} _{HASH} _{RAND_NUM} _{VERSION} .
Hình 2. Tạo mã định danh duy nhất trên máy nạn nhân
Tiếp theo, phần mềm độc hại lưu trữ tất cả thông tin cục bộ về ID, đặc quyền của nạn nhân và các chi tiết liên quan khác trong một tệp ẩn có tên là “/etc/.netc.conf”. Tệp này chứa siêu dữ liệu được thu thập hiện tại của backdoor. Nếu tệp không tồn tại, DinodasRAT sẽ tạo nó.
Hình 3. Cấu hình DinodasRAT trong tệp “/etc/.netc.conf”
DinodasRAT cũng đảm bảo rằng mọi quyền truy cập vào tệp này không cập nhật thời gian “access”, chứa dấu thời gian (timestamp) truy cập của một tệp nhất định trong hệ thống tệp. Nó thực hiện điều này bằng cách sử dụng lệnh “touch” với tham số “-d” để sửa đổi siêu dữ liệu này.
Hình 4. Sửa đổi thời gian truy cập
Hình 5. Thời gian truy cập đã được sửa đổi trong tệp thực thi của backdoor
Phiên bản DinodasRAT Linux tận dụng hai phiên bản của trình quản lý dịch vụ Linux để thiết lập tính bền vững trên hệ thống bị ảnh hưởng, đó là Systemd và SystemV. Khi phần mềm độc hại được khởi chạy, một hàm sẽ được gọi để xác định bản phân phối Linux trên máy nạn nhân. Hiện tại có hai bản phân phối mà các tin tặc nhắm tới dựa trên thông số “/proc/version” là RedHat và Ubuntu 16/18.
Tuy nhiên, phần mềm độc hại có thể lây nhiễm bất kỳ bản phân phối nào hỗ trợ một trong các phiên bản quản lý dịch vụ hệ thống trên. Sau khi hệ thống được nhận dạng, nó sẽ cài đặt một tập lệnh init phù hợp để cung cấp tính bền vững cho DinodasRAT. Tập lệnh này được thực thi sau khi quá trình thiết lập mạng hoàn tất và khởi chạy backdoor.
Hình 6. Đăng ký dịch vụ SystemD
Đối với các hệ thống RedHat và Ubuntu, các tập lệnh khởi tạo dịch vụ được sử dụng để kiểm tra tính bền vững xem có sự hiện diện của tệp nhị phân chkconfig hay không. Đây là một cách để chỉ ra rằng việc khởi tạo được thực hiện với SysV thay vì Systemd. Nếu không tồn tại, phần mềm độc hại sẽ mở hoặc tạo tệp tập lệnh “/etc/rc.d/rc.local” và tự thêm nó vào chuỗi thực thi backdoor trong quá trình khởi tạo hệ thống. Nếu chkconfig tồn tại, SysV sẽ được ngầm định và phần mềm độc hại sẽ tạo ra các tập lệnh trong tệp “/etc/init.d”.
Kết nối máy chủ C2
Phiên bản DinodasRAT trên Linux giao tiếp với máy chủ C2 giống như phiên bản lây nhiễm trên Windows. Nó giao tiếp qua giao thức TCP hoặc UDP. Trong đó, tên miền C2 được mã hóa cứng như Hình 7.
Hình 7. Máy chủ và cổng C2 được mã hóa cứng
DinodasRAT có một khoảng thời gian nhất định để gửi thông tin trở lại máy chủ C2, mặc dù đây không phải là khoảng thời gian cố định cho tất cả người dùng hoặc tất cả các kết nối.
Nếu là tài khoản root (EUID = 0), DinodasRAT sẽ không chờ để gửi thông tin trở lại C2. Trong trường hợp không phải là tài khoản siêu người dùng (superuser) có cấu hình được đặt thành checkroot, nó sẽ đợi hai phút cho thời gian chờ “short” (mặc định) và 10 giờ cho thời gian chờ “long”. Thời gian chờ đợi “long” được kích hoạt khi có kết nối từ xa đến máy chủ bị nhiễm đến từ một trong các địa chỉ IP được cấu hình C2.
Mã hóa
Để mã hóa và giải mã thông tin liên lạc giữa phần mềm độc hại và máy chủ C2, cũng như mã hóa dữ liệu, DinodasRAT sử dụng các chức năng thư viện libqq qq_crypt của Pidgin. Thư viện này sử dụng thuật toán TEA ở chế độ CBC để mã hóa và giải mã dữ liệu, giúp việc chuyển đổi giữa các nền tảng khá dễ dàng.
Cơ sở hạ tầng
Các nhà nghiên cứu đã xác định được một địa chỉ IP phân giải cho cả tên miền C2 của các biến thể Windows và Linux. Phiên bản Windows của DinodasRAT sử dụng tên miền update[.]microsoft-settings[.]com, phân giải thành địa chỉ IP 199[.]231[.]211[.]19. Địa chỉ IP này cũng phân giải thành tên miền update[.]centos-yum[.]com.
Theo thống kê của Kaspersky, các nạn nhân bị ảnh hưởng nhiều nhất tới từ Trung Quốc, Đài Loan, Thổ Nhĩ Kỳ và Uzbekistan.
Báo cáo liên quan
Hãng bảo mật Check Point trong một phân tích về DinodasRAT đã mô tả phần mềm độc hại này ban đầu dựa trên một dự án nguồn mở có tên SimpleRemoter, một công cụ truy cập từ xa có nền tảng là Gh0st RAT. Công ty an ninh mạng của Israel đang theo dõi biến thể Linux dưới tên Linodas.
Check Point cho rằng phiên bản mới nhất của DinodasRAT còn có khả năng tạo nhiều luồng để thực hiện giám sát hệ thống, tải xuống một mô-đun bổ sung có thể can thiệp vào hoạt động của một số tệp nhị phân nhất định trong hệ thống và loại bỏ các phiên reverse shell không hoạt động trong gần một giờ.
Mục đích chính của mô-đun phụ trợ được gọi là mô-đun bộ lọc hoạt động như một proxy thực thi và kiểm soát đầu ra của nó, cho phép các tác nhân đe dọa thu thập thông tin từ máy chủ một cách hiệu quả và trốn tránh sự phát hiện hiệu quả hơn.
Check Point cho biết: “Sự phức tạp và các khả năng của phần mềm độc hại DinodasRAT nhấn mạnh các mối đe dọa tinh vi của các tin tặc trong việc nhắm mục tiêu vào các máy chủ Linux”.
Văn Kiên (Tổng hợp)