FreeFix勒索針對(duì)易語言開發(fā)者發(fā)起供應(yīng)鏈攻擊
前不久,360發(fā)布了FreeFix勒索軟件的詳細(xì)分析報(bào)告,并向廣大受害用戶提供免費(fèi)的技術(shù)解密服務(wù)。但根據(jù)我們的數(shù)據(jù)監(jiān)控發(fā)現(xiàn),F(xiàn)reeFix依然保有著居高不下的傳播量,這也讓我們對(duì)其攻擊來源產(chǎn)生了極大的興趣。而隨著我們對(duì)大數(shù)據(jù)分析的進(jìn)一步深入,我們發(fā)現(xiàn)FreeFix的各種傳播來源中,竟然還存在著更為隱蔽的供應(yīng)鏈攻擊,值得進(jìn)一步剖析。
在這種傳播來源中,勒索軟件通過感染易語言(EPL)生態(tài)系統(tǒng)中的“.ec”模塊文件,構(gòu)建出了一條從開發(fā)者到終端用戶的完整攻擊鏈條。與常規(guī)的勒索軟件傳播方式不同,F(xiàn)reeFix采用“源頭帶毒”策略,將攻擊目標(biāo)直接鎖定在了軟件開發(fā)這一環(huán)節(jié)上,讓開發(fā)者在不知情的情況下成為了惡意代碼的傳播者。
供應(yīng)鏈傳播路徑分析
FreeFix的傳播者首先會(huì)通過開發(fā)者論壇、交流群等渠道分享他們的“功能模塊”或“開源項(xiàng)目”,而恰恰就是在這些模塊或項(xiàng)目中,夾帶了這份被精心構(gòu)造過感染模塊文件。
而一旦有開發(fā)者加載并最終編譯了該項(xiàng)目,這個(gè)“帶毒模塊”就會(huì)感染當(dāng)前的開發(fā)者的開發(fā)環(huán)境,并嘗試竊取開發(fā)者設(shè)備中的源代碼。
同時(shí),當(dāng)開發(fā)者在這臺(tái)被感染的設(shè)備上編譯其他的程序時(shí),其生成的新程序也同樣會(huì)被悄悄的植入惡意代碼。也就是說,該開發(fā)者此后發(fā)布的所有程序都可能是“帶毒程序”,進(jìn)而成為勒索軟件的傳播傀儡,將其惡意代碼擴(kuò)散給更多的用戶。
FreeFix勒索軟件進(jìn)行此類攻擊時(shí)的傳播流程示意圖如下:
圖1. FreeFix易語言供應(yīng)鏈攻擊流程示意圖?
根據(jù)數(shù)據(jù)分析,我們發(fā)現(xiàn)的部分可能被感染的易語言“開源”項(xiàng)目有:
圖2. 可能被感染的部分“開源”項(xiàng)目?
惡意代碼分析
此次遭到供應(yīng)鏈攻擊感染的.EC文件是易語言的模塊文件,也稱為易模塊。用戶可以將常用的代碼封裝起來以便在開發(fā)其他代碼時(shí)重復(fù)引用,或提供給他人使用。有時(shí)亦可用作開發(fā)大型軟件項(xiàng)目中的一部分,在后續(xù)軟件項(xiàng)目的封裝階段再將所有這些模塊編譯成為一個(gè)完整程序。這種.EC文件相當(dāng)于C語言里面的.LIB文件。
帶有惡意代碼的EC模塊
通過反編譯解析出來被感染的EC模塊,可以看到植入的惡意代碼如下:
圖3. EC模塊中被植入的惡意代碼?
這部分代碼先是會(huì)檢測(cè)當(dāng)前程序是否是以管理員權(quán)限被執(zhí)行的,若非管理員權(quán)限則會(huì)嘗試以管理員權(quán)限重新啟動(dòng)。成功后,代碼會(huì)將內(nèi)置的Free_EXE 勒索軟件資源數(shù)據(jù)釋放到C:\FreeStart.exe位置,并將該程序設(shè)置為“隱藏+系統(tǒng)”的屬性防止被用戶發(fā)現(xiàn)。最后,執(zhí)行這個(gè)剛剛被釋放出來的FreeStart.exe程序。而該勒索軟件的詳細(xì)分析請(qǐng)移步我們此前發(fā)布的FreeFix相關(guān)分析報(bào)告,本文中不再贅述。
圖4. 被感染模塊中的Free_EXE惡意代碼資源數(shù)據(jù)
感染本地編譯環(huán)境
根據(jù)測(cè)試,在被感染的環(huán)境中使用E語言隨意編寫一段代碼,只要調(diào)用了被植入惡意代碼的EC模塊,最終編譯出來的程序就會(huì)被附加上FreeFix勒索軟件功能代碼。
圖5. 易語言代碼感染測(cè)試
同時(shí),在測(cè)試過程中分析人員也發(fā)現(xiàn)被添加了勒索功能模塊的測(cè)試程序,其最終編譯完成后的軟件體積也出現(xiàn)了明顯增大。
圖6. 被感染的測(cè)試程序軟件體積增大?
而通過分析攻擊反編譯這段被附加的功能,如檢測(cè)管理員權(quán)限、釋放并執(zhí)行勒索軟件等部分邏輯代碼如下。
圖7. 反編譯出的附加勒索功能代碼
竊取用戶源碼
除了勒索功能外,分析人員還發(fā)現(xiàn)部分被調(diào)用的E語言模塊所編譯出來的程序還會(huì)竊取用戶設(shè)備上所有的易語言源碼文件(.e文件)和模塊文件(.ec文件)。我們捕獲到的竊取木馬在受害用戶設(shè)備中的執(zhí)行進(jìn)程樹如下:
圖8. 源碼竊取木馬執(zhí)行進(jìn)程樹?
根據(jù)分析,我們發(fā)現(xiàn)這部分程序會(huì)查找受害用戶設(shè)備中所有的.ec模塊文件以及.e源碼文件。
圖9. 惡意代碼查找設(shè)備中所有.e源碼文件?
圖10. 惡意代碼查找設(shè)備中所有.ec模塊文件
圖11. 源碼竊取木馬文件操作記錄?
木馬竊取到上述文件后,會(huì)將其全部回傳到一個(gè)第三方的云存儲(chǔ)中。而全部文件被上傳后,該云存儲(chǔ)還返回了供文件下載的URL等信息:
圖12. 源碼竊取木馬將文件回傳至云存儲(chǔ)?
這種攻擊手法不僅規(guī)避了常規(guī)安全防護(hù)機(jī)制,還利用了用戶對(duì)熟悉開發(fā)資源的信任。更值得警惕的是,此病毒具備自我復(fù)制能力,能夠感染開發(fā)者機(jī)器上的其他模塊并竊取源碼,進(jìn)而進(jìn)一步擴(kuò)散。軟件開發(fā)人員——尤其是易語言的開發(fā)者應(yīng)對(duì)本次FreeFix的攻擊格外提高警惕。
結(jié)論與防護(hù)建議
FreeFix勒索軟件供應(yīng)鏈攻擊案例清晰地展示了當(dāng)前網(wǎng)絡(luò)威脅的復(fù)雜性與隱蔽性。通過感染易語言生態(tài)系統(tǒng)的基礎(chǔ)模塊組件,攻擊者成功構(gòu)建了一個(gè)自我持續(xù)、難以察覺的攻擊鏈,實(shí)現(xiàn)了從開發(fā)者到終端用戶的鏈?zhǔn)礁腥?。這種攻擊不僅給開發(fā)者和軟件用戶都帶來了直接的數(shù)據(jù)損失,更是動(dòng)搖了整個(gè)軟件供應(yīng)鏈的信任基礎(chǔ)。
針對(duì)此類供應(yīng)鏈攻擊,我們提出以下防護(hù)建議:
對(duì)易語言開發(fā)者
1.???? 模塊完整性校驗(yàn):使用哈希值校驗(yàn)所有.ec模塊,確保與官方發(fā)布版本一致。
2.???? 隔離開發(fā)環(huán)境:將開發(fā)環(huán)境與日常辦公環(huán)境隔離,減少交叉感染風(fēng)險(xiǎn)。
3.???? 定期備份源碼:重要源碼應(yīng)定期備份至離線存儲(chǔ)設(shè)備,防止被加密或竊取。
4.???? 使用可信來源:僅從官方或經(jīng)過驗(yàn)證的可信渠道獲取模塊和開源代碼。
5.???? 代碼審計(jì):對(duì)引入的開源項(xiàng)目進(jìn)行安全審計(jì),特別關(guān)注可疑的網(wǎng)絡(luò)連接行為。
6.???? 謹(jǐn)慎添加信任:對(duì)于安全軟件報(bào)毒的程序切勿輕易添加信任繼續(xù)運(yùn)行。
對(duì)軟件用戶
1.???? 嚴(yán)格軟件來源管理:僅從官方渠道下載軟件,警惕第三方分發(fā)平臺(tái)。
2.???? 更新安全軟件:確保殺毒軟件及時(shí)更新,啟用主動(dòng)防護(hù)功能。
3.???? 定期備份數(shù)據(jù):重要數(shù)據(jù)應(yīng)保持3-2-1備份策略(3份拷貝、2種不同存儲(chǔ)介質(zhì)、1份異地保存)。
4.???? 軟件行為監(jiān)控:使用行為監(jiān)控工具,對(duì)異常行為如批量文件操作進(jìn)行警示。
對(duì)軟件生態(tài)
1.???? 建立模塊驗(yàn)證機(jī)制:易語言社區(qū)應(yīng)建立官方模塊簽名與驗(yàn)證機(jī)制。
2.???? 威脅情報(bào)共享:加強(qiáng)開發(fā)社區(qū)間的威脅情報(bào)共享,及時(shí)通報(bào)可疑模塊。
3.???? 代碼透明度:鼓勵(lì)核心模塊開源,提高社區(qū)監(jiān)督能力。
4.???? 安全意識(shí)培訓(xùn):定期為開發(fā)者提供供應(yīng)鏈安全培訓(xùn),提高警惕性。
隨著軟件供應(yīng)鏈攻擊日益增多,防護(hù)措施需要從個(gè)人、組織到整個(gè)生態(tài)系統(tǒng)多層面共同發(fā)力。只有構(gòu)建起完整的安全防線,才能有效應(yīng)對(duì)FreeFix這類精心設(shè)計(jì)的供應(yīng)鏈攻擊,保障軟件開發(fā)生態(tài)的健康與安全。