惡意軟體製造者詭計多端 使用“小眾”程式語言逃避常見安全檢測

zktq2021發表於2021-07-29

黑莓研究人員報告稱,不常見的程式語言——包括 Go、Rust、Nim和DLang——正在成為惡意軟體作者的最愛,它們試圖繞過安全防禦或解決開發過程中的弱點。

研究團隊注意到這四種語言的惡意用途增加以及使用它們的惡意軟體家族數量增加後,選擇了這四種語言。使用新程式語言的攻擊者並不新鮮。然而,研究人員指出,這些語言正變得越來越發達,並預計隨著趨勢的繼續,它們的使用會增加。

有人可能採用一種新的程式語言有幾個原因:它可以解決現有語言的弱點,或者為開發人員提供更簡單的語法、更有效的記憶體管理或效能提升。研究人員指出,新語言也可能更適合其環境——例如,物聯網裝置大多使用低階語言。

當攻擊者利用這些特點時,對防禦者構成了挑戰。惡意軟體分析工具並不總是支援鮮為人知的語言,與C或C++ 等傳統語言相比,用Go、Rust、Nim和 DLang 編寫的二進位制檔案在反彙編時可能會顯得更加複雜。分析師可能不熟悉較新的語言。

報告指出,較舊的惡意軟體通常會在第一階段以加密形式儲存,並使用XOR、RC4、AES 或其他加密和編碼方法。

研究人員表示,一旦解碼,二進位制檔案就會被放入磁碟或注入正在執行的程式並載入到記憶體中,並指出這對攻擊者很有吸引力,因為它可以為他們省去重新編碼惡意軟體的麻煩。相反,他們可以將舊惡意軟體“包裝”在這些交付方法之一中。

基於簽名的安全工具可能已經使用眾所周知的惡意軟體捕獲了投放器或載入器的第二階段,無論是投放到磁碟還是載入到記憶體中;然而,用不同的語言重寫惡意軟體使其有可能繞過防禦,因為現有的簽名可能不起作用。

Go由Google於2007年開發,屬於C家族,但具有更簡化的語法。它可以交叉編譯到所有主要作業系統,以及 Android、JavaScript 和 WebAssembly。

Nim可以編譯成多種語言,例如 C、C++ 和 JavaScript。DLang 帶來了C的語法改進;它可以交叉編譯。

Rust開銷低,效能高效,並幫助開發人員解決報告指出的其他流行語言中的“痛點”。

攻擊者換檔,防禦者跟進

正如研究人員指出的那樣,惡意軟體作者並不是唯一採用不常見語言的人——近年來,安全社群也採用這些語言來實施紅隊工具的攻擊性使用,其中許多研究人員指出,它們是開源的或公開可用的。

該報告指出了去年的FireEye漏洞,其中民族國家攻擊者從安全公司竊取了紅隊工具。FireEye表示,被盜軟體位於第三方儲存庫,其中包括被盜工具和檢測簽名。

研究人員指出,用這些鮮為人知的語言編寫的惡意軟體通常不會像用更常見和成熟的語言編寫的惡意軟體那樣被檢測到。此時,攻擊者正在改變感染過程的第一階段,而不是其活動的核心,但安全團隊必須意識到這些鮮為人知的語言風險以及如何影響他們的防禦。

關鍵案例:APT28和APT29的“Go”流暢度不斷提高


當談到這些更晦澀的語言時,惡意軟體開發人員歷來主要用Go編寫:一種與C++非常相似的通用語言,因為它是靜態型別和編譯的。

C 語言惡意軟體仍然是最普遍的。但APT28和APT29已經開始比其他組織更頻繁地在惡意軟體集中使用更奇特的語言。APT28又名 Fancy Bear 或 Strontium 等,而APT29又名 Nobelium、Cozy Bear 或 the Dukes 等。

APT28使用的Go重寫選擇:

2018年:一個與 APT28 相關聯的基於Go的木馬被確定為Zebrocy 變體,具有原始 Delphi下載器的重寫版本。

2019年:研究人員在針對東歐和中亞大使館和外交部的同一個 Zebrocy 活動中發現了一個Nim下載器和 Go 後門。

2020年及之前幾年: APT28 越來越喜歡 Go,使用其他重寫的 Zebrocy 核心元件:後門負載和下載器。最近,APT28使用 COVID-19 大流行作為誘餌,於 12 月釋出了Go 下載程式變體。

就 APT29/Cozy Bear 而言,以其在2020 年初的SolarWinds 供應鏈攻擊中的作用而聞名,它在 2018 年使用WellMess(一種用 Go 和 .NET 編寫的遠端訪問木馬(RAT))針對 Windows和Linux機器。

研究人員指出,WellMess 最流行的變體是Go版本,它有32位和64位變體作為PE和 ELF檔案,“使 APT29能夠將其部署到不止一種型別的架構和作業系統。”

APT29通常透過首先掃描組織的外部IP地址中的漏洞,然後對易受攻擊的系統進行公開攻擊來滲透受害者的網路。

時間線


除了Go及其對APT28和APT29日益增長的吸引力之外,過去十年中其他稀有語言也越來越多地被其他威脅行為者用於越來越多的惡意軟體系列。下面是這四種語言如何越來越多地出現的時間表,特別是 Rust、Nim 和D語言。

DLang惡意軟體似乎是不斷演變的威脅環境中最不受歡迎的語言,但它在過去一年中出現了一些溫和的增長。報告預測,這可能標誌著惡意軟體開發人員更普遍地採用DLang的趨勢。

如何進行反擊


網路安全研究組織建議,為了捕獲這些多語言惡意軟體家族,軟體工程師和威脅研究人員如果採用動態或行為簽名、透過沙箱輸出標記行為的簽名或端點檢測和響應 (EDR),將更有利,在這些情況下,這些技術可能更加可靠。

如果靜態簽名失敗,採用與實現無關的檢測規則來標記動態行為會有所幫助,因為惡意軟體通常以相同的方式執行,尤其是當惡意軟體被重新編碼時。“在其他情況下,例如通常使用 Windows API 呼叫的有限子集註入程式的shellcode載入器,可以使用該有限子集識別它們。同樣,在二進位制檔案中使用庫通常可以“簽名”。“

軟體檢測及分析工具要和惡意軟體同步還需要一段時間,但企業及組織的安全意識必須提高起來,要積極主動去防禦新出現的技術和惡意軟體手段。加強軟體安全防禦能力,從底層 原始碼安全檢測做起,不給惡意軟體可乘之機。


參讀連結:

https://threatpost.com/malware-makers-using-exotic-programming-languages/168117/


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2783990/,如需轉載,請註明出處,否則將追究法律責任。

相關文章