Mã độc RAT Python nguy hiểm: Né tránh phát hiện hiệu quả

Mã độc RAT Python nguy hiểm: Né tránh phát hiện hiệu quả

Một biến thể mã độc RAT (Remote Access Trojan) Python mới được phát hiện trên VirusTotal đang sử dụng các kỹ thuật đa hình và tự thay đổi mã nguồn tiên tiến. Mã độc này có khả năng thay đổi chữ ký mã trên mỗi lần thực thi, giúp nó né tránh các cơ chế phát hiện dựa trên chữ ký truyền thống.

Các nhà nghiên cứu bảo mật khi phân tích các mẫu gửi lên VirusTotal đã xác định một mã độc RAT Python đáng ngờ (SHA256: 7173e20e7ec217f6a1591f1fc9be6d0a4496d78615cc5ccdf7b9a3a37e3ecc3c). Điều đáng chú ý là mẫu này chỉ đạt điểm 2/64 trên VirusTotal, cho thấy khả năng né tránh phát hiện hiệu quả của nó.

Nội dung
Kỹ thuật Đa hình và Tự Thay đổi Mã của Mã độc RAT Python

Cơ chế Tự Thay Đổi Mã: self_modifying_wrapper()
Biến đổi Mã Đa hình: polymorph_code()
Minh họa Cơ chế Truy cập Mã nguồn lúc Chạy
Tính năng Tấn công Đa dạng và Mối đe dọa Mạng
Chỉ số Nhận dạng Nguy cơ (IOCs) để Phát hiện Tấn công

Chiến lược Phòng thủ và Giảm thiểu Rủi ro Bảo mật

Kỹ thuật Đa hình và Tự Thay đổi Mã của Mã độc RAT Python

Điểm khác biệt chính của mẫu mã độc này nằm ở ba tên hàm riêng biệt: self_modifying_wrapper(), decrypt_and_execute(), và polymorph_code(). Các hàm này chỉ ra khả năng tự biến đổi mã nguồn trong quá trình hoạt động, một đặc tính của malware đa hình.

Malware đa hình biến đổi mã hoặc chữ ký dữ liệu của nó trong thời gian chạy để tránh các phương pháp phát hiện tĩnh. Bằng cách tận dụng các module introspection và serialization của Python, mã độc RAT này liên tục thay đổi hình thức, đảm bảo mỗi mẫu xuất hiện khác nhau đối với các công cụ chống virus dựa trên chữ ký.

Cơ chế Tự Thay Đổi Mã: self_modifying_wrapper()

Mã độc RAT này bao bọc các phần quan trọng của mã trong một lớp tự thay đổi. Hàm self_modifying_wrapper() thu thập mã bytecode được tuần tự hóa (serialized bytecode) của hàm main().

Sau đó, nó áp dụng mã hóa XOR bằng một khóa ngẫu nhiên, giải mã và giải nén trở lại thành một đối tượng mã có thể thực thi. Quá trình này mô phỏng việc đóng gói và giải nén mã độc trong bộ nhớ mà không ghi các payload đã giải mã xuống đĩa cứng.

Kỹ thuật này giúp mã độc RAT bỏ qua các phương pháp quét tệp truyền thống và chỉ dựa vào việc thực thi trong bộ nhớ. Sau khi giải nén, wrapper sẽ ghi lại thành công hoặc thất bại của quá trình thực thi. Điều này làm cho việc phát hiện tấn công trở nên khó khăn hơn đối với các hệ thống phòng thủ.

Biến đổi Mã Đa hình: polymorph_code()

Ngoài khả năng tự thay đổi, hàm polymorph_code() của mã độc RAT còn thực hiện nhiều biến đổi khác nhau để phá vỡ các mẫu chữ ký. Các kỹ thuật bao gồm chèn mã rác ngẫu nhiên (random junk code), đổi tên biến, xáo trộn định nghĩa hàm, và tiêm các routine không hoạt động (no-op routines).

  • Chèn mã rác: Thay đổi cấu trúc tệp và hàm băm mà không ảnh hưởng đến chức năng, làm cho mỗi bản sao có chữ ký khác nhau.
  • Đổi tên biến: Làm cho việc phân tích tĩnh trở nên phức tạp hơn, vì các mẫu dựa trên tên biến cụ thể sẽ bị vô hiệu.
  • Xáo trộn định nghĩa hàm: Thay đổi thứ tự các hàm trong mã nguồn, khiến các công cụ dựa trên thứ tự này không thể nhận diện.
  • Tiêm routine no-op: Chèn các lệnh không thực hiện hành động nào nhưng làm thay đổi luồng thực thi và cấu trúc mã, tạo ra các biến thể chữ ký độc đáo.

Những biến đổi này đảm bảo mỗi lần thực thi tạo ra một chữ ký tệp duy nhất, giảm đáng kể tỷ lệ bị phát hiện bởi các phần mềm diệt virus truyền thống.

Minh họa Cơ chế Truy cập Mã nguồn lúc Chạy

Khả năng truy cập và thao tác mã nguồn của chính nó trong thời gian chạy là yếu tố cốt lõi cho kỹ thuật tự biến đổi của mã độc RAT này. Module inspect của Python cho phép một script truy cập chính mã nguồn của nó. Ví dụ sau minh họa cách module này hoạt động:

import inspect

def dummy_function():
    """This is a dummy function."""
    print("Hello from dummy function")

# Lấy mã nguồn của dummy_function
source_code = inspect.getsource(dummy_function)
print(source_code)

Khi được thực thi, đoạn mã này sẽ in ra mã nguồn của dummy_function, chứng minh khả năng của Python trong việc truy xuất mã của chính nó trong thời gian chạy. Kỹ thuật này được mã độc RAT tận dụng để đọc, mã hóa, giải mã và viết lại các phần mã của nó.

Để hiểu rõ hơn về cách module inspect hoạt động, bạn có thể tham khảo tài liệu chính thức của Python về module này tại docs.python.org/3/library/inspect.html.

Tính năng Tấn công Đa dạng và Mối đe dọa Mạng

Bên cạnh khả năng tự biến đổi tiên tiến, mã độc RAT này còn triển khai một bộ đầy đủ các tính năng tấn công thông qua các hàm bất đồng bộ (asynchronous functions). Điều này tạo ra một mối đe dọa mạng đáng kể cho các tổ chức và người dùng.

Các chức năng này cho phép mã độc thực hiện nhiều hành vi độc hại, từ trinh sát đến chiếm quyền điều khiển và đánh cắp dữ liệu.

  • socket_network_scan(): Quét mạng để tìm kiếm các mục tiêu tiềm năng hoặc các thiết bị dễ bị tấn công.
  • deliver_payload(): Cung cấp và thực thi các payload thứ cấp, có thể là các module mã độc khác hoặc công cụ khai thác.
  • spread_to_network(): Lây lan sang các máy chủ hoặc thiết bị khác trong mạng, thực hiện tấn công di chuyển ngang.
  • encrypt(): Mã hóa dữ liệu, có thể dùng để tống tiền hoặc chuẩn bị cho việc đánh cắp dữ liệu.
  • mine(): Thực hiện khai thác tiền điện tử trái phép bằng cách sử dụng tài nguyên của hệ thống bị nhiễm.
  • screenshot(): Chụp ảnh màn hình định kỳ để giám sát hoạt động của người dùng và thu thập thông tin nhạy cảm.
  • listen(): Lắng nghe lệnh từ máy chủ C2, duy trì kênh giao tiếp để nhận chỉ thị.
  • upload()download(): Tải lên các tệp từ hệ thống nạn nhân hoặc tải xuống các công cụ và payload mới.
  • keylog_start() thông qua keylog_stop(): Ghi lại các phím bấm của người dùng để đánh cắp thông tin đăng nhập và dữ liệu nhạy cảm.

Giao diện bot của mã độc RAT này cung cấp các lệnh như /commands, /encrypt, /mine, /run, và /archive. Các lệnh này cho phép kẻ tấn công vận hành từ xa mà không cần tương tác trực tiếp, một khi mã độc đã được triển khai trên hệ thống mục tiêu. Điều này đặc biệt nguy hiểm khi hệ thống bị xâm nhập.

Chỉ số Nhận dạng Nguy cơ (IOCs) để Phát hiện Tấn công

Để hỗ trợ việc phát hiện tấn công nhanh chóng và ứng phó hiệu quả, các tổ chức cần chú ý đến các chỉ số nhận dạng nguy cơ (IOCs) sau đây liên quan đến mã độc RAT Python này:

  • SHA256 Hash:7173e20e7ec217f6a1591f1fc9be6d0a4496d78615cc5ccdf7b9a3a37e3ecc3c (Mẫu malware được xác định ban đầu)
  • Chữ ký mã hóa XOR: Sự hiện diện của các mẫu mã hóa và giải mã XOR trong các tiến trình đang chạy hoặc trong các tệp nhị phân có thể là dấu hiệu của việc đóng gói malware.
  • Nhật ký chuyển đổi đa hình: Kiểm tra các tệp nhật ký (đặc biệt là debug.log) để tìm kiếm các mục liên quan đến quá trình biến đổi mã đa hình hoặc các lỗi xảy ra trong quá trình này.
  • Thực thi mã trong bộ nhớ bất thường: Giám sát các tiến trình thực thi mã trực tiếp trong bộ nhớ mà không có tệp nguồn trên đĩa. Các công cụ EDR (Endpoint Detection and Response) có thể giúp phát hiện hành vi này.
  • Hoạt động mạng đáng ngờ: Giao tiếp với các máy chủ C2 thông qua Discord hoặc Slack, hoặc các kết nối đi ra ngoài tới các địa chỉ IP không xác định.
  • Sử dụng module Python inspectmarshal/pickle bất thường: Việc một ứng dụng không liên quan đến phát triển hoặc gỡ lỗi sử dụng các module này để thao tác mã nguồn của chính nó trong thời gian chạy là một dấu hiệu cảnh báo.

Chiến lược Phòng thủ và Giảm thiểu Rủi ro Bảo mật

Để giảm thiểu mối đe dọa mạng từ mã độc RAT tinh vi này, các đội ngũ bảo mật cần triển khai các chiến lược phòng thủ chủ động và cập nhật liên tục.

Các bản cập nhật chữ ký phát hiện cần được tối ưu để nhận diện cả sơ đồ đóng gói XOR và các hành vi thực thi trong bộ nhớ. Thay vì chỉ dựa vào chữ ký tệp, cần tập trung vào phân tích hành vi và kỹ thuật thực thi.

Kiểm tra nhật ký hệ thống kỹ lưỡng để tìm các mục nhập liên quan đến quá trình biến đổi đa hình trong các tệp nhật ký gỡ lỗi (debug.log) hoặc nhật ký ứng dụng. Bất kỳ dấu hiệu nào của việc sửa đổi mã nguồn trong thời gian chạy đều cần được điều tra.

Giám sát các mẫu thực thi bộ nhớ bất thường là cực kỳ quan trọng. Các giải pháp EDR tiên tiến có thể giúp theo dõi hành vi của tiến trình, phát hiện các lệnh gọi API đáng ngờ hoặc việc thực thi mã từ các vùng bộ nhớ không mong muốn.

Ngoài ra, việc duy trì các bản vá bảo mật mới nhất cho hệ điều hành và các ứng dụng, triển khai kiểm soát truy cập nghiêm ngặt, và đào tạo người dùng về nhận diện các email lừa đảo cũng là các biện pháp quan trọng để ngăn chặn sự lây nhiễm ban đầu của loại mã độc RAT này.