TỔNG QUAN
SysJoker được công ty an ninh mạng Intezer phát hiện lần đầu vào tháng 01/2021, là backdoor đa nền tảng với nhiều biến thể dành cho Windows, Linux và Mac, với khả năng thu thập thông tin hệ thống và thiết lập liên lạc với máy chủ chỉ huy và kiểm soát (C2) của kẻ tấn công, bằng cách truy cập vào tệp văn bản được lưu trữ trên Google Drive có chứa URL được mã hóa cứng.
Khi điều tra các biến thể mới hơn của SysJoker được sử dụng trong các cuộc tấn công có chủ đích vào năm 2023, Check Point đã phát hiện ra một biến thể được viết bằng Rust, điều này cho thấy mã nguồn của phần mềm độc hại đã được chỉnh sửa lại hoàn toàn, trong khi vẫn duy trì các chức năng tương tự.
Đồng thời, kẻ tấn công cũng đã chuyển sang sử dụng OneDrive thay vì Google Drive để lưu trữ các URL động máy chủ C2. Sau khi thiết lập kết nối với máy chủ, phần mềm độc hại sẽ chờ các payload bổ sung tiếp theo được thực thi trên máy chủ bị xâm nhập.
Bên cạnh đó, các nhà nghiên cứu cũng phát hiện ra những điểm tương đồng về hành vi với một chiến dịch khác có tên là Operation Electric Powder, với mục tiêu nhắm vào Công ty Điện lực Israel từ tháng 4/2016 đến tháng 02/2017.
Hoạt động này được hãng bảo mật McAfee liên kết với một nhóm tin tặc liên kết với Hamas được gọi là Molerats (còn gọi là Extreme Jackal, Gaza Cyber Gang và TA402).
VMware cho biết vào năm ngoái: “Việc sử dụng phần mềm độc hại đa nền tảng cho phép kẻ tấn công có thể tận dụng lợi thế của việc lây nhiễm rộng rãi. SysJoker có khả năng thực thi các lệnh từ xa cũng như tải xuống và thực thi phần mềm độc hại mới trên máy nạn nhân”.
BIẾN THỂ RUST SYSJOKER
Biến thể SysJoker được viết bằng Rust sử dụng các khoảng thời gian nghỉ ngẫu nhiên ở các giai đoạn thực thi khác nhau, để trốn tránh khả năng phân tích và phát hiện của các giải pháp bảo mật, ví dụ như sandbox. Biến thể mới này có hai chế độ hoạt động được xác định bởi sự hiện diện của nó trong một đường dẫn cụ thể. Điều này nhằm mục đích phân biệt lần thực hiện đầu tiên với bất kỳ lần thực hiện tiếp theo sau đó.
Đầu tiên, nó kiểm tra xem module đang thực thi hiện tại có khớp với đường dẫn C:\ProgramData\php-7.4.19-Win32-vc15-x64\php-cgi.exe hay không. Dựa trên kết quả, phần mềm độc hại sẽ tiến hành một trong hai giai đoạn có thể xảy ra.
Thực hiện đầu tiên
Nếu module hoạt động từ một vị trí khác, cho biết đây là lần đầu được thực thi, thì phần mềm độc hại sẽ tự sao chép vào đường dẫn C:\ProgramData\php-7.4.19-Win32-vc15-x64\php-cgi.exe rồi tự động thực thi từ đường dẫn mới được tạo bằng PowerShell với tham số sau: -Command C:\ProgramData\php-7.4.19-Win32-vc15-x64\php-cgi.exe. Cuối cùng, nó tạo ra một cơ chế bền vững rồi thoát khỏi chương trình.
Các lần thực thi tiếp theo
SysJoker liên hệ với một URL trên OneDrive để lấy địa chỉ máy chủ C2. URL được mã hóa bên trong tệp sau: https: //onedrive.live[.]com/download?resid=16E2AEE4B7A8BBB1%21112&authkey=!AED7TeCJaC7JNVQ.
Phản hồi cũng phải chứa một khối dữ liệu được mã hóa trong base64. Trong quá trình điều tra, các nhà nghiên cứu đã nhận được phản hồi sau: KnM5Sjpob2glNTY8AmcaYXt8cAh/fHZ+ZnUNcwdld2Mr. Sau khi giải mã điều này, địa chỉ IP và cổng tương ứng cũng đã được phát hiện: {“url”:“http://85[.]31[.]231[.]49:443”}.
Việc sử dụng OneDrive cho phép kẻ tấn công dễ dàng thay đổi địa chỉ C2. Hành vi này vẫn nhất quán trên các phiên bản khác nhau của SysJoker. Phần mềm độc hại thu thập thông tin về hệ thống bị nhiễm, bao gồm phiên bản Windows, tên người dùng, địa chỉ MAC và nhiều dữ liệu khác. Thông tin này sau đó được gửi đến API endpoint /api/attach trên máy chủ C2 và để phản hồi, nó nhận được một mã thông báo duy nhất đóng vai trò là mã định danh khi phần mềm độc hại giao tiếp với C2.
Hình 1. Gọi tới API đăng ký bot
Sau khi đăng ký với máy chủ C2, phần mềm độc hại sẽ chạy vòng lặp C2 chính. Nó gửi yêu cầu POST chứa mã thông báo duy nhất đến API endpoint /api/req và C2 phản hồi bằng dữ liệu JSON.
Hình 2. Yêu cầu và phản hồi lệnh C2
Phản hồi dự kiến từ máy chủ là dữ liệu JSON gồm trường “data” chứa một loạt hành động để thực thi. Mỗi mảng bao gồm các thông tin như “id” và “request” các trường. Trường request này là một JSON khác có các trường “url” và “name”.
Hình 3. Một ví dụ về phản hồi từ máy chủ
Phần mềm độc hại tải xuống kho lưu trữ ZIP từ URL được chỉ định trong trường “url”. Kho lưu trữ này chứa một tệp thực thi mà sau khi giải nén sẽ được lưu vào thư mục: C:\ProgramData\php-Win32-libs.
Hình 4. Kho lưu trữ được giải nén bằng lệnh PowerShell
Điều quan trọng cần đề cập là trong các hoạt động SysJoker trước đây, phần mềm độc hại không chỉ có khả năng tải xuống và thực thi các tệp từ xa từ kho lưu trữ mà còn có khả năng thực thi các lệnh do kẻ tấn công đưa ra.
Chức năng này bị thiếu trong phiên bản Rust lần này. Sau khi nhận và thực thi lệnh tải tệp, tùy vào thao tác có thành công hay không, phần mềm độc hại sẽ liên lạc lại với máy chủ C2 và gửi thông báo thành công hoặc ngoại lệ tới đường dẫn /api/req/res. Máy chủ gửi lại xác nhận JSON cho biết rằng nó đã nhận được thông tin như sau: {“status”:“success”}.
Mã hóa
Phần mềm độc hại có hai phương pháp giải mã chuỗi. Phương pháp đầu tiên rất đơn giản và xuất hiện trên nhiều biến thể SysJoker, chứa một số khối dữ liệu và khóa được mã hóa base64. Sau đó, cả hai đều giải mã và được XOR để tạo ra các chuỗi văn bản thuần túy.
Phương pháp mã hóa thứ hai được sử dụng nhiều lần trong suốt chương trình tại thời điểm biên dịch. Điều này tạo ra một thuật toán giải mã chuỗi phức tạp trong toàn bộ mẫu.
Hình 5. Ví dụ về giải mã chuỗi “php-”
Ngoài biến thể Rust mới được tìm thấy, các nhà nghiên cứu đã phát hiện thêm hai mẫu SysJoker chưa được công khai trước đây. Cả hai mẫu này phức tạp hơn một chút so với phiên bản Rust hoặc bất kỳ mẫu nào được phân tích trước đó, có thể do việc phát hiện và phân tích công khai phần mềm độc hại. Một trong những mẫu này, trái ngược với các phiên bản khác, có quy trình thực thi nhiều giai đoạn, bao gồm trình tải xuống, trình cài đặt và tệp DLL payload riêng biệt.
Cơ sở hạ tầng
Cơ sở hạ tầng được sử dụng trong chiến dịch này được cấu hình động. Đầu tiên, phần mềm độc hại liên hệ với một địa chỉ OneDrive và từ đó nó giải mã JSON chứa địa chỉ C2 để liên lạc.
Tác nhân đe dọa này thường sử dụng các dịch vụ lưu trữ đám mây. Các báo cáo trước đây cho thấy Google Drive đã được sử dụng cho mục đích tương tự.
Hình 6. Siêu dữ liệu của tệp OneDrive chứa máy chủ C2 được mã hóa
Mối quan hệ với chiến dịch Operation Electric Powder
Backdoor SysJoker sử dụng mã hóa tùy chỉnh của riêng nó cho ba chuỗi chính: URL OneDrive chứa địa chỉ C2 cuối cùng, địa chỉ C2 nhận được từ yêu cầu tới OneDrive và lệnh PowerShell được sử dụng để duy trì tính bền vững.
Hình 7. Lệnh PowerShell của biến thể Rust SysJoker
Lệnh PowerShell dựa trên lớp StdRegProv WMI này khá độc đáo. Nó được chia sẻ giữa nhiều biến thể của SysJoker và dường như có liên quan đến Operation Electric Powder đã được đề cập trước đó.
Trong chiến dịch Operation Electric Powder nhắm vào Công ty Điện lực Israel, các tin tặc đã sử dụng các trang Facebook giả mạo để phát tán phần mềm độc hại cho cả Windows và Android. Phần mềm độc hại trên Windows được sử dụng trong chiến dịch này bao gồm một trình Dropper, backdoor và module keylogger dựa trên Python để ghi lại thao tác bàn phím và chụp màn hình.
Quá trình phân tích hoạt động SysJoker, các nhà nghiên cứu nhận thấy các dấu hiệu cho thấy rằng cùng một tác nhân đe dọa chịu trách nhiệm cho cả hai cuộc tấn công, mặc dù có khoảng cách thời gian lớn giữa các hoạt động. Cả hai chiến dịch đều sử dụng URL API và triển khai các lệnh tập lệnh theo cách tương tự. Ví dụ, hình ảnh dưới đây cho thấy điểm tương đồng giữa các tập lệnh được các phần mềm độc hại khác nhau sử dụng khi thu thập dữ liệu từ thiết bị bị nhiễm sang các tệp văn bản tạm thời.
Hình 8. Sử dụng lệnh “type” trong chiến dịch Operation Electric Powder và các biến thể của SysJoker
KẾT LUẬN
Mặc dù đến nay SysJoker chưa xác định được nhóm tin tặc nào đứng sau nó, nhưng các nhà nghiên cứu đã tìm thấy bằng chứng cho thấy phần mềm độc hại này và các biến thể mới hơn đã được sử dụng trong các cuộc tấn công mạng liên quan đến xung đột Israel - Hamas. Check Point cũng có thể tạo mối liên hệ giữa SysJoker và chiến dịch Electric Powder Operation chống lại Công ty Điện lực Israel.
Các phiên bản trước của SysJoker được mã hóa bằng C++. Vì không có phương pháp đơn giản nào để chuyển mã đó sang Rust, nên điều này cho thấy phần mềm độc hại đã được viết lại hoàn toàn và có thể đóng vai trò là nền tảng cho những thay đổi và cải tiến trong tương lai.