不常見編程語言成攻擊利器
BlackBerry研究人員報(bào)告稱,不常見編程語言,比如Go、Rust、Nim和DLang,逐漸成為惡意軟件作者的心頭好,被用于繞過安全防御措施或解決惡意軟件開發(fā)過程中的薄弱環(huán)節(jié)。
注意到使用上述四種編程語言的惡意軟件家族數(shù)量越來越多之后,BlackBerry研究團(tuán)隊(duì)選擇了這四種編程語言,深入研究其被用于惡意目的的情況。攻擊者使用新的編程語言并不鮮見;但研究人員注意到,這些語言越來越成熟,預(yù)期會(huì)隨著這一趨勢(shì)的延續(xù)而使用量增加。
采用新編程語言的原因多種多樣:可以解決現(xiàn)有編程語言中的缺陷、語法更簡單、更高效的內(nèi)存管理,或者編程效率更高等等。研究人員指出,新語言可能也更適合其環(huán)境,比如物聯(lián)網(wǎng)設(shè)備就使用低級(jí)語言。
當(dāng)攻擊者開始尋求這些優(yōu)勢(shì),防御者就面臨挑戰(zhàn)了。惡意軟件分析工具并不總是支持不怎么為人所知的語言,而且,與C或C++等經(jīng)典編程語言相比,用Go、Rust、Nim和DLang語言編寫的二進(jìn)制文件經(jīng)混淆后會(huì)顯得更加復(fù)雜。分析師可能不熟悉更新一些的語言,了解其復(fù)雜性需要一定的學(xué)習(xí)時(shí)間。
研究人員指出,當(dāng)下出現(xiàn)了一種新的趨勢(shì):攻擊者采用以相對(duì)較不常見的語言編寫的投放器或加載器,翻新此前用C++和C#等傳統(tǒng)編程語言編寫的“老”惡意軟件。老惡意軟件通常在第一階段以加密形式存儲(chǔ),采用XOR、RC4、AES或其他加密和編碼方法。
一旦解密,二進(jìn)制文件就被釋放到磁盤上,或者注入到進(jìn)程中載入內(nèi)存。研究人員稱,這種方法很受攻擊者歡迎,因?yàn)榭梢悦馊ブ鼐幊虗阂廛浖穆闊?,可以用這些投送方法之一“包裝”老惡意軟件。
使用著名惡意軟件的釋放器或加載器,或許可以在釋放到磁盤或加載進(jìn)內(nèi)存時(shí)被基于特征碼的安全工具捕獲;但用另一種語言重新編寫惡意軟件就可以賦予惡意軟件繞過防御機(jī)制的潛力,因?yàn)楝F(xiàn)有特征碼不會(huì)有效。
BlackBerry注意到,雖然一些著名的惡意軟件是用Go、Rush、Nim和DLang編寫的,但數(shù)量并不多,而且大多數(shù)都是用Go編寫的。這些相對(duì)不常見的語言每一種都能給其開發(fā)商帶來各種優(yōu)勢(shì)。
Go語言是谷歌在2007年開發(fā)的,屬于C語言家族,但語法更為簡單。該語言課交叉編譯到所有主流操作系統(tǒng),以及Android、JavaScript和WebAssembly。Nim可以編譯進(jìn)多種語言,比如C、C++和JavaScript。DLang改進(jìn)了C語言的語法,可以交叉編譯,而且學(xué)起來比較容易。Rust開銷低、性能高,可以幫助開發(fā)人員避開其他流行編程語言中的“痛點(diǎn)”。
魔高一尺道高一丈
正如研究人員指出的,采用不常見編程語言的不單單是惡意軟件作者,近年來安全社區(qū)也采用這些語言編寫攻擊性紅隊(duì)工具實(shí)現(xiàn),其中很多工具都是開源或公開可用的。
報(bào)告提到去年安全公司FireEye遭遇的數(shù)據(jù)泄露事件,這起事件中民族國家的攻擊者盜走了FireEye公司的紅隊(duì)工具。FireEye發(fā)布了一份聲明,并在GitHub放上了用于識(shí)別被盜工具的檢測特征碼。其GitHub存儲(chǔ)庫揭示FireEye紅隊(duì)一直在組合使用公開可用工具和內(nèi)部構(gòu)建的工具,這些工具以多種不同語言編寫而成,包括Go、DLang和Rust。
例如,Go語言是Blackberry名單上最年輕的語言,但廣為紅隊(duì)采用,很多攻擊性安全工具都用Go重寫或?qū)iT為Go打造。FireEye的紅隊(duì)工具揭示其創(chuàng)建了一個(gè)多平臺(tái)Go語言遠(yuǎn)程訪問木馬(RAT)。Bishop Fox的對(duì)手模擬工具Silver也用了Go語言。為實(shí)現(xiàn)原生跨平臺(tái),流行命令與控制框架Merlin完全用Go編寫。
研究人員發(fā)現(xiàn),如果能得到幾大安全公司點(diǎn)贊,編程語言或技術(shù)就可能成為主流。他們還指出,分析工具和技術(shù)通常并不由安全公司開發(fā),除非使用新語言編寫的惡意軟件達(dá)到一定程度的飽和。
相比更為普及和成熟的編程語言,用這些不太為人所知的語言編寫的惡意軟件,其檢出率沒那么高。目前,攻擊者正在改進(jìn)第一階段的感染過程而非其攻擊活動(dòng)的核心部分,但安全團(tuán)隊(duì)需要討論不常見編程語言的風(fēng)險(xiǎn)和對(duì)防御的影響。