
執行摘要
FortiGuard 實驗室近期發現一個新的殭屍網路, RustoBot ,目標鎖定有漏洞的 TOTOLINK 與 DrayTek 路由器。不同於傳統以 C 或 Go 語言編寫的物聯網惡意軟體,RustoBot 利用 Rust 程式語言提升效能與規避能力。報告中根據遙測資料與逆向工程樣本,分析其傳播機制、技術架構、指揮與控制(C2)基礎設施,以及攻擊方法。

1. 傳播機制
RustoBot 利用 TOTOLINK 與 DrayTek 設備中的多個漏洞實現遠端程式碼執行(RCE)。主要漏洞包括:
-
CVE-2022-26210
與
CVE-2022-26187
:TOTOLINK 的
cstecgi.cgi
腳本(Script)存在命令注入漏洞,允許攻擊者透過 HTTP 請求執行任意命令。 -
CVE-2024-12987
:DrayTek 的
apmcfgupload
介面存在作業系統命令注入,允許透過操控 CGI 參數部署 Payload。
該惡意軟體採用多階段下載系統:
-
初始利用
:攻擊者透過 HTTP/TFTP 傳送 shell 腳本(
w.sh
、tftp.sh
),以取得特定架構的二進位檔案(例如arm5
、mpsl
、x86
)。 -
Payload 取得
:RustoBot 二進位檔案從
hxxp://66[.]63[.]187[.]69
下載,針對 ARM、MIPS 與 x86 架構提供變種。 -
持續性
:感染後,RustoBot 修改系統檔案(例如
/etc/rc.local
)並部署 cron 任務,確保在重啟後仍能存活。
2. 惡意軟體架構與程式碼分析
2.1 Rust 實作與混淆
RustoBot 使用 Rust 提供內建的記憶體安全與平行處理優勢,使靜態分析更具挑戰性。主要觀察包括:
- Global Offset Table (GOT) 操控 :該惡意軟體使用動態解析從 GOT 取得系統 API 位址,繞過傳統匯入表偵測。
-
基於 XOR 的設定加密
:關鍵字串(例如 C2 網域)使用動態 XOR Key 進行加密,XOR Key 透過位元運算(
xor
、shr
、rol
)衍生。例如,Decoder key 透過 Hardcoded 常數與執行時暫存器值的組合計算。
2.2 指揮與控制通訊
RustoBot 使用 DNS-over-HTTPS(DoH)將惡意流量與合法 HTTPS Request 穿插。它解析四個網域:
-
dvrhelper[.]anondns[.]net
-
techsupport[.]anondns[.]net
-
rustbot[.]anondns[.]net
-
miraisucks[.]anondns[.]net
所有網域解析至 IP
5[.]255[.]125[.]150
,作為主要 C2 伺服器。通訊遵循結構化協定:
- 初始握手 :Bot 傳送包含受害者公開 IP 位址的封包。
-
命令執行
:C2 回應包含 DDoS 攻擊參數,包括:
-
攻擊類型(例如
0x03
表示 UDP flooding) -
目標 IP(以十進位格式,例如
454661159
→27.23.45.167
) - 持續時間(秒)與封包大小。
-
攻擊類型(例如
3. 攻擊能力
RustoBot 支援三種主要的 DDoS 攻擊向量:
- Raw IP Flooding :傳送畸形 IP 封包以壓垮網路介面。
- TCP/UDP Flooding :產生高流量以耗盡目標頻寬。
- Protocol-Specific Exploits :包括 YN-ACK floods 與 HTTP request saturation。
從 C2 流量解碼的攻擊命令樣本展示了其精確性:
Attack Method: 0x03 (UDP Flood) Target IP: 1744345328 (104.76.92.240) Port: 80 Duration: 30 seconds Packet Size: 1400 bytes
此設定使高強度攻擊能以最小的 C2 開銷快速部署。
4. 規避與反分析技術
- 反誘捕措施 :該惡意軟體透過檢查系統執行時間與程序清單(Process lists),確認是否在沙箱環境中。
-
程序注入
:RustoBot 將 Payload 注入合法程序(例如
svchost.exe
)以規避端點偵測。 - 動態程式碼載入 :關鍵模組(例如 DDoS 邏輯)僅在執行時解密,阻礙靜態分析。
5. 與傳統殭屍網路的比較分析
RustoBot 的 Rust 架構與 Mirai 變種(基於 C)及 Golang 殭屍網路如 Zerobot 形成鮮明對比:
功能 | RustoBot | Mirai | Zerobot (Go) |
---|---|---|---|
二進位檔案大小 | 2–4 MB | <300 KB | 4–6 MB (UPX-packed) |
持續性 | Cron 任務 + rc.local | /etc/init.d 腳本 | Systemd 服務 |
C2 混淆 | DoH + XOR 加密 | TCP 明文(Plaintext) | WebSockets |
攻擊複雜度 | 多協定 DDoS | Basic SYN floods | 混合漏洞攻擊 |
此轉變突顯攻擊者日益偏好記憶體安全語言,以提升可靠性和可擴展性。
6. 緩解策略
- 修補管理 :立即更新 TOTOLINK(韌體 ≥V5.9c.5185)與 DrayTek(≥V1.5.1.4)設備。
- 網路分段 :隔離物聯網設備以限制橫向移動。
- 行為監控 :偵測異常流量模式(例如重複的 DoH 請求)。
7. 結論
RustoBot 體現了物聯網殭屍網路的演進,結合 Rust 的效率與複雜的規避技術。其模組化設計與多協定 DDoS 能力對未修補的設備構成重大風險。組織必須優先進行韌體更新並部署多層防禦以減輕此威脅。