# Phân tích MystRodX – Backdoor ẩn mình hơn 20 tháng

## 1\. Tổng quan

Ngày **6/6/2025**, hệ thống **CTIA (Cyber Threat Insight and Analysis)** của XLab – một nền tảng theo dõi, phân tích và cảnh báo các mối đe dọa mạng – đã phát hiện hoạt động bất thường. Một địa chỉ IP là **139.84.156.79** đang phát tán một tệp ELF khả nghi tên **dst86.bin**.

Điểm đáng chú ý là khi kiểm tra trên **VirusTotal**, mẫu này chỉ có **4/65** công cụ antivirus (AV) nhận diện, và đa phần gắn nhãn nó là **Mirai** – một loại malware IoT rất phổ biến. Tuy nhiên, công cụ AI phân tích của XLab lại **không gắn nhãn Mirai**, tạo ra sự mâu thuẫn. Đây chính là lý do khiến nhóm nghiên cứu đi sâu hơn.

Kết quả cho thấy: **dst86.bin không phải là Mirai**. Thay vào đó, nó là một **dropper** – tức là một chương trình chuyên dùng để cài đặt hoặc phát tán phần mềm độc hại khác. Và điều mà dropper này thả xuống chính là một backdoor **chưa từng được biết tới trước đây**.

Backdoor mới này được XLab đặt tên là **MystRodX**, dựa trên một số đặc điểm:

* Ký hiệu “dst” xuất hiện trong tên file.
    
* Một số class bên trong có tên bắt đầu bằng **cmy\_**.
    
* Thuật toán mã hóa độc đáo dựa trên nhiều lớp **XOR**.
    

MystRodX được lập trình bằng ngôn ngữ **C++** và mang đầy đủ các chức năng cơ bản của một backdoor, bao gồm:

* Quản lý và thao tác file.
    
* Port forwarding (chuyển hướng lưu lượng giữa các cổng).
    
* Reverse shell (mở cửa điều khiển ngược để kẻ tấn công có thể điều khiển hệ thống từ xa).
    
* Quản lý kết nối socket.
    

Điều làm MystRodX nổi bật không nằm ở việc có nhiều chức năng, mà ở chỗ nó được thiết kế để **ẩn mình cực kỳ khéo léo (stealth)** và **linh hoạt trong cấu hình (flexibility)**.

---

## 2\. Stealth & Flexibility

### 2.1 Stealth

Khác với các malware bình thường chỉ dùng một cách mã hóa duy nhất, MystRodX áp dụng **nhiều cơ chế mã hóa khác nhau** tùy theo độ nhạy cảm của dữ liệu:

* Chuỗi nhạy cảm liên quan đến **máy ảo (VM)** và **trình gỡ lỗi (debugger)** → mã hóa bằng **XOR 1 byte**.
    
* Các **khóa AES, payload, gói tin kích hoạt (trigger packets)** → dùng **thuật toán Transform** đặc biệt do tác giả xây dựng.
    
* Cấu hình (configuration) → mã hóa bằng **AES chế độ CBC**, một chuẩn mạnh mẽ hơn hẳn.
    

### 2.2 Flexibility

* MystRodX không cứng nhắc. Thông qua file cấu hình, nó có thể:
    
    * Chọn giao tiếp qua **TCP hoặc HTTP**.
        
    * Truyền dữ liệu ở dạng **plain text hoặc mã hóa AES**.
        
    * Kích hoạt **chế độ thụ động (wake-up mode)**, tức là không hoạt động ngay mà “nằm yên” cho đến khi nhận được gói tin đặc biệt.
        
    
    Đặc biệt, trong cấu hình có một trường cho phép chỉ định **thời gian kích hoạt**. Trong mẫu thu được, thời gian được đặt từ **07/01/2024, 23:10:20**. Nghĩa là MystRodX có thể đã lây nhiễm vào hệ thống từ lâu, rồi **ngủ đông hơn 20 tháng** mà không bị ai phát hiện.
    
    Khi XLab mở rộng điều tra bằng hệ thống săn tìm C2 (C2 hunting platform), nhóm đã phát hiện **3 máy chủ C2 vẫn hoạt động**. Điều này cho thấy MystRodX **không hề bị bỏ rơi**, mà vẫn đang được vận hành trong thực tế.
    

---

## 3\. Passive Mode

Một trong những tính năng thú vị nhất của MystRodX chính là **Passive Backdoor Mode**.

Thông thường, backdoor cần mở một cổng mạng (port) để nhận lệnh từ C2. Điều này dễ bị phát hiện vì các hệ thống bảo mật có thể quét và kiểm tra các port mở. Tuy nhiên, MystRodX có cách khác:

* Khi **Backdoor Type = 1**, MystRodX **không mở port nào**.
    
* Thay vào đó, nó dùng **RAW socket** để “nghe lén” toàn bộ lưu lượng đến máy.
    
* Khi gặp một gói tin đặc biệt (DNS hoặc ICMP), nó sẽ kiểm tra, giải mã, và nếu hợp lệ, lập tức kết nối đến C2.
    

![dst_rawsock.png](https://blog.xlab.qianxin.com/content/images/2025/08/dst_rawsock.png align="left")

### 3.1 DNS Trigger

Gói DNS chứa một domain “ngụy trang”. Trong phần tên miền có nhúng một chuỗi mã hóa. MystRodX giải mã chuỗi này bằng thuật toán Transform. Nếu chuỗi giải mã có **Magic = “CAT”**, backdoor sẽ lập tức kết nối đến IP và port chỉ định để nhận lệnh.

* Format: `www.{DomainName}.com`
    
* DomainName chứa chuỗi Base64 → ciphertext
    
* Giải mã bằng Transform (magic=0x0d, magic2=0xaa, key=key\_for\_backdoor)
    
* In ra payload kích hoạt như sau:
    
    * Magic: “CAT”
        
    * Protocol: TCP
        
    * Port: 8010
        
    * C2: 149.28.137.254
        

→ Nếu Magic hợp lệ → kết nối C2.

![dst_dnspacket_mask.png](https://blog.xlab.qianxin.com/content/images/2025/08/dst_dnspacket_mask.png align="left")

### 3.2 ICMP Trigger

* Payload định nghĩa C2 server (ví dụ: 192.168.96.1:443, HTTP)
    
* Mã hóa bằng Transform (magic2=0x9f)
    
* Khi nhận gói ICMP, MystRodX giải mã → check-in về C2.
    

→ Khác với *SYNful Knock* (ẩn trong TCP header), MystRodX **ẩn trong payload DNS/ICMP**. Cách làm này rất hiệu quả vì lưu lượng ping hoặc DNS thường bị bỏ qua, ít ai giám sát kỹ, giúp backdoor **ẩn mình tốt hơn nhiều** so với kiểu mở cổng trực tiếp.

![dst_proof.png](https://blog.xlab.qianxin.com/content/images/2025/08/dst_proof.png align="left")

---

## 4\. Infrastructure & C2 Operations

Trong các thử nghiệm, nhóm nghiên cứu:

* Gửi gói DNS/ICMP để thử kích hoạt các mẫu, nhưng **không nhận được phản hồi**. Có thể do chúng có cấu hình khác, key khác, hoặc đã bị thay đổi.
    
* Tuy nhiên, qua các công cụ săn tìm C2, đã phát hiện **3 máy chủ vẫn đang hoạt động**. Các máy chủ này thậm chí còn gửi lệnh yêu cầu bot bật chế độ mã hóa lưu lượng.
    

Đặc biệt, các C2 này sử dụng **RSA key riêng cho từng chiến dịch**, cho thấy MystRodX được dùng trong **nhiều chiến dịch tấn công khác nhau** chứ không phải một nhóm duy nhất.

### 4.1 Bot Activation

* Thử gửi trigger DNS/ICMP → không nhận phản hồi.
    
* Nguyên nhân có thể: passive mode bị disable, key/magic khác, cấu hình thay đổi.
    

### 4.2 C2 Hunting

* Phát hiện **3 active C2**
    
* C2 gửi **Command 7** → yêu cầu bật traffic encryption
    
* Hạ tầng hoạt động từ 2024 → MystRodX vẫn còn trong chiến dịch hiện tại
    

### 4.3 Campaign Attribution

* Cấu hình chứa **RSA public key** để giải mã Command 7
    
* Mỗi chiến dịch dùng key khác nhau → phân biệt chiến dịch
    
* Hai campaign đã biết: “neybquno” và “zoufkcfr”
    
* Hai C2 mới (156.244.6.68, 185.22.153.228) không giải mã được → **chiến dịch mới**
    

---

## 5\. Dropper Analysis

Dropper có nhiệm vụ:

* Giải mã và thả ba file: **chargen (backdoor), busybox, daytime (launcher)**.
    
* Kiểm tra checksum để tránh bị giả mạo.
    
* Sử dụng cơ chế **dual-process guardian**: backdoor giám sát launcher, launcher giám sát backdoor. Nếu một trong hai bị dừng, tiến trình còn lại sẽ khởi động lại. Điều này đảm bảo MystRodX **rất khó bị loại bỏ hoàn toàn**.
    

### 5.1 String Decryption

* XOR 1 byte (last byte = key)
    
* Ví dụ: `\x13\x08\x12\x04\x17\x00\x65` → key=0x65 → decrypt=“vmware\\x00”
    
* Các chuỗi phân loại thành:
    
    * VM detection: `/sys/class/dmi/id/bios_vendor` chứa vmware, vbox…
        
    * Debugger detection: process name = gdb, lldb, strace…
        
    * Launcher info: PID, filename
        

### 5.2 Payload Decryption

* Payload mã hóa bằng **MystRodX\_Transform**
    
* Input: magic=key1, magic2=last byte, key=key\_for\_dropper
    
* Kết quả chứa 3 file:
    
    * **chargen** (core backdoor)
        
    * **daytime** (launcher)
        
    * **busybox**
        

Checksum xác minh payload trước khi thả file.

### 5.3 Launcher

* Giải mã chuỗi “clog”, “dlog” để log PID
    
* Giám sát tiến trình “chargen”
    
* Nếu backdoor chết → restart
    
* Hình thành **dual-process guardian** với MystRodX
    

---

## 6\. MystRodX Backdoor Analysis

MystRodX hỗ trợ cả **TCP** và **HTTP**, có thể bật/tắt AES. Các mẫu hiện tại sử dụng TCP không mã hóa.

### 6.1 Dual-Process Guardian

* **daytime** giám sát **chargen**
    
* **chargen** giám sát lại **daytime**
    
* Cơ chế **tự phục hồi liên tục**
    

### 6.2 Configuration Decryption

* Config mã hóa AES (key được giải mã bằng Transform)
    
* IV: `0D 0F 02 04 08 07 2D 1C 01 04 0D 01 02 07 06 02`
    
* Config chứa:
    
    * Campaign ID
        
    * BackdoorType (active/passive)
        
    * MainC2 / BackupC2 / Ports
        
    * Interval
        
    * Public Keys
        

### 6.3 Network Protocol

* **2 mode:** TCP / HTTP
    
* **Encryption optional**
    
* Gói tin TCP:
    

```python
Len(4B) + MainCode(4B) + SubCode(4B) + Direction(4B) + Data
```

* Trong đó:
    
    * **MainCode 1**: Quản lý chung (beacon, heartbeat, gửi thông tin hệ thống, cập nhật config…).
        
    * **MainCode 2, 5, 7, 8**: Tương ứng reverse shell, quản lý file, port forwarding, quản lý SOCKS.
        
    
    Nếu bật mã hóa, định dạng gói sẽ có thêm trường CipherText và PlainText length.
    

---

## 7\. Detection Landscape

Hiện tại, tỉ lệ phát hiện MystRodX trên VirusTotal chỉ mới **6/65**, và đa phần vẫn gắn nhãn **Mirai**. Lý do là vì MystRodX **tái sử dụng kỹ thuật XOR chuỗi của Mirai**. Nhiều antivirus dựa vào đặc điểm này để “kết luận” là Mirai. Nhưng thực chất, MystRodX khác hẳn. Đáng chú ý, khi các nhà nghiên cứu **chỉnh sửa mẫu** (xóa hoặc thay thế chuỗi VM/debugger), thì tỉ lệ phát hiện thậm chí còn giảm. Điều này chứng tỏ cộng đồng bảo mật **chưa thật sự nhận diện MystRodX** đúng bản chất.

---

## 8\. Kết luận

MystRodX là một backdoor tinh vi với nhiều điểm khác biệt:

* Sử dụng cơ chế mã hóa nhiều lớp để gây khó khăn cho phân tích.
    
* Có khả năng “ngủ đông” và chỉ kích hoạt bằng gói tin DNS/ICMP đặc biệt.
    
* Duy trì hoạt động bền bỉ nhờ cơ chế giám sát kép.
    
* Hạ tầng C2 vẫn còn sống, nhiều khả năng vẫn được vận hành trong các chiến dịch tấn công.
    

Điểm nguy hiểm nhất là MystRodX có thể **tồn tại rất lâu trong hệ thống mà không bị phát hiện**, giống như một “kẻ xâm nhập thầm lặng”.

Hiện chưa rõ cách thức xâm nhập ban đầu, mục tiêu cụ thể và ý đồ cuối cùng của kẻ tấn công. Vì vậy, các quản trị viên mạng nên sử dụng thông tin trong báo cáo này để kiểm tra hệ thống, đồng thời cộng đồng an ninh mạng cần hợp tác, chia sẻ thêm dữ liệu và IOC nhằm truy tìm các biến thể chưa bị phát hiện.

## 9\. Khuyến nghị

Với sự phức tạp trong cách thức tấn công của backdoor trên, phía FPT Threat Intelligence đưa ra các khuyến nghị sau:

* Tích hợp IOC từ report vào hệ thống SIEM/IDS
    
* Săn tìm bằng trigger DNS/ICMP bất thường
    
* Phân tích traffic TCP port lạ không mã hóa
    
* Chia sẻ thêm mẫu & intel để củng cố phòng thủ cộng đồng
    

## 10\. IOC

Downloader

* http://139.84.156\[.\]79/dst-x86.bin
    

C2 and Campaign

* airtel.vpndns.net:443
    
* 149.28.130.195:44
    
* 149.28.137.254:801
    
* 149.28.137.254:8443
    
* 156.244.6.68:443
    
* 185.22.153.228:443
    

MD5 Hash

* 5e3a2a0461c7888d0361dd75617051c6
    
* *72d377fa8ccf23998dd7c22c9647fc2a*
    
* 5bf67ce1b245934965557de6d37f286f
    
* fa3b4d5fd1f6c995395244f36c18ffec
    
* *a46f2c771fb580e2135ab898731be9a7*
    
* e8fcb7f3f0edfc7d1a99918dc14527d1
    
* 1f003437e3d10e07f5ee5f51c61c548f
    

## 11\. Tham khảo

* [https://blog.xlab.qianxin.com/mystrodx\_covert\_dual-mode\_backdoor\_en/](https://blog.xlab.qianxin.com/mystrodx_covert_dual-mode_backdoor_en/)
    
* [https://thehackernews.com/2025/09/researchers-warn-of-mystrodx-backdoor.html](https://thehackernews.com/2025/09/researchers-warn-of-mystrodx-backdoor.html)
