執行摘要

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

RustoBot揭秘:Rust如何重塑物聯網威脅 | 資訊安全新聞

1. 傳播機制

RustoBot 利用 TOTOLINK 與 DrayTek 設備中的多個漏洞實現遠端程式碼執行(RCE)。主要漏洞包括:

  • CVE-2022-26210 CVE-2022-26187 :TOTOLINK 的 cstecgi.cgi 腳本(Script)存在命令注入漏洞,允許攻擊者透過 HTTP 請求執行任意命令。
  • CVE-2024-12987 :DrayTek 的 apmcfgupload 介面存在作業系統命令注入,允許透過操控 CGI 參數部署 Payload。

該惡意軟體採用多階段下載系統:

  1. 初始利用 :攻擊者透過 HTTP/TFTP 傳送 shell 腳本( w.sh tftp.sh ),以取得特定架構的二進位檔案(例如 arm5 mpsl x86 )。
  2. Payload 取得 :RustoBot 二進位檔案從 hxxp://66[.]63[.]187[.]69 下載,針對 ARM、MIPS 與 x86 架構提供變種。
  3. 持續性 :感染後,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 伺服器。通訊遵循結構化協定:

  1. 初始握手 :Bot 傳送包含受害者公開 IP 位址的封包。
  2. 命令執行 :C2 回應包含 DDoS 攻擊參數,包括:
    • 攻擊類型(例如 0x03 表示 UDP flooding)
    • 目標 IP(以十進位格式,例如 454661159 27.23.45.167
    • 持續時間(秒)與封包大小。

3. 攻擊能力

RustoBot 支援三種主要的 DDoS 攻擊向量:

  1. Raw IP Flooding :傳送畸形 IP 封包以壓垮網路介面。
  2. TCP/UDP Flooding :產生高流量以耗盡目標頻寬。
  3. 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. 緩解策略

  1. 修補管理 :立即更新 TOTOLINK(韌體 ≥V5.9c.5185)與 DrayTek(≥V1.5.1.4)設備。
  2. 網路分段 :隔離物聯網設備以限制橫向移動。
  3. 行為監控 :偵測異常流量模式(例如重複的 DoH 請求)。

7. 結論

RustoBot 體現了物聯網殭屍網路的演進,結合 Rust 的效率與複雜的規避技術。其模組化設計與多協定 DDoS 能力對未修補的設備構成重大風險。組織必須優先進行韌體更新並部署多層防禦以減輕此威脅。

Copyright © 2025 版權所有 翊天科技有限公司