這篇文章將分析近期被 QiAnXin XLab 追蹤的 RustDuck 殭屍網路(Botnet)。對於初入行的工程師來說,殭屍網路的概念並不陌生,簡單來說就是攻擊者透過惡意軟體控制大量分散在網路上的裝置,將其組成一個巨大的軍團,用來發動分散式阻斷服務攻擊(DDoS),透過瞬間湧入海量垃圾流量讓目標網站崩潰。
RustDuck 之所以值得關注,不在於它目前的規模,而是在於其工程實現的演進,特別是它將核心從 C 語言遷移到 Rust 語言的趨勢。
為什麼選擇用 Rust 重寫惡意軟體
長期以來,針對 IoT 裝置(如路由器、攝影機)的惡意軟體大多使用 C 語言,因為 C 語言能直接操作記憶體且執行效率高。然而,對於資安分析師來說,C 語言編譯出的二進位檔相對容易進行逆向工程(Reverse Engineering),也就是將機器碼還原成可讀的邏輯。
Rust 語言在提供與 C 相當的效能之餘,其編譯後的二進位結構更為複雜。對於分析人員而言,拆解 Rust 編寫的程式碼難度更高,這能有效延長惡意軟體在被偵測到之前的生存時間。RustDuck 的核心模組正是在此背景下被重寫,顯示出開發者試圖透過提升工程門檻來對抗資安研究人員。
多路併行的入侵路徑
RustDuck 並不依賴單一的高級漏洞,而是採取一種撒網式策略,只要裝置有漏洞就能進入。其入侵路徑主要分為三類:
第一類是弱口令攻擊。利用許多使用者未修改路由器、SSH 或 Telnet 的預設密碼,直接暴力破解進入。
第二類是利用未修補的裝置漏洞。它針對 Android 偵錯介面(ADB)以及特定品牌(如 TP-Link, ZTE, Ruijie)的已知漏洞。其中包含一些極其古老的漏洞,例如 2017 年的 CVE-2017-17215,這證明了許多老舊設備在網路上依然裸奔,且從未更新。
第三類是針對伺服器端軟體。除了家用硬體,它還攻擊 ThinkPHP、Jenkins 和 Hadoop YARN 等 Web 軟體漏洞,將攻擊範圍從低端路由器擴展到企業級伺服器。
極端且精密的反分析機制
RustDuck 最令研究人員頭痛的是其強大的反偵測能力。它在執行核心功能前,會先跑一套風險評分清單,確認自己是否處於沙箱(Sandbox)或研究員的實驗室中:
首先是環境掃描。它會檢查系統中是否安裝了 Wireshark(網路封包分析工具)或 gdb(除錯器),以及是否運行在虛擬機(VM)中。
其次是網路陷阱偵測。它會嘗試訪問一個在標準網路中絕對不會有回應的保留地址。如果該地址竟然回傳了資料,RustDuck 就知道自己掉入了蜜罐(Honeypot,一種誘騙惡意軟體的偽裝系統),隨即會立即自我毀滅並抹除痕跡。
最後是時間加速偵測。許多自動化分析沙箱會透過加速系統時鐘來強迫惡意軟體快速觸發行為。RustDuck 透過比對兩個不同時鐘的速度來發現這種異常,一旦發現便停止運行。
現代化的加密通訊與控制
在指令與控制(C2)的通訊上,RustDuck 捨棄了簡單的明文或弱加密,採用了工業級的加密標準。它使用 Curve25519 進行金鑰交換,並利用 HKDF-SHA256 衍生金鑰。在握手階段使用 ChaCha20-Poly1305,正式通訊則切換至 AES-GCM,且每十分鐘輪換一次金鑰。
這種設計讓它的流量看起來就像普通的加密 HTTPS 流量,能輕易地在網路監控中隱身。而其控制伺服器則利用免費的動態 DNS 服務(如 duckdns.org),這也是其名稱 RustDuck 的由來。
實務上的防禦建議
面對這類殭屍網路,單純等待官方補丁是不夠的,因為它利用的是多個漏洞的組合。建議採取以下防禦措施:
關閉不必要的對外介面。最核心的防禦是將管理介面(如 SSH, Telnet, ADB)從公網中移除,或僅允許特定 IP 訪問。
強制更改預設密碼。這是最簡單卻最常被忽略的防禦環節。
汰換過期設備。許多被利用的路由器已進入 End-of-Life (EOL) 階段,原廠不再提供更新。對於這類設備,唯一的解決方案是直接汰換新機。
監控已知指標。將資安報告中提供的檔案雜湊值(Hash)、控制域名與來源 IP 加入防火牆或監控系統的黑名單。
總結
RustDuck 雖然目前的規模尚小,但它代表了一種危險的趨勢:惡意軟體正在進入工程化升級階段。從 C 轉向 Rust,加上極其謹慎的反分析邏輯與現代加密通訊,這套模組一旦被其他大型攻擊組織借用,將會對網路安全造成極大威脅。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。